C语言基础 (7) 输入输出

  1. 复习

 

// 定义数组时 []内部尽量用常量

// 定义数组时,数组名在同一{}内部是唯一的,不能和变量、其他数组名同名

// 使用数组时 []可以是常量,变量,表达式

 

// 定义一个数组,数组名字叫a 有10个元素 每个元素为int

// 通过下标操作元素,从0开始,0~9

 

int a[10]

a[0] = 1;

 

// 数组越界

//1、编译时错误,编译代码就能检查到(语法错误)

//2、运行时错误 运行到这个语句才可能检查到(非法操作内存)

//a[10] = 2

 

一维数组初始化

// 定义同时赋值叫初始化,只能在定义时才能用{}进行初始化

 

int a [10] = {1,2,3,4}   //剩下的会填零

 

int a[] = {1,2,3,4} //会自动生成长度为4的数组

 

//一维数组名

int a[] = {1,2,3,4,

 

4、冒泡排序

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

     for(j=I ;j<n-1;j++

         ifa(j)<a(j+1)

         { // swap

 

// 1、测二维数组长度 sizeof(a) 4个元素 每一个int[5] = 4*4*5 = 80

     printf(“sizeof(a) = %lu\n”,sizeof(a))

// 2、 测第0个元素的大小,它还是一维数组 int[5] = 4*5 = 20

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

// 3、 测第0行第0列元素大小,就是一个int类型,4

     printf(“sizeof(a[0][0]) = %lu\n”,sizeof(a[0][0]))

 

//4、 求行的数目,第一个[]的数目,元素个数

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

   printf(“n1=%d\n”,n)

 

// 5、 求列的数目,第二个[]数目

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

printf(“n2=%d\n”,n)

 

// 6、 求行*列的总数

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

printf(“n3 = %d\n”,n)

 

三、多维数组

// 三维数组就是有n个二维数组

 

四、字符数组

1、字符串和字符数组关系

// 1、字符串是以数字0或者字符’\0’结尾

// 2、如果字符数组,以数字0或者’\0’结尾,那么这个字符数组就是字符串

 

char ch = 0

char ch = ‘\0’

ch = ‘0’ // err 字符0,它是普通字符,不是字符串结束字符,ascii码为48

 

例如

char a[] = “1230”

char a[] = “123\0”

 

  1. 字符数组初始化

char buf1[] = {‘c’,’ ‘, ‘p’,’r’,’e’,’g’}

// %s代表以字符串的方式打印

// 首地址,找字符串的结束符,遇到数字0或者字符’\0\结束打印

 

!有可能乱码

 

3、字符数组输入

char str[100];

scanf(“%s”,str) // 遇到空格截断

 

五、随机数的产生

//随机种子设置,只需设置一次,如果种子一样,随机数就一样

//srand(100)

srand((unsigned int)time(NULL))

 

int I = 0;

int tmp = 0;

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

{

tmp = rand() //产生随机数

printf(“tmp = %d\n”,tmp)

}

 

二、作业讲解

三、scanf的使用

 

键盘输入: hello mike回车(把内容放缓冲区

 

 

键盘输入 hello mike\n

 

缓冲区就是一块内存

 

 

结论:scanf以空格分开,输入一次下次也能取出来是因为放到缓冲区了

 

//scanf()的缺陷,不做越界检查

 

04 gets fgets的使用

// 这个函数已经被抛弃了 不建议使用

 

 

 

 

stdio.h里面有一个叫stdin的指针,可以直接调用标准键盘输入

fgets有个问题,会把换行符也读进去

 

05 字符串的输出

 

 

 

 

 

 

 

 

06 strlen的使用

 

 

strlen()

 

07 课堂答疑

 

08 字符串的拷贝

 

 

 

09 数组越界测试

 

// 可能会报段错误

 

10 字符串比较

 

11 字符串追加

 

 

12 上午知识点复习

 

gets  可以获得空格

fgets    stdin

puts  会自动打印\n

fputs    stdout

strlen     遇到\0结束(sizeof不会

strcpy     有一个src 有一个dst 遇到\0结束 最后自己也加一个\0

strcat      和上面一样

strncat     加一个n以后就可以指定长度了

strcmp     逐个字符比较ascii大小

strncmp

 

13 sprintf的使用

s开头输出到数组

f开头输出到文件

什么都不写输出到屏幕

 

结果:

14sscanf的使用

 

 

15 sscanf的补充

 

16 字符串查询

strchr()  // 查询char

 

strstr()  // 查询str

// strchr // strstr

 

17 课堂答疑

 

18 字符串切割

 

 

19 atoi的使用

 

atoi() 函数功能是把一个字符串 把字符串转换成整型 直到遇到\0

 

char str1[] = “-10”

int num1 = atoi(str1)

 

atof(转换到浮点型 atoll(转换长整型

 

char buf[100]

sprintf(buf,”%d”,2345)  // 把格式化的数据写入某个字符串中

20 函数的作用和分类

 

·系统函数,即库函数:这是由编译系统提供的,用户不必自己定义这函数,可以直接使用它们,如我们常用的打印函数printf()

·用户定义函数:用以解决用户的专门需要。

 

程序比作公司,函数比作部门,

 

21 无参无返回值函数的使用

程序比作公司,函数比作部门

 

1、函数的定义,就是把之前写在main 函数内部的代码换个地方

2、函数的定义,类似于厨房做好的菜,如果没有人点菜,做好的菜没有意义

   函数的定义,只有在用户调用了,才起作用,函数调用类似于点菜

 

1、  无参无返回值函数的使用

2、  有参无返回值的使用

3、  无参有返回值函数的使用

4、  有参有返回值函数的使用

 

22 无参无返回值函数的补充

 

23 有参无返回值的函数

 

24 无参有返回值的函数的使用

 

posted @ 2019-01-01 23:47  hh9515  阅读(304)  评论(0编辑  收藏  举报