国家计算机等级考试C语言精华
- 格式:doc
- 大小:193.91 KB
- 文档页数:14
心之所向,所向披靡 C语言总复习 顺序结构程序设计 1.单字符输入输出:getchar(字符变量);putchar(字符变量); 2.字符串输入输出:gets(字符数组名),puts(字符数组名)。 3.格式化输入输出: (1)格式化输入:scanf(“格式控制符”,地址列表); 格式控制符:%[抑制符*][数据列宽度][长短类型]类型 ①格式%s输入字符串不包含空格,且对应地址表列是字符数组名。 ②默认分隔符:空格、回车、Tab键(也可按域宽截取) ③格式控制符间不宜加其它字符,如加入其它字符,输入时应原样输入。如: scanf(“%d, %d”,&a,&b); 输入数据时两数据间要有逗号; scanf(“%d %d”,&a,&b); %d间有两个空格,则输入数据时至少有两个空格。 ④输入数据时不能规定精度如scanf( "%7.2f",&a );是不合法的。 ⑤%c格式输入单字符,空格字符和转义字符都作为有效字符接收。 ⑥%s格式输入字符串,当遇到‘/0’终止 ⑦%*2d表示跳过它对应的输入数据。 ⑧%u格式输入不被使用,对于unsigned型数据,以%d或%o或%x输入。 (2)格式化输出:printf(“格式控制符”,输出列表); 格式控制符:%[对齐标志][最小列宽度][.小数精度][长短类型]类型 ① %md 使输出长度为m,如果数据长度小于m,则左补空格,如果大于m,则输出实际长度 ② %o以八进制形式输出整数;%x以十六进制形式输出整数 ;%u用来输出unsigned型数据,以十进制形式输出;%c用来输出一个字符 选择结构程序设计 算数运算符: + - * / % 关系运算符: > < >= <= != = = /*前四种优先级高于后两种*/ 逻辑运算符:! && || 赋值运算符: = 条件运算符:表达式1?表达式2:表达式3; 逗号运算符:表达式1,表达式2; 逻辑表达式的优化运算: ①逗号表达式求解:先求解表达式1,再求解表达式2,整个表达式的值是表达式2的值。 ②条件?a:b 条件为真,表达式取值a,否则取值b ③&&运算:只要算出第一个表达式为0,第二个表达式不再运算。 ④||运算:只要算出第一个表达式为1,第二个表达式不再运算。 如:int i=0,j=0,a=6; if ((++i>0)||(++j>0)) a++; printf(%d%d%d”,i,j,a); 结果i为1,j为0,a为7。 5 if语句的三种形式: (1)if(条件表达式) {语句1; 语句2; …… } (2) if(条件表达式) {语句1; 语句2; …… } else {语句1; 语句2; …… } (3)if(条件表达式) if(条件表达式) {语句1; 语句2; …… } else {语句1; 语句2; …… } else if(条件表达式) {语句1; 语句2; …… } else {语句1; 语句2; …… } If else的配对关系:从最内层开始,else总是与它上面最近未配对的if配对。 6.switch语句结构 switch(表达式) { case 常量表达式1:语句1;break; case 常量表达式2:语句2;break; …… case 常量表达式n:语句n;break; default:语句n+1;break; } (1)case后面有多条语句时不用{ }括起来;不同case可以共用同一条语句 (2)若执行完某case后的语句没遇到break,则继续执行下一个case和default语句。 (3)default和case的先后顺序变动不影响程序运行结果。 循环结构程序设计 1.for(变量初值;循环条件表达式;变量增值表达式) {循环语句1;循环语句2,……} 2. while(循环判断表达式) {循环体语句;} 3. do {循环体语句;} while(判断表达式);/*必须有分号*/ (1)while、for中的表达式,一般是逻辑或关系表达式,也可以是任意类型表达式。 (2)如果有多条语句,必须用大括号括起,构成复合语句。 (3)break语句跳出整个循环体,不在执行循环. continue语句结束本次循环,可继续执行下一次循环判断。 数组 1数组的定义 数字数组: 一维数组定义:数据类型符 数组变量名[常量表达式]; 二维数组定义:数字类型符 数组变量名[行下标][列下标]; (1)数据类型可以是int型、float型、char型以及指针型、结构体或共用体等类型; (2)数组定义时[ ]中间必须是一个整型常量表达式,这个常量表达式表示数组元素的个数。 (3)数组长度必须是常量值,不能是变量,可以是在程序开始前定义的符号常量,进行长度定义a[N](N需要事先定义为符号常量:#define N 10 );。 (4)变量名是数组在内存中的地址,也就是数组第一个元素在内存中的位置; 字符数组: 一维数组:char 数组名[常量表达式]; 二维数组:char 数组名[常量表达式1][常量表达式2]; (1)通常用于存放字符串,多余项默认为‘\0’。 (2)可用字符串常量为其初始化,采用字符串初始化,字符串的结束标记(\0)不用给出,系统会自动在字符串尾部加上。如:char s[]=“sdkhg”; 也可由键盘输入,如gets(s);输出用puts(s); (3)注意:char s[5]={‘a’,’d’,’f’,’g’,’w’};此种形式不是字符串,无字符串结束标志,仅仅是普通一维字符数组,不能用puts输出,只能用%c格式逐个输出。 2数组的初始化 ⑴一维数组的初始化: 数据类型符 数组变量名[常量表达式]= {表达式1,表达式2,…,表达式n}; ①如果表达式的个数小于数组的大小,未指定值的数组单元被赋值为0。(系统默认) ⑵对二维数组的初始化:与一维数组相同。但根据二维数组的特点,它的初始化可有 方法一: int b[3][3]={1,2,3,4,5,6,7,8,9}; 方法二: int a[3][3]={{1,2,3},{4,5,6},{7,8,9}}; ①分行对数组变量赋初值。比如, int a[2][4]={{1,2,3,4},{5,6,7,8}}; 这种情况下,a的矩阵表示是: ②按照数组的内存映象的顺序为数组变量赋初值,未指定值的单元赋值为0。比如,int
87654321 a[2][4]={1,2,3,4,5}; 这种情况下,a的矩阵表示是: ③只为每一维提供有限数量的初值。比如, int a[2][4]={{1,2},{5,6,7}}; 这种情况下,a的矩阵表示是: 3数组的引用 一维数组的引用 for(i=0;i scanf(“%d”,&a[i]); for(i=0;iprintf(“%d”,a[i]) 二维数组的引用 for(i=0;i for(j=0;j scanf(“%d”,&a[i][j]) ; for(i=0;i for(j=0;j printf(“%d”,a[i][j]); 字符串数组的引用 (1)%c:printf(“%s”,c);和print(“%c”,c[0]);有很大区别。 (2)%s:输出时只要遇到‘/0’就结束,不管数组是否全部输出,且输出字符不包含‘/0’。 输入输出多个字符串时以空格作为分隔符,且要写多个%s. 4字符串函数: strcat(字符数组1,字符数组2); 连接两个字符数组中的字符串,数组1必须足够大。 strcpy(字符数组1,字符串2); 将字符串2拷贝到字符数组1中,此时覆盖数组1中原来元素。 strcmp(字符串1,字符串2); 比较字符串,相等返回0,字符串1>字符串2,返回正数,小于返回负数。 strlen(字符数组); 求字符串长度。 strlwr( 字符串); 将字符串中的大写字母转换成小写 strupr( 字符串); 将字符串中的小写字母转换成大写 5.数组中的两种排序方法: (1)冒泡法:外循环为i=0;i两个元素,并互换。 (2)选择法:外循环为i=0;i循环中比较a[min]和a[j]两个元素,不互换,只让min=j;内循环结束后再进行互换, a[i]和a[min]互换。 函数 1函数的使用 (1)函数的定义: 数据类型 fun(数据类型 参数列表) { 函数体; return 表达式;
00054321
07650021