复习

1.隐式转换

Double a

Int b = 1

A = b //编译器自动转换把b转换为double类型后 再给a赋值(隐式转换)

2.强制类型转换 (变量)类型名

Int a = 1

// a只有在此语句执行时,才强制转换为double类型 其他地址还是int类型

Printf(“%lf\n”,(double)a)

转换原则:占用内存字节数小(值域小)的类型,向占用内存字节数多(值域大)的类型转换,以保证精度不降低。

3.浮点型和整型打印的问题

a)       不要直接通过%d 打印一个浮点型类型,得不到想要的结果,要想得到结果,强制类型转换

Double a = 11.11

Printf(“%d\n”,(int)a)

b)       不要通过%f或%lf 打印一个整型变量 得不到想要的结果 要想得到结果强制类型转换

Int a = 10

Printf(“%lf\n”,(double)a)

二、运算符和表达式

1.相除得到小数问题

a)两个整数相除,只是取整数,不会带小数

int a = 1/2 // a=0

要想得到小数的结果,分子分母至少有一个是小数

Double a

A = 1.0/2 //a = 0.5

A = 1/(double)2

2.前置++、后置++区别

3、条件真假问题

a)0就是假

b)非0就是真,通常以1表示

4、逻辑|| &&

5、运算符优先级

Int c = 0

// &&优先级比 = 高

三、程序流程结构

C语言支持最基本的三种程序运行结构:顺序结构、选择结构、循环结构

03 一维数组的使用

#include <stdio.h>

#define SIZE 10

int main(int argc, char *argv[])

{

//int a; //定义一个普通变量

//1、

//1、同一个{}内部,数组名不能和其他变量和数组名同名

int a[10]; //err

//2、定义数组时,n 最好是常量

int n = 10;

int b[n]; // 有些编译器会报错 如visual studio中就报错了

//3、 使用数组时 下标可以是变量 可以是常量 也可以是表达式

int c[SIZE];

c[0] = 1; //通过常量操作

int i = 1;

c[i] = 2; //通过变量

c[i+1] = 3; //通过表达式

// 4、使用数组,最好别越界

int d[10];

// 下表只有0 ~ 9, d[10] 就是越界 有时候越界了 编译器不会马上出错

d[10] = 11;

return 0;

}

int main01(int argc, char *argv[])

{

int a = 0;

int b = 1;

int c = 2;

int d = 3;

int e = 4;

//1、定义一个数组,数组内部有10个int类型的元素(变量)

//2、定义数组和定义变量区别,名字后面加[],[]里面写元素个数

//3、数组在内存中是连续存储的

//4、通过下标访问数组元素,下表从0开始

//5、有多少个[]就是多少维 这里是一维数组

int array[10];

array[0] = 0;

array[1] = 1;

array[2] = 2;

return 0;

}

结论:

1、  编译器不是我们想象中那么智能 有些错误不能立马呈现

错误:

1、  编译错误(语法出错)

2、  运行时错误(运行时异常),最头疼 有些错误不能立马呈现

04一维数组元素的使用

04

05 不初始化的局部数组为随机数

{}内部的变量或数组,不初始化,它的值为随机数

07 答疑

gcc hello.c –o

gcc –o hello hello.c –std=c99 (这两种写法都行

-std=c99 制定了c语言标准

允许for( 循环中声明变量

例如for(int i =0

08 数组名

结果:

09 求三个数最值

int a = 10;

int b = 20;

int c = 30;

int max;

求最大值

10 求数组的最值

11 数组的翻转

1234567

a[0 与 a[6

a[1 与 a[5

a[2 与 a[4

i<j

i=0 j=6

i++ j—

while(i<j)

a[i和a[j 交换

i++ j—

十二、冒泡排序

冒泡法:

从第一个元素开始,两两相比,把元素往上冒,第一次排序后最大的已经到了最后面

for(I = 0 ;i<n-1;i++)

{

for(j=i;j<n-1;j++)

{  if(a[j]>a[j+1]){

tmp = a[j

a[j = a[i

a[I = tmp

}

}

}

C语言:

int main1()

{

// 冒泡法:把最大的冒出去

int a[] = {1, 24, -3, 145, 42, 5, 18};

int n = sizeof(a) / sizeof(a[0]);

int tmp;

for (int i = 0; i < n - 1; i++)

{

for (int j = i; j < n - 1; j++)

{

if (a[j] > a[j + 1])

{

tmp = a[j];

a[j] = a[j + 1];

a[j + 1] = tmp;

}

}

}

for (int i = 0; i < n; i++)

{

printf("%d,", a[i]);

}

}

// *冒泡法变种:把最小的留在下面

int a[] = {1, 24, -3, 145, 42, 5, 18};

int n = sizeof(a) / sizeof(a[0]);

int tmp;

for (int i = 0; i < n - 1; i++)

{

for (int j = i + 1; j < n; j++)

{

if (a[j] < a[i])

{

tmp = a[j];

a[j] = a[i];

a[i] = tmp;

}

}

}

for (int i = 0; i < n; i++)

{

printf("%d,", a[i]);

}

}

十四、二维数组定义使用

#include <stdio.h>

int main(int argc, char *argv[])

{

//1、有多少[] 就有多少维

//2、内存中没有多维,都只有一维,多维数组是特殊的一维数组

//3、定义了一个一维数组a[3],这个一维数组有3个元素,每个元素int[4]

//4、a[0],a[1],a[2]就是第0、1、2个元素的数组名

//5、二维数组,用户可以理解为m行n列,没有a[3][4]此元素(越界)

int a[3][4];

int i = 0;

int j = 0;

int num = 0;

for(i=0;i<3;i++){

for(j=0;j<4;j++){

a[i][j] = num;

num++;

}

}

a[0][0] = 0;

a[0][1] = 1;

return 0;

}

十五 二维数组初始化

#include <stdio.h>

int main(int argc, char *argv[])

{

// 看方便,写不方面

int a[3][4]{

{0,1,2,3},

{4,5,6,7},

{8,9,10,11}

};

int a1[3][4] ={ 0,1,2,3,4,5,6,7,8,9,10,11 };

// 如果定义时 同时初始化 第1个[]可以不写内容

int a1[3][4] ={ 0,1,2,3,4,5,6,7,8,9,10,11 };

// 如果第一个[]不写,必须初始化

// int a3[][4]; //err

int a3[3][4] = {0,1,2,3}; //没有初始化的元素赋值为0

int a4[3][4] = {0}; //所有元素初始化为0

return 0;

}

十六 二维数组名

#include <stdio.h>

int main(int argc, char *argv[])

{

int a[5][10];

//1、数组名是常量,不能修改

//a=10; //err

//2、sizeof(数组名),测数组的总大小

printf("sizeof(a)=%lu\n", sizeof(a))

//3、sizeof(a[0]) 测的是第0个元素的大小: int [10] = 4*10 = 40

printf("sizeof(a) = %lu\n", sizeof(a))

//4、sizeof(a[0][0])测的是第0行第0列元素的大小,int = 4

printf("sizeof(a[0][0])=%lu\n", sizeof(a[0][0]);

//5、求行数:总大小/每个元素的大小

int n = sizeof(a) / sizeof(a[0])

printf("n=%d\n", n);

//6、求列数

n = sizeof(a[0])/sizeof(int)

printf("n1=%d\n",n)

//7、行*列

n = sizeof(a)/sizeof(a[0]) * sizeof (a[0])/sizeof(int)

}

十七、二维数组的练习

十八、多维数组

十九、字符数组和字符串的关系

C语言中没有字符串,是用一维数组来模拟字符串的

#include <stdio.h>

int main(int argc, char *argv[])

{

//1、 C语言没有字符串类型,用字符数组模拟

char a[10];

//2、字符串一定是字符数组,字符数组就不一定是字符串

//3、如果字符数组以字符'\0'('\0等价于数字0')结尾,那么这

//个字符数组就是字符串

//

char b = {'a','b','c'}; //字符数组

char c[10] = {'a','b','c','\0'}; //字符串

char c[10] = {'a','b','c',0}; //字符串

return 0;

}

20、字符数组初始化

#include <stdio.h>

int main(int argc, char const *argv[])

{

char a1[] = { 'a', 'b', 'c' }; //字符数组

// %s代表是字符串

printf("a1=%s\n", a1);

// %s会从起始地址开始打印 直到遇到结束符\0

// 所以这种情况是有可能出现乱码报错的

char a2[] = { 'a', 'b', 'c', 0 }; // 字符串

printf("a2=%s\n", a2);

char a3[] = { 'a', 'b', 'c', '\0' }; // 字符串

printf("a3=%s\n", a3);

char a4[] = { 'a', '\0', 's', 2 };

printf("a4=%s\n", a4);

return 0;

}

char a6[10] = {‘a’,’b’,’c’} //前三个字符赋值为a,b,c 后面自动为0 所以打印出来也是1bc

// 1、常用的初始化,使用字符串初始化,在字符串结尾自动加数字0

// 2、这个结束符,用户看不到(隐藏),但是是存在的

char a7[10] =  “abc”

char a8[] = “abc”

printf(“sizeof(a8)=%lu”,sizeof(a8); //4 // 字符串自动隐藏一个结束符

char a9[] = “\0abc”

printf(“a9 = %s\n”,a9) //打印出来是空的

//\0后面最好别跟数字,有可能组成一个转义字符

char a10[] = “\012abc”

printf(“a10 = %s\n”,a10);

查看一下\012对应的ASCII

man ascii

八进制012 对应的是’\n’

‘\012’就是’\n’

21课堂答疑

22.字符串的输入输出

#include <stdio.h>

int main (int argc,char *argv[])

{

char str[100];

printf(“请输入字符串:”);

scanf(“%s”,str);   // str本身就是地址 不用&取地址

printf(“star = %s\n”,str)

return 0

}

23 随机数的产生

// 先设定一个种子才能产生随机数

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

int main(int argc, char *argv[])

{

// 随机数的产生

// 先设置种子,种子设置一次即可

// 如果srand()参数一样,随机数就一样

// srand(100);

// time(NULL)功能获取系统当前时间,由于时间会变,srand()也会改变

srand((unsigned int)time(NULL));

int i = 0;

int num;

for(i=0;i<10;i++)

{

num=rand(); // rand(产生随机数

printf("num=%d\n",num);

}

return 0;

}

C语言基础 (6) 类型转换,数组与随机数的更多相关文章

  1. JavaScript 引入方式 语言规范 语言基础 数据类型 常用方法 数组 if_else 比较运算符 for while 函数 函数的全局变量和局部变量 {Javascript学习}

    Javascript学习 JavaScript概述 ECMAScript和JavaScript的关系 1996年11月,JavaScript的创造者--Netscape公司,决定将JavaScript ...

  2. C语言基础 - 实现动态数组并增加内存管理

    用C语言实现一个动态数组,并对外暴露出对数组的增.删.改.查函数 (可以存储任意类型的元素并实现内存管理) 这里我的编译器就是xcode 分析: 模拟存放 一个 People类 有2个属性 字符串类型 ...

  3. C语言基础知识【数组】

    2017年7月11日17:34:05C 数组1.C 语言支持数组数据结构,它可以存储一个固定大小的相同类型元素的顺序集合.数组是用来存储一系列数据,但它往往被认为是一系列相同类型的变量.数组的声明并不 ...

  4. [java学习笔记]java语言基础概述之数组的定义&常见操作(遍历、排序、查找)&二维数组

    1.数组基础 1.什么是数组:           同一类型数据的集合,就是一个容器. 2.数组的好处:           可以自动为数组中的元素从零开始编号,方便操作这些数据. 3.格式:  (一 ...

  5. Java语言基础(方法与数组)_DAY05

    1:函数(掌握)   (1)定义在类中,有特定功能的一段小程序,可以独立运行.    (2)函数的格式:       修饰符 返回值类型 函数名(形参类型 形式参数1,形参类型 形式参数2...)   ...

  6. Go语言基础四:数组和指针

    GO语言中数组和指针 数组 Go语言提供了数组类型的数据结构. 数组是同一数据类型元素的集合.这里的数据类型可以是整型.字符串等任意原始的数据类型.数组中不允许混合不同类型的元素.(当然,如果是int ...

  7. 黑马程序员——C语言基础 char字符 数组

    Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) (一)char类型 1)存储细节 ASCII单字节表(双字节GBK\GB2 ...

  8. C语言基础--二维数组

    二维数组概念: 数组中的每一个元素又是一个数组, 那么这个数组就称之为二维数组,二维数组是特殊的一维数组. 二维数组格式: 元素类型 数组名称[一维数组的个数][每个一维数组的元素个数]; 元素类型 ...

  9. C语言基础:二维数组 分类: iOS学习 c语言基础 2015-06-10 21:42 16人阅读 评论(0) 收藏

    二维数组和一位数组类似. 定义: 数据类型 数组名[行][列]={{ },{ }....}; 定义时,一维(行)的长度可以省略,但是二维(列)的长度不可以省略.但是访问时,一定使用双下标. 二维数组的 ...

随机推荐

  1. 1012关于SYSBENCH的用法

    sysbench安装.使用.结果解读 sysbench是一个模块化的.跨平台.多线程基准测试工具,主要用于评估测试各种不同系统参数下的数据库负载情况.目前sysbench代码托管在launchpad上 ...

  2. 楼控-西门子-insight使用-软件重新授权

    在insight的使用中,可能会碰到insight的软件授权失败,此时需要重新将原授权删除,再重新将软件授权. 先看一下软件授权失效会出现什么: 再看看如何删除原来的密钥,再注册新的密钥.

  3. [bzoj2049][Sdoi2008]Cave 洞穴勘测_LCT

    Cave 洞穴勘测 bzoj-2049 Sdoi-2008 题目大意:维护一个数据结构,支持森林中加边,删边,求两点连通性.n个点,m个操作. 注释:$1\le n\le 10^4$,$1\le m\ ...

  4. 获取Class对象方式

    在java中,每个class都有一个相应的Class对象,当编写好一个类,编译完成后,在生成的.class文件中,就产生一个Class对象,用来表示这个类的类型信息.获得Class实例的三种方式: 1 ...

  5. Thread.yield()方法表示交出主动权,join表示等待当前线程,可以指定秒数

    Thread.yield()方法表示交出主动权,join表示等待当前线程,可以指定秒数 学习了:http://www.importnew.com/14958.html 膜拜一下 源码膜拜: Threa ...

  6. 初探BurpSuite

    BurpSuite这套渗透软件.或者已经能够说是渗透攻击平台了吧,玩的好.确实非常方便. 就像是玩英雄联盟的ADC,一開始玩VN.感觉非常难上手,玩多了肯定会爱上VN(啊,貌似提到了什么奇怪的东西). ...

  7. Android之旅十六 android中各种资源的使用

    android中各种资源的使用: 在android开发中,各种资源的合理使用应该在各自的xml中进行定义,以便反复使用; 字符串资源:strings.xml,xml中引用:@string/XXX,ja ...

  8. CF D. Beautiful numbers (数位dp)

    http://codeforces.com/problemset/problem/55/D Beautiful Numbers : 这个数能整除它的全部位上非零整数.问[l,r]之间的Beautifu ...

  9. 【联系】—— Beta 分布与二项分布、共轭分布

    1. 伯努利分布与二项分布 伯努利分布:Bern(x|μ)=μx(1−μ)1−x,随机变量 x 取值为 0,1,μ 表示取值为 1 的概率: 二项分布:Bin(m|N,μ)=(Nm)μm(1−μ)N− ...

  10. 【转】坑爹的AsyncTask之根本停不下来

    原文网址:http://www.jianshu.com/p/0c6f4b6ed558 上篇<坑爹的AsyncTask之内存泄露>已经简单的探讨过线程使用不当会造成内存泄露的问题,在Acti ...