c语言复习重点docx.docx
- 文档编号:3321589
- 上传时间:2022-11-21
- 格式:DOCX
- 页数:16
- 大小:74.57KB
c语言复习重点docx.docx
《c语言复习重点docx.docx》由会员分享,可在线阅读,更多相关《c语言复习重点docx.docx(16页珍藏版)》请在冰豆网上搜索。
c语言复习重点docx
一、单项选择题(共50分)
•合法的用户标识符(39页,要掌握概念)例以下选项中均是合法的用户标识符是」
A)
AB)_123
P_0temp
doINT
doint都是系统的关键字
•有关语句的定义(要会正确使用语句)例下列数组说明语句中错误的是—
A)doublex[5]={2.0,4.0,6.0,8.0,10.0};
B)inty[5]={0,1,3,5,7,9};
C)charcl[]={T,2,3,'4;'5'};
D)charc2[]={,\xl07\xa,;\x8,};
例若a、b、c、d都是int类型变量且初值为0,以下选项中不正确的赋值语句是_C
A)a二b二c二100;B)a++;C)a+b;D)c=(a=22)-b++;
•数据在内存屮存放的形式(4()页整型数据用补码和5()页字符型用ASCH)
例在C语言中,字符型(char)数据在内存中存放的形式为D
A)BCD码B)原码C)补码D)ASCII码
•合法的常量(37页常量和符号常量、48页字符常量)
例下列可以正确表示字符型常量的是
A)”a”B)*\t'C)'\02&D)'xyr
A是字符串常量C八进制表示错误D字符常量只能包含一个字符。
•复合数据类型计算(54页)
例已知charw;intx;floaty;double刁;则表达式w*x+z-y结果的类型是D
•条件运算
例已知intx=l,y=2,z;执行语句z=x>y?
++x:
++y;后,z的值是
A)1B)2C)3D)4
•自增、自减运算及应用(57页)
例设有inta=l,b=l:
执行printf("%d,%d〃,(a卄,一b),bT);的输出结果是
A)1,-1B)1,0C)0,-1D)0,0
•与或非运算及关系运算常用的算术运算(55页、91页、92页)
例C语言中运算对象必须是整型数据的运算符是」_
A)%B)/C)!
D)&&
例设a、b和c都是int型变量,且a=3,b=4,c=5;则以下表达式中,值为0的表达式是_
A)a&&bB)a<=bC)a||b+c&&b・cD)!
((a
c||l)
•指针的相关运算(第十章的一些简单定义和运算)
例已知inta[3][4],*p=a;p+=6;那么*p和D的值相同。
A)*(a+6)B)*(&a[0]+6)
C)*(a[l]+3)D)*(&a[0][0]+6)
注:
*p=a;定义时赋初值,相当于把a[0][0]的地址赋值给p。
例已知charb[5],*p二b;贝0正确的赋值语句是C
A)b二怙bed";B)*b=Habcdn;C)p=Habcdu;D)*p二怙bed";
止确的输入语句scanf正确的输入方法(82页)
有关宏定义的运算、宏定义的正确使用(204页)
例若有宏定义ttdefineM0D(x,y)x%y,贝U执行以下语句后的输出为Bintz,a二15,b=100;
z=M0D(b,a);
printf(M%d\nn,z++);
A)11B)10C)6D)宏定义不合法
例若有以下宏定义
^defineN2
tfdefineY(n)((N+l)*n)
则执行语句z二2*©+Y(5));后的结果为_
A)语句有错误B)z=34C)z=70D)z值不确定
取整运算
例己知intx=10,y=3,z;则下列语句的输出结果是一Dprintf("%d\nn,z=(x%y,x/y));
A)1B)0C)4D)3
多重循环语句的运算(复习第六章)
例以下程序段的输出结果是_
A)9B)1OilD)10
intk,j,s;
for(k=2;k<6;k++,k++)
{
s=l;
for(j=k;j<6;j++)
s+二j;
}
printf("%d\n",s);
注:
第二轮循环24,s二1,所以结果为10。
循环语句中break和continue的使用(122页)
例若变量已正确定义,以下语句的输出结果是_
A)%#B)*%$C)%D)%$*
x=0;y=2;z=3;
switch(x)
{case0:
switch(y)
{case1:
printf(n*n);break;
case2:
printf("%");break;
}
case1:
switch(z)
{case1:
printf(”$”);
case2:
printf(M*n);break;default:
printf(常');
}
•循环语句的循环次数的判断
例执行下述程序的输出结果是—
#include
main()
{staticinti,j;
for(j=9;i {for(i=9;i if(! Q%i)) break; if(i>=j-l) printf(”%d\n”,j); } } A)11B)10C)9D)1011 注: 这个程序只循环一次。 •判断字符串长度的运算(149页) 例已知: charstr[]=,,ab\n\018\\\,H,;则执行语句: printf('^dXn",strlen(str));的结果是B A)3B)7C)6D)12 注: 字符分别为a、b、\01、8、\、\、\” •位运算(不考位段) 例执行下面程序段后,c的二进制值为_ inta=3,b=6; charc; c=(aAb)«2; A)0001110()B)00000111C)00()000()1D)00010100例以下程序的输出结果是_ A)100B)1600120D)64 main() { charx=040; printf("%d\rT,x=x«l); } •数组元素地址的表示(230页和243页) 例设有inta[]={2,4,6,&10},*p=a;,则值为8的表达式是I) A)*p+3B)*p+4C)*(p+4)D)*(a+3) 例若有inta[4][3]二{{1,2,3},{4,5,6},{7,8,9},{10,11,12}},(邙)[3];p=a; 则*(*(p+1)+2)的值是_g_ A)5B)6C)7D)有语法错误 •结构体数据所占内存的长度(281页) •逻辑运算(92页) •正确的函数定义形式(157页) •字符串的比较(148页) •多级指针的使用(271) •文本文件的读写操作 例以“只读”方式打开文本文件a: \aa.dat,T列语句中哪一个是正确的_ A)fp=fopen("a: \\aa.dat'\"abM);B)fp=fopen(,'a: \aa.dat","a,'); C)fp二fopen("a: \aa.dat”,"wb”);D)fp二fopen("a: \\aa.dat〃,"r"); 例若要执行p=fopen(>,ar\V);则d必须事先进行定义D A)intp;B)int*p;C)FILEp;D)FILE*p; 例标准库函数fgets(s,n,f)的功能是B A)从文件f中读取长度为n的字符串存入指针s所指的内存 B)从文件f中读取长度不超过n-1的字符串存入指针s所指的内存 0从文件f中读取n个字符串存入指针s所指的内存 D)从文件f中读取长度为n-1的字符串存入指针s所指的内存 例写字符到磁盘文件的fputc(ch,fp)ffi数(ch表示字符,fp表示文件指针),其函数原型(头)正确的是一C A)FILE*fputc(char)B)intfputc(FILE*) C)intfputc(char,FILE*)D)intfputc(FILE*,char) 例函数调用语句: fseek(fp,-20L,2)的含义是 A)将文件位置指针移动到距离文件头20个字节处 B)将文件位置指针从当前位置向后移动20个字节 C)将文件位置指针从文件末尾处向后退20个字节 D)将文件位置指针移到离当前位置20个字节处 •数组元素的正确引用、数组的正确定义(第七章) 例在以下数组定义中,正确的是一A A)inta[3+3];B)inta[3,3J;C)inta[];D)inta[3][]; •非法的字符常量(48页) •函数的隐含类型(157页) •判断函数调用语句屮参数的个数(第八章) 例函数原型是voidfun(int*a,int*b),且intx[10],y;,则下列调用小正确的是一D A)fun(*x,&y);B)fun(&x,*y);C)fun(x,y);D)fun(x,&y); •一个变量的多赋值语句的运算 例己知intx二6;则执行x+二x-二x*x;语句后,x的值为B A)36B)-60060D)-24 •字符串正确的定义方法(52页142页) 例下面关于字符串的说明中,错误的是AD A)charstr[7]「FORTRAN";B)charstrL]=nFORTRAN,,; C)char*str二"FORTRAN"; D)charst讥]={'F,O,R,T,R,A,N} 注: charstr[8]「FORTRAN”;charstr[7]={'F,'O',R',T,'R','A',N} •字符串与指针的相关运算(251页) 例以下函数的功能是_ voidfun(char*p2,char*pl) {while((*p2=*p1)! -\0'){pl++;p2++;}} A)将pl所指字符串复制到p2所指内存空间 B)将pl所指字符串的地址赋给指针p2 C)对pl和p2两个指针所指字符串进行比较 D)检查pl和p2两个指针所指字符串屮是否有'\0' 例下列程序的输出结果是_ A)cB)dC)eD)f #include char*p=,,abcdefghijk1mnopqn; mainO { wh订e(*p++! =,e'); printf("%c\n",*p);注意printf语句不是while的内嵌语句. } 注意: 如果while语句后没有;输岀结果就发生变化 •字符串操作的相关运算如连接、复制等(146-150) 例函数调用strcat(strcpy(strl,str2),str3)的功能是 A)将串strl复制到串str2中,然后再连接到str3之后 B)将串strl连接到串str2之后,再复制到str3之中 C)将串str2复制到strl中,然后再将串str3连接到串strl之后 D)将串str2复制到strl中,再将串strl连接到串str3之后 例设有charstringl[20]二"ABCDE",string2[10]=/,xyzz,;,则执行printf(,z%dz,,strlen(strcat(stringl,string2)));后的输出结果是D A)9B)8C)5D)3 •C语言可以处理的文件类型(书331页) •文件指针指向末尾的函数(347feof()函数) 二、程序填空题(20分) 1、 (1)求某数的绝对值 方法一: 方法二: #include〈stdio.h> #include voidmainO voidmain() {inta; {inta; scanf("%d",&a); scanf(“%d”,&a); if(a>=0) a=abs(a); printf("a二%d\n",a); printf(Ma=%d\n,,,a); else } printf(,za=%d\n",-a); (2)数据的反序输出方法一: voidmain() { inta[5]={l,2,3,4,5};inti; for(i=4;i>0;i--)printf(〃%5d〃,a[i]);} 方法二: 将数组中的n个数据按逆序存放。 voidreverse(intaHJntn) {int i=0;j=; while(i {t=a(il;a[i]=a[j];afj]=t;i++;—;} 方法三: #include \n");for(i=0;i \iT'); for(i=0;i for(i=0;i \n");for(i=0;i printf(,,\nn); (3)求一系列数之和 例以下程序用递归法求解$=1+丄+丄+丄+…(兀>1),当最后一项的值小于 XL兀 0.00001时,累加结束。 main() {doubles,x; doublesum(double,double,double*); scanf("%lf',&x); s=1.0; if(x>1.0) {printf(',s=%10.51f\n',,sum(1.0,x,&s);) elseprintf(ndataerror! \nn); doublesum(doublet,doublep,double*a) {t=t/p; if(t>=O.OOOOl) sum(t,p,a); *a+=; return(*a); } (4)统计一系列数中的具有共同特征的数之和。 例程序读入20个整数,统计非负数个数,并计算非负数之和。 请填空完成。 ★include voidmainO { inti,a[20],s,count; s二count=0; for(i=0;i<20;i++) scanf("%d",&a[i]); for(i=0;i<20;i++) {if(a[i]<0) continue; s+=a[i]; count++; } printf("s=%d\tcount=%d\n",s,count); } 2.将某数值转换成二进制数,所得二进制数的每一位数存放在一维数组中返冋 方法一: #include voidmain() {intm,i,r,a[16]; scanf(“%d”,&m); for(i=0;i<16;i++) {if((r=m%2)==0)a[15-i]=0; elsea[15-i]=l; m=m/2; } for(i=0;i<16;i++) printf(”%d”,a[i]); } 3.求字符串的长度,如一个字符串连接到另一个字符串的后面,新串的长度。 例以下是将两个字符串连接起來的程序,请填空。 方法一: voidmain() {charsi[80],s2[40]; inti=0,j=0; printf(''\nlnputstringl: r,);scanf(''%s〃,si); printf(''\nlnputstring2: 〃);scanf(、'%s〃,s2);while(sl[i]! -\0,) i++; while(s2[j]! =,\OZ) sHi++]二s2[i++l;或sl「il二s2[i];i++;i++; sl[i]i\O,; printf(''Thenewstringis%s\,si);printf(''Thenewstringlongis%d\nzz,strlen(si)); } 方法二: #include voidmain(){charsl[80],s2[40]; inti=0,j=(); printf("\nlnputstringl: ");scanf(”%s”,sl); printf(n\nlnputstring2: H);scanf(”%s”,s2); sl[8O]=strcat(sl,s2); printf(uThenewstringis%s\n",sl); printf("Thenewstringlongis%d\n",strlen(sl)); ) 4•将数组元素按行求和后在存储到数组中。 例将数组元素按行求和后存放到另一个数组中。 #include voidmain() {inti,j,a[3][4],b[3]={0J; printfC'inputa: \nM); for(i=0;i<3;i++) for(j=0;j<4;j++) scanf(”%d”,&a[i][j]); for(i=0;iv3;i++) for(j=0;j<4;j++) b[i]=b[i]+a[i]|j]; printf("\nouputa: \nM); for(i=0;i<3;i++) (for(j=0;j<4;j++) printfC*%5d-,a[i][j]); printf(M\nH); } printf(H\nouputb: \nH); for(i=0;i<3;i++) printf(”%5d”,b[i]); 三、修改下列程序的错误(共15分) 1.通过某种方式实现两个变量值的交换。 例给定程序中功能是: 从键盘上输入2个整数,按从小到大的顺序输出这2个数。 /******found*******/ 正确的程序 fun(intx,inty) /******found*******/ {inttemp; fun(int*x,int*y) temp=*x;*x=*y;*y=temp; {inttemp; } temp-^x^x-^y;*y-temp; main() } {inta,b; main() /*******found******/ {inta,b; scanf(”%d,%d",&a,&b); /************/ if(a scanf(”%d,%d”,&a,&b); /********found*****/ if(a>b) fun(a,b) /********found*****/ printf(',\n%d,%d\n',,a,b); fun(&a,&b) } printf("\n%d,%d\n",a,b); } 2.输入矩阵元素的值,求主对角线元素Z和。 #include voidmain() {inta⑶⑶,sum=0; inti,j; printfC'enterdata: \n"); for(i=0;i<3;i++)for(j=0;j<3;j++)scanf(H%dH,&a[i]Lj]); for(i=0;i<3;i++)sum=sum+a[i][i]; printf(Hsum=%d\nH,sum); 3.用选择法对数组元素按从小到大的顺序进行排序。 方法一: #include #include #defineN20 main() voidfun(inta[],intn) {intij,min5tempta[ll]; { printf(nenterdata: \nM); inti,j,k,t; for(i=l;i<=10;i++) for(i=0;i {printf(,,a[%d]=,,,i); { scanf("%d”,&a[i]);} k=i; /*输入10个数*/
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 复习 重点 docx