《本程序设计语言基础复习题.doc》由会员分享,可在线阅读,更多相关《本程序设计语言基础复习题.doc(20页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、一、 判断题1. C语言中,为了区别一般的变量,符号常量必须用大写字母表示。错2. C语言中,强制类型转换后,原变量的值和数据类型不变。对3. switchcase结构中条件表达式和常量表达式值可以为float类型。错4. C语言中,do-while语句构成的循环只能用break语句退出。错5. C语言中,数组元素的下标是从1开始的,下标不能越界。错6. 一个数组中的所有元素可以具有不相同的数据类型。错7. C语言中,实参的个数、类型和位置必须与形参的定义一一对应。对 8. 所有的函数调用前都必须进行函数原型说明。错9. C语言通过文件指针对它所指向的文件进行操作。对10. 在程序运行过程中,
2、可通过赋值语句改变常量的值。错11. 在一个循环体中,break和continue只能出现一次。错12. C语言中,字符串以字符数组形式存放,且规定了用0作为结束标记。对13. 常量、表达式可以做为函数的形参。错14. C语言程序是函数体程序,main()是主函数。对15. 在程序运行过程中,可通过重定义改变变量的类型。错16. 在if语句中使用break,可退出选择结构。错17. 函数的递归调用同样适用于主函数main()。对18. 指针变量存放的是地址信息,所以对指针变量进行加、减等算术运算是没有意义的。错19. C语言数据文件由二进制数据序列组成,C语言中能读写二进制文件。对20. C语
3、言中的文本文件以ASCII码形式存储数据。对二、 单项选择题1. 下面各选项中,均是C语言合法标识符的选项组是( B )。A. 33 we auto B. _23 me _3ew C. _43 3e_ else D. ER -DF 322. 若在定义语句:int a,b,c,*p=&c;之后,接着执行以下选项中的语句,则能正确执行的语句是( C )。A. scanf(%d,&p);B. scanf(%d%d%d,a,b,c);C. scanf(%d,p); D. scanf(%d,a,b,c);3. 表达式:(int)(double)9/2)-(9)%2的值是( B )。A.0 B.3C.4
4、D.54. 以下程序段的描述,正确的是( C )。 x=-1; do x=x*x; while(!x); A. 是死循环B. 循环执行两次C. 循环执行一次 D. 有语法错误 5. 在下述程序中,判断ij共执行的次数是( D )。 main() int i=0, j=10, k=2, s=0; for (;) i+=k; if(ij) printf(%d,s); break; s+=i; A. 4 B. 7C. 5 D. 6 6. 有以下结构体说明、变量定义和赋值语句( D )。 struct STD char name10; int age; char sex; s5,*ps; ps=&s0
5、; 则以下scanf函数调用语句中错误引用结构体变量成员的是( D )。A. scanf(“%s”,s0.name); B. scanf(“%d”,&s0.age);C. scanf(“%c”,&(ps-sex); D. scanf(“%d”,ps-age);7. 下列关系表达式中,结果为“假”的是( D )A(3+4)6B(3!=4)2 C3=4|3D(3b) c=a,a=b,b=c; B.if(ab) c=a,a=b,b=c; C.if(ab) c=a;a=b;b=c; D.if(ab) c=a;a=b;b=c;13. 有以下定义语句,编译时会出现编译错误的是( C )。A.char a=
6、a B.char a=n; C.char a=aa; D.char a=x2d; 14. 若有定义语句:int a410,*p,*q4;且0i4,则错误的赋值是( A )。A.p=aB.qi=aiC.p=aiD.p=&a2115. 下面是有关C语言字符数组的描述,其中错误的是( D )。A.不可以用赋值语句给字符数组名赋字符串B.可以用输入语句把字符串整体输入给字符数组C.字符数组中的内容不一定是字符串D.字符数组只能存放字符串16. 下列程序的运行结果为( A )。#include int main()char a=morning; int i, j=0; for(i=1; i7; i+)
7、if(ajai)j=i; aj=a7; puts(a);return 0;AmoBmogninrCmorningDmornin17. 变量的指针,其含义是指该变量的( A )。A地址B值C名D一个标志18. 若有说明:int *p,m=5,n;以下程序段合法的是( D )。Ap=&n ;Bp = &n ; scanf(“%d”, &p);scanf(“%d”,*p);Cscanf(“%d”, &n);Dp = &n ; *p=n ; *p = m ;19. 对定义语句:int a10=5,6,7,8,9,10;的正确理解是( C )。A. 将6个初值赋给a1至a6 B. 将6个初值赋给a5至a
8、10 C. 将6个初值赋给a0至a5D. 此语句不正确20. 当定义一个结构体变量时,系统分配给它的内存是( A )。A各成员所需内存量的总和B结构体中第一个成员所需内存量C成员中占内存量最大的容量D结构体中最后一个成员所需内存量三、 填空题1. C语言程序的三种基本结构,分别是顺序结构、选择结构和 循环结构 。2. 若x=1,y=2,z=3,则表达式xy?x+z:y+z的值是 4 。3. 若x=12,z=0;执行语句z+=+x+1;则z的值为 14 。4. 有字符数组定义char str80; 从键盘接收一个字符串存入该数组中,语句应是 getchar(str) 。5. 在循环过程中,若要跳
9、过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定,应使用 continue 语句。6. 有以下程序段,且变量已正确定义和赋值for(s=1.0,k=1;k=n;k+) s=s+1.0/(k*(k+1);printf(s=%fn,s);请填空,使下面程序段的功能与其完全相同。s=1.0;k=1;while( k=n ) s=s+1.0/(k*(k+1); k+ ;printf(s=%fnn,s);7. 以下程序中函数f的功能是在数组x的n个数(假定n个数互不相同)中找出最大最小数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。请填空。#include viod f(int
10、x,int n) int p0,p1,i,j,t,m;i=j=x0; p0=p1=0;for(m=0;m if(xmi) i=xm; p0=m;else if(xmt=xp0; xp0=xn-1; xn-1=t;t=xp1;xp1= xn ; xn =t;main() int a10,u;for(u=0;u10;u+) scanf(%d,&a);f(a,10);for(u=0;u10;u+) printf(%d,a);printf(n);8. 下列程序中的函数strcpy2()实现字符串两次复制,即将t所指字符串复制两次到s所指内存空间中,合并形成一个新的字符串。例如,若t所指字符串为efgh
11、,调用strcpy2后,s所指字符串为efghefgh。请填空。#include #include void strcpy2(char *s,char *t) char *p=t; while(*s+=*t+); s= s-1 ; while( *s+ =*p+);main() char str1100=abcd,str2=efgh; strcpy2(str1 ,str2); printf(%sn,str1);9. 以下程序统计从终端输入的字符中大写字母的个数,num0中统计字母A的个数,num1中统计字母B的个数,其它依次类推.用#号结束输入,请填空。#include #include ma
12、in() int num26=0,i; char c;while( c=getchar() ) !=#)if(isupper(c) numc-A+= 1 ;for(i=0;inext = p2 ; p1-next =p ;12. C语言中调用 fopen() 函数来打开文件,C语言中调用 fclose() 函数来关闭文件。13. 程序中有语句 c=sqrt(n); 则在程序的首部必须写上 #include 。14. 指针P用于指向整型数据,则该变量的定义语句为 int i = 0;int* p = &i; 。15. 在循环体中,continue();语句的作用是 跳过循环体中剩余的语句而进行下
13、一次循环 。16. 定义二维整型数组a,4行10列,定义语句是 int a410 。17. 若a、b和c均是int型变量,则计算表达式a=(b=4)+(c=2)后,a,b,c的值分别是为 a=6,b=4,c=2 。18. 表达式8/4*(int)2.5/(int)(1.25*(3.7+2.3)结果的数据类型为 int 。19. 数学表达式等价的C语言表达式是 pow(a-b),2) 。20. 至少执行一次循环体的循环语句是 do-while 语句 。21. 若有定义语句:int a4=0,1,2,3,*p;p=&a1;则+(*p)的值是 2 。 22. 若有 int a10; 则a数组的最后一
14、个元素表示为 a9 。23. 若有定义int a,b;则“a,b中只有一个大于零”的表达式是 (a0&b0)|(a0) 。24. 静态变量如果没有指定初值,则其初值为 0 。25. 设有以下定义:#define N 10#define M(x) x*N执行语句a=M(1+1)后,a的值为 20 。26. C源程序的基本单位是 函数 。27. 下面程序的功能是对3个浮点数进行从大到小排序,请填空。#includeint main( )float a,b,c,t;scanf(%f,%f,%f,&a,&b,&c);if ( a-b 0 )t=a;a=b;b=t;if ( a-c0 )t=a;a=c;
15、c=t;if ( b-c 0 ) t=b ;b=c; c=t ;printf(%5.2f,%5.2f,%5.2fn,a,b,c);return 0;28. 以下程序是利用“辗转相除法”,求两个正整数的最大公约数。#includeint main()int r,m,n;scanf(“%d,%d,”,&m,&n);if(mn) r=m; m=n; n=r;r=m%n;while( ( r=m%n) !=0 ) m=n; n=r; r= m ;printf(“最大公约数:%dn”,n);retrun 0;29. 下面程序用变量num统计文件中字符的个数。补足所缺语句。#include int mai
16、n( ) FILE*fp ; long num=0;if(fp=fopen(file.txt,r)=NULL) printf(cannot open the filen); exit(0); while(!feof(fp) fgetc(fp); num+ ;printf(num=%ldn,num);fclose(fp);return 0;30. 下列程序实现的功能是求分数数列前20项之和。#includeint main() int s=1,i;double a=2.0,b=1.0;double sum=0;for(i=1;i=20;i+)sum=sum+s*a/b;a=a+b;b=a-b;s
17、=(-1)*s;printf(数列的和为:%.4lfn,sum);return 0;四、 程序阅读题1. 若运行时输入:246,写出以下程序运行后的输出结果。#include int main(void) int x32=0,i; for(i=0;i3;i+) scanf(%d,xi); printf(%3d%3d%3dn,x00,x01,x10); return 0; 2. 写出以下程序运行后的输出结果。#include int main(void) int a33, *p,i; p=&a00; for(i=1; i9; i+)pi=i+1; printf(%dn,a12);return 0
18、; 3. 以下程序运行时,当输入Nanjing University of Information & Technology回车,写出程序的运行结果。#include int main( )char str80;scanf(%s,str); printf(%sn,str);return 0;4. 写出下面程序的输出结果。#includeint main ( ) int k=1,n=263 ; do k *= n%10 ; n/=10 ; while (n) ; printf(%dn,k); return 0;5. 当运行以下程序时,从键盘输入:Aha Aha回车,写出程序的运行结果。#incl
19、ude int main()char s80,c=a; int i=0; scanf(%s,s); while(si!=0) if(si=c) si=si-32; else if(si=c-32) si=si+32; i+; puts(s); return 0;6. 写出下面程序的输出结果。#includeint a=3 , b=5;int max(int a,int b)int c; c=ab?a:b; return (c);int main( ) int a=8;printf(“%d”,max(a,b);return 0;7. 输入5回车后,写出下面程序的执行结果。#includelong
20、 int fac(int );int main()int n;scanf(%d,&n);printf(%dn,fac(n); return 0;long int fac(int m)long int f;if(m0)printf(data error!n);else if(m=0|m=1)f=1;else f=fac(m-1)*m;return f;8. 从键盘输入27回车,写出下面程序执行的结果。#include int main()int x,y,i,a8,j,u;scanf(%d,&x); y=x;i=0;do u=y/2; ai=y%2; i+;y=u; while(y=1); for
21、(j=i-1;j=0;j-) printf(%d,aj);return 0;9. 写出以下程序运行后的输出结果。#include void fun(char *t,char *s)while(*t!=0)t+;while(*t+=*s+)!=0);int main(void) char ss10=”acc”,aa10=”bbxxyy”;fun(ss,aa);printf(“%s,%sn”,ss,aa);return 0; 10. 写出以下程序运行后的输出结果。#include int main(void) int a=1,b=3,c=5; int *p1=&a,*p2=&b,*p=&c; *p
22、=*p1*(*p2); printf(%dn,c);return 0; 11. 以下程序时,从键盘输入 ADescriptor(表示回车),写出以下程序运行后的输出结果。#include int main(void) char c; int v0=1,v1=0,v2=0; do switch(c=getchar() case a:case A: case e:case E: case i:case I: case o:case O: case u:case U:v1+=1; default:v0+=1;v2+=1; while(c!=n); printf(v0=%d,v1=%d,v2=%dn,
23、v0,v1,v2); 12. 写出以下程序运行后的输出结果。#include #include struct A int a; char b10; double c; struct A f(struct A t);int main(void) struct A a=1001,”ZhangDa”,1098.0; a=f(a);printf(“%d,%s,%6.1fn”,a.a,a.b,a.c);return 0; struct A f(struct A t) t.a=1002;strcpy(t.b,”ChangRong”);t.c=1202.0;return t; 13. 若运行时输入:246,
24、写出以下程序运行后的输出结果。#include int main(void) int x32=0,i; for(i=0;i3;i+) scanf(%d,xi); printf(%3d%3d%3dn,x00,x01,x10); return 0; 14. 写出以下程序运行后的输出结果。#include int main(void) int a33, *p,i; p=&a00; for(i=1; i9; i+)pi=i+1; printf(%dn,a12);return 0; 15. 写出以下程序运行后的输出结果。#include void fun(char *t,char *s)while(*t
25、!=0)t+;while(*t+=*s+)!=0);int main(void) char ss10=”acc”,aa10=”bbxxyy”;fun(ss,aa);printf(“%s,%sn”,ss,aa);return 0; 16. 写出以下程序运行后的输出结果。#include int main(void) int a=1,b=3,c=5; int *p1=&a,*p2=&b,*p=&c; *p=*p1*(*p2); printf(%dn,c);return 0; 17. 以下程序时,从键盘输入 ADescriptor(表示回车),写出以下程序运行后的输出结果。#include int
26、main(void) char c; int v0=1,v1=0,v2=0; do switch(c=getchar() case a:case A: case e:case E: case i:case I: case o:case O: case u:case U:v1+=1; default:v0+=1;v2+=1; while(c!=n); printf(v0=%d,v1=%d,v2=%dn,v0,v1,v2); 18. 写出以下程序运行后的输出结果。#include #include struct A int a; char b10; double c; struct A f(str
27、uct A t);int main(void) struct A a=1001,”ZhangDa”,1098.0; a=f(a);printf(“%d,%s,%6.1fn”,a.a,a.b,a.c);return 0; struct A f(struct A t) t.a=1002;strcpy(t.b,”ChangRong”);t.c=1202.0;return t; 五、 程序设计题1. 编写程序,实现如下功能。从键盘输入一数值给变量x,若x大于60,则输出pass,否则输出nopass。#includeint main(void)int x;printf(Input:);scanf(%d
28、,&x);if(x60)printf(pass);elseprintf(nopass);return 0;2. 编写程序,实现如下功能:输入一串字符,并以回车结束。将其中的小写字母转换成大写字母,而其它字符不变,输出转换字母的个数。若有:char ch = a;转换成大写字母的操作为: ch = ch 32;#includeint main(void) char ch,count; printf(Input a string:); ch=getchar(); while(ch!=n) if(ch=a&ch=z) ch=ch-32; count+; ch=getchar(); printf(%d
29、,count);return 0;3. 编写程序实现如下功能:有10个学生,每个学生的数据包括学号,姓名和成绩,从键盘输入10个学生数据,要求输出成绩总和,以及分数最高的学生的数据(包括学号,姓名,成绩)。#include#define N 10struct studentint num;char name;int score;int main(void)struct student stuN;int i=0,sum; printf(Input Data:n);for(i=0;iN;i+)scanf(%d%s%d,&stui.num,&stui.name,&stui.score); for(i
30、=0;istui+1.score)printf(%d%s%dn,stui.num,stui.name,stui.score);elseprintf(%d%s%dn,stui+1.num,stui+1.name,stui+1.score);sum=stui.score+stui+1.score;printf(%dn,sum)return 0;4. 编写程序,实现如下功能。输入n值,输出高度为n的等边三角形。例如当n=4时的图形如下。*#includeint main(void)int row,col,n;printf(N: );scanf(%d,&n);for(row=1;row=2*n;row
31、+)if(row%2=1)for(col=1;col=row;col+) printf(*);printf(n);return 0;5. 以下程序完成的是冒泡排序,至少有五个错误,请指出并改正。main() int a10;i; j; t; for(i=0;i10;i+) scanf(%d,&ai); printf(n); for(i=0;i9;i+) for(i=0;iai+1); t=ai; ai=ai+1; ai+1=t; printf(The sorted numbers:n); printf(%d ,a);#includeint main()int a10,i,j,t; for(i=
32、0;i10;i+) scanf(%d,&ai); for(i=0;iai+1) t=ai; ai=ai+1; ai+1=t; for(i=0;i10;i+) printf(The sorted numbers:%dn,ai);return 0;6. 将1-100的整数在屏幕上输出,每行10个,每个数字间用制表位分隔。请写出主要程序段。#includeint main(void) int i; for(i=1;i=100;i+) printf(%dt,i); if(i%10=0) printf(n); return 0;7. 写程序,从键盘输入十个任意的整数存放于数组a10中,分别求出它们的最大
33、数、最小数和平均数,分别放于变量max、min和aver中。#include#define N 10int main()int aN,i,max,min,sum; float aver;for(i=0;iN;i+) scanf(%d,&ai); max=min=a0; sum=a0;for(i=1;imax) max=ai; if(aimin) min=ai; aver=(float)sum/10; printf(max:%d,min:%d,aver:%fn,max,min,aver); return 0;8. 给定程序MODI1.C中函数fun的功能是:计算正整数num的各位上的数字之积。 例如,若输入:252,则输出应该是:20。若输入:202,则输出应该是:0。 请改正程序中的错误,使它能得出正确的结果。 #include long fun (long num)/*found*/long k; long k=1; dok*=num%10 ;/*found*/num=10 ; num=num/10; while(num);return (k);main()long n ;printf(nPlease enter a number:);
限制150内