C语言总结.docx
- 文档编号:26809754
- 上传时间:2023-06-22
- 格式:DOCX
- 页数:15
- 大小:19.88KB
C语言总结.docx
《C语言总结.docx》由会员分享,可在线阅读,更多相关《C语言总结.docx(15页珍藏版)》请在冰豆网上搜索。
C语言总结
数据类型、运算符和表达式
转义字符 转义字符的意义
\n 回车换行
\t 横向跳到下一制表位置
\v 竖向跳格
\b 退格
\r 回车
\f 走纸换页
\\ 反斜线符"\"
\' 单引号符
\a 鸣铃
\ddd 1~3位八进制数所代表的字符
\xhh 1~2位十六进制数所代表的字符
(1)有以下程序
main()
{intm=0256,n=256;
printf("%o%o\n",mn,n);
}
程序运行后的输出结果是
A)02560400B)0256256C)256400D)400400
(2)有以下程序
main()
{chara='a',b;
print("%c,",++a);
printf("%c\n",b=a++);
}
程序运行后的输出结果是
A)b,bB)b,cC)a,bD)a,c
(3)有以下程序
main()
{intx=0,y=5,z=3;
while(z-->0&&++x<5)y=y-1;
printf(“%d,%d,%d\n”,x,y,z);
}
程序执行后的输出结果是
A)3,2,0B)3,2,-1C)4,3,-1D)5,-2,-5
(4)以下程序运行后的输出结果是【8】。
yes
main()
{inta=1,b=3,c=5;
if(c=a+b)printf("yes\n");
elseprintf("no\n");
}
(5)有以下程序
main()
{inti=1,j=1,k=2;
if((j++||k++)&&i++)printf("%d,%d,%d\n",i,j,k);
}
执行后输出结果是
A)1,1,2B)2,2,1C)2,2,2D)2,2,3
控制语句
语句:
(1)若有以下程序
main()
{inta=4,b=3,c=5,t=0;
if(a
if(a printf("%d%d%d\n",a,b,c); } 执行后输出结果是【9】 break语句和continue语句 break: 跳出switch结构、跳出所在循环体 continue: 结束本次循环 #include main() { char str[]=“ASWWLIAHIRXNQ”,c; int k; for(k=2;(c=str[k])! =’\0’;k++) { switch(c) { case ‘L’: continue; case ‘I’: ++k;break; default: putchar(c);continue; } putchar(’*’); } } 数组 (1)以下能正确定义二维数组的是 A)inta[][3]; B)inta[][3]=2{2*3}; C)inta[][3]={};D)inta[2][3]={{1},{2},{3,4}}; (2)#include"stdio.h" #defineM5 main() {inta[M]={1,2,3,4,5}; inti,j,t; i=0;j=M-1; while(i {t=*(a+i);a[i] *(a+i)=*(a+j); *(a+j)=t; i++;j--; } for(i=0;i printf("%d",*(a+i)); } t=*a++; *a=*b--; *b=t; 函数 (1)程序中对fun函数有如下说明 void(*fun)(); 此说明的含义是: A)fun函数无返回值 B)fun函数的返回值可以是任意的数据类型 C)fun函数的返回值是无值型的指针类型 D)指针fun指向一个函数,该函数无返回值 (2)以下叙述中正确的是 A)局部变量说明为static存储数,其生存期将得到延长 B)全局变量说明为static存储类,其作用域将被扩大 C)任何存储类的变量在未赋初值时,其值都是不确定的 D)形参可以使用的存储类说明符与局部变量完全相同 指针 (1)设有定义: intn=0,*p=&n,**q=&p;则以下选项中,正确的赋值语句是 A)p=1;B)*q=2;C)q=p;D)*p=5; (2)若有以下定义和语句 #include inta=4,b=3,*p,*q,*w; p=&a;q=&b;w=q;q=NULL; 则以下选项中错误的语句是 A)*q=0;B)w=p;C)*p=a;D)*p=*w; (3)若有定义: intw[3][5];则以下不能正确表示该数组元素的表达式是: A)*(*w+3)B)*(w+1)[4]w[5][0]int*p[5]C)*(*(w+1))D)*(&w[0][0]+1) ww[0]w[1]w[2]int(*p)[5];p=w; 结构体 (1)structSTU {charname[10]; intnum; intScore; }; main() {structSTUs[5]={{“YangSan”,20041,703},{“LiSiGuo”,20042,580}, {“wangYin”,20043,680},{“SunDan”,20044,550}, {“Penghua”,20045,537}},*p[5],*t; inti,j; for(i=0;i<5;i++)p[i]=&s[i]; for(i=0;i<4;i++) for(j=i+1;j<5;j++) if(p[i]->Score>p[j]->Score) {t=p[i];p[i]=p[j];p[j]=t;} printf(“5d%d\n”,s[1].Score,p[1]->Score); } 执行后输出结果是 A)550550B)680680C)580550D)580680 (2)设有如下说明 typedefstruct {intn;charc;doublex;}STD;typedefintUINT 则以下选项中,能正确定义结构体数组并赋初值的语句是 A)STDtt[2]={{1,'A',62},{2,'B',75}}; B)STDtt[2]={1,"A",62},2,"B",75}; C)structtt[2]={{1,'A'},{2,'B'}}; D)structtt[2]={{1,"A",62.5},{2,"B",75.0}}; 文件 (2)以下叙述中不正确的是 A)C语言中的文本文件以ASCⅡ码形式存储数据 B)C语言中对二进制文件的访问速度比文本文件快 C)C语言中,随机读写方式不适用于文本文件 D)C语言中,顺序读写方式不适用于二进制文件 (3)以下程序企图把从终端输入的字符输出到名为abc.txt的文件中,直到从终端读入字符#号时结束输入和输出操作,但程序有错。 #include main() {FILE*fout;charch; fout=fopen(”abc.txt”,’w'); ch=fgetc(stdin); while(ch! =’#’) {fputc(ch,fout); ch=fgetc(stdin); } fclose(fout); } 出错的原因是 A)函数fopen调用形式错误B)输入文件没有关闭 C)函数fgetc调用形式错误D)文件指针stdin没有定义 (4)下列关于C语言数据文件的叙述中正确的是 A)文件由ASCII码字符序列组成,C语言只能读写文本文件 B)文件由二进制数据序列组成,C语言只能读写二进制文件 C)文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件 D)文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件 (5)若fp已正确定义并指向某个文件,当未遇到该文件结束标志时函数feof(fp)的值为 A)0B)1C)-1D)一个非0值 (6)有以下程序 #include main() {FILE*fp;inti,k=0,n=0; fp=fopen(“d1.dat”,”w”); for(i=1;i<4;i++)fprintf(fp,”%d”,i); fclose(fp); fp=fopen(“d1.dat”,”r”); fscanf(fp,”%d%d”,&k,&n);printf(“%d%d\n”,k,n); fclose(fp); } 执行后输出结果是 A)12B)1230C)123D)00 (7)有以下程序(提示: 程序中fseek(fp,-2L*sizeof(int),SEEK_END);语句的作用是使位置指针从文件尾向前移2*sizeof(int)字节) #include main() {FILE*fp;inti,a[4]={1,2,3,4},b; fp=fopen("data.dat","wb"); for(i=0;i<4;i++)fwrite(&a[i],sizeof(int),1,fp); fclose(fp); fp=fopen("data.dat","rb"); fseek(fp,-2L*sizeof(int),SEEK_END); fread(&b,sizeof(int),1,fp);/*从文件中读取sizeof(int)字节的数据到变量b中*/ fclose(fp); printf("%d\n",b); } 执行后输出结果是 A)2B)1C)4D)3 (8)有如下程序 #include main() {FILE *fp1; fp1=fopen("f1.txt","w"); fprintf(fp1,"abc"); fclose(fp1); } 若文本文件f1.txt中原有内容为: good,则运行以上程序后文件f1.txt中的内容为 A)goodabc B)abcd C)abc D)abcgood 预处理 (1)以下程序中,for循环体执行的次数是 【13】 。 #define N2 #define MN+1 #define KM+1*M/2 main() {inti; for(i=1;i {...} ... } (2)有以下程序 #include #defineF(X,Y)(X)*(Y) main() {inta=3,b=4; printf("%d\n",F(a++,b++));(a++)*(b++) } 程序运行后的输出结果是 A)12B)15C)16D)20 其他 (1)给一个不多于5位的正整数,要求: 一、求它是几位数,二、逆序打印出各位数字。 (2)对10个数进行排序 (3)有一个已经排好序的数组。 现输入一个数,要求按原来的规律将它插入数组中 (4)用递归法将一个位数不确定的整数n转换成字符串(如输入数字12345,应输出字符串“12345” )。 (5)有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数 (6)有n个人围成一圈,顺序排号。 从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。 (7)字符串排序 (8)八进制转换为十进制 (9)有五个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学生号,姓名,三门课成绩),计算出平均成绩,况原有的数据和计算出的平均分数存放在磁盘文件"stud"中。 (10)字符串处理: 字符串拷贝 voidcpystr(char*pss,char*pds){ while(*pds++=*pss++); } 字符串连接 voidfun(char*t,char*s) { while(*t! =0)t++; while(*t++=*s++); } 字符串反序 字符串比较 (1) (2)#defineN10 main() {intI,j,min,tem,a[N]; /*inputdata*/ printf(“pleaseinputtennum: \n”); for(i=0;i { printf(“a[%d]=”,i); scanf(“%d”,&a[i]);} printf(“\n”); for(i=0;i printf(“%5d”,a[i]); printf(“\n”); /*sorttennum*/ for(i=0;i {min=I; for(j=i+1;j if(a[min]>a[j])min=j; tem=a[i]; a[i]=a[min]; a[min]=tem; } /*outputdata*/ printf(“Aftersorted\n”); for(i=0;i printf(“%5d”,a[i]); } (3)main() { inta[11]={1,4,6,9,13,16,19,28,40,100}; inttemp1,temp2,number,end,I,j; printf(“originalarrayis: \n”); for(i=0;i<10;i++) printf(“%5d”,a[i]); printf(“\n”); printf(“insertanewnumber: ”); scanf(“%d”,&number); end=a[9]; if(number>end) a[10]=number; else {for(i=0;i<10;i++) {if(a[i]>number) {temp1=a[i]; a[i]=number; for(j=i+1;j<11;j++) {temp2=a[j]; a[j]=temp1; temp1=temp2; } break; } } } for(i=0;i<11;i++) printf(“%6d”,a[i]); } (4)#include"stdio.h" main() { inti=5; voidpalin(intn); printf("\40: "); palin(i); printf("\n"); } voidpalin(n) intn; { charnext; if(n<=1) { next=getchar(); printf("\n\0: "); putchar(next); } else { next=getchar(); palin(n-1); putchar(next); } } (5)main() { intnumber[20],n,m,i; printf("thetotalnumbersis: "); scanf("%d",&n); printf("backm: "); scanf("%d",&m); for(i=0;i scanf("%d,",&number[i]); scanf("%d",&number[n-1]); move(number,n,m); for(i=0;i printf("%d,",number[i]); printf("%d",number[n-1]); } move(array,n,m) intn,m,array[20]; { int*p,array_end; array_end=*(array+n-1); for(p=array+n-1;p>array;p--) *p=*(p-1); *array=array_end; m--; if(m>0)move(array,n,m); } (3)#definenmax50 main() { inti,k,m,n,num[nmax],*p; printf("pleaseinputthetotalofnumbers: "); scanf("%d",&n); p=num; for(i=0;i *(p+i)=i+1; i=0; k=0; m=0; while(m { if(*(p+i)! =0)k++; if(k==3) {*(p+i)=0; k=0; m++; } i++; if(i==n)i=0; } while(*p==0)p++; printf("%disleft\n",*p); } (7)main() { char*str1[20],*str2[20],*str3[20]; charswap(); printf("pleaseinputthreestrings\n"); scanf("%s",str1); scanf("%s",str2); scanf("%s",str3); if(strcmp(str1,str2)>0)swap(str1,str2); if(strcmp(str1,str3)>0)swap(str1,str3); if(strcmp(str2,str3)>0)swap(str2,str3); printf("afterbeingsorted\n"); printf("%s\n%s\n%s\n",str1,str2,str3); } charswap(p1,p2) char*p1,*p2; { char*p[20]; strcpy(p,p1);strcpy(p1,p2);strcpy(p2,p); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 总结