C语言复习(无答案).doc_第1页
C语言复习(无答案).doc_第2页
C语言复习(无答案).doc_第3页
C语言复习(无答案).doc_第4页
C语言复习(无答案).doc_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C语言复习(修订版)一、判断题:1 x72、n、 都是字符常量。( )。 2 若有说明int c;则while(c=getchar();是正确的C语句。 ( )3 int *p=&a ,a=0;是正确的C变量定义语句。 ( )4 C语言程序从main函数开始执行,所以main函数必须写在其他被调用的函数之前。( ) 5 表达式7=3+4不正确。 ( )6 字符数组char str =abcd; 有5个数组元素( ) 7 while 1 i,j; 一定是错误的C语句。 ( )8 for( ; ; )S中的语句S必执行无穷多次。 ( )9 用字符型指针变量p作为函数void fa(char *pa)的实际参数时,应采用以下的命令格式fa (*p ); ( ) 10 sub()和Sub( )是不同的函数 ( )11 在C程序中,函数中所定义的局部变量与全局变量同名时,局部变量屏蔽全局变量。( ) 12 全局外部变量定义命令必须写在函数之外。( ) 13 指针变量算术运算只能可作+、运算。( )14 如有定义float a10; 可定义表达式a=a+1。( )15 在逻辑表达式的计算中,必须所有的逻辑远算符都被执行后,才会结束表达式的计算( )16 数组名作为函数实际参数,传送的是地址( )17 若变量pointer是指针变量,命令pointer=0x2000; 是正确的赋值命令. ( )18 int c2 =1,2,3,4; 是正确的二位数组定义命令。( )19 printf(%5. 3fn,123456.12345);输出为23456.123 ( ) 。20. 变量定义 char *(pa) 4 ;说明pa是用于数组处理的指针。21. 用命令scanf(%s,name); 对字符数组进行输入操作,当键入“I am a Student”时,数组的内容为“I”。 ( )22. 表达式 B+a-A 的结果是b ( ) 23. while ( ) ; 表示无限循环 ( )24. switch (j) . 语句中的变量j可以是浮点型变量( )25. 全局变量的不加存储方式修饰符时,说明其存储类型为auto( )26. 指针变量本身没有指针( )27. 用关键字“struct” 定义的内容是数据类型( ) 二、 单项选择题: (1)若有定义数组命令“int b 3=1, 2, 3, 4, 5, 6, 7”,则b数组第1维的长度是( )A) 2 B) 3 C) 4 D) 无确定值b22的值是( )A) 0 B) 1 C) 7 D) 无确定值(2) C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符 。A)必须为字母或下划线。 B)必须为下划线。C)必须为字母 D)可以是字母、数字和下划线中的任一种字符。(3) 下面四个选项中,均是正确的八进制数或十六进制数的选项是 。A)-10 0x8f -011 B) 010 -0x11 0xf1C) 0abc -017 0xc D) 0a12 -0x123 -0xa(4)以下选项中非法的表达式是( )A)06x3?2:1(7)已知ch是字符型变量,下面不正确的赋值语句是 ( ) 。A)ch = 5 + 9 ; B) ch= a + b ; C) ch = 0 ; D) ch= 7 + 6 ; (8) 设x , y和int型变量,且x = 3, y = 4 , z = 5 则下面表达式中使x值为0的是( ) 。A)!(z y )&(x-=3) B) (x-y-1 ) & y C) (z-y) | (!(x-=3) D) y|z&(x-=3)(9)设有程序段int k = 10 ;while ( k = 0 ) k = k - 1 ;以下描述正确的是 ( ) 。A) 循环体语句一次也不执行。 B) 循环是无限循环。C) while 循环语句执行十次。 D) 循环体语句执行一次。(10)设有定义“char s12=“abcdef”;”则命令“printf(“%dn”,strlen(s);”的输出结果为( )A) 随机值 B) 7C) 6 D) 12 (11) 当a = 1 , b = 3 , c =5 d=4时,则执行完下面一段程序后,x的值是 ( ) 。 if ( a b ) if ( c d ) x = 1; else if ( a c ) if ( b d ) x = 2 ; else x = 3 ; else x = 6 ; else x = 7 ;A)1 B) 3 C) 2 D) 6 (12) 下面程序的运行结果是 。# include stdio.h void main ( ) int a = 1 , b = 10 do b - = a ; a + + ; while ( b - - 0) B) if (x0) printf ( %f ,-x ) x=x+y; printf (%f , x); else printf (%f,-x); else printf (%f , -x);C) if (x0) D) if(x0) x=x+y ; printf (%f , x); x=x+y ; peintf (%f, x) else printf (%f, -x) ; else printf (%f, -x);(18) 下列程序的输出结果是( )void main( ) int i; for(i=A;iI;i+,+i) printf(“%c”,i+32); printf(“n”); )编译不通过,无输出 B)aceg C)acegi D)abcdefghi(19) 下列程序的输出结果是( )void main()int a=2, *p=&a; printf (%d%d, (*p) +,*p;)A) 23 B)22 C)2 D)21(20) 逻辑运算符两侧运算对象的数据类型 。A)只能是0或1 B) 可以是整型、字符型或实型数据 C) 只可以是整型或字符型数据 D)只能是0或非0正数(21)以下for 循环的执行次数是 。 for ( x = 0, y = 0; (y = 123 ) & ( x4 ); x + + );A) 无限次。 B)4次。 C)0次 。 D)3次。(22)下面的程序段 。 for ( t = 1 ; t = 100, t + + ) scanf (%d, &x); if ( x 0 ) continue; printf (%3d, t ); A) 当x = 0时什么也不输出 C) printf 函数永远也不执行 D)最多允许输出100个非负整数(23) 若有说明int m5,*p; 将键入数据保存于数组第一个元素m0,以下正确的语句段是( )。A) p = m; B) p = &m; scanf ( % d , *p); scanf ( % d , p);C)p = &m0; D) p = m;scanf ( % d , *p) sacnf(“%d”, p);(24) 下面程序的运行结果是 。a=1; b=2; c=2;while (abc) t = a ; a = b ; b = t ; c - - ;printf (%d , %d, %d, a, b, c);A) 1, 2, 0 B) 2, 1, 0 C) 1, 2, 1 D) 2, 1, 1(25) 若有说明:int a34; 则对数组元素的非法引用是 。A)a02*1 B) a04 C) a4-20 D) a13(26) 对以下说明的正确理解是: int a10 = 6, 7, 8, 9, 10; A) 将5个初值依此赋给a 1 至a5 B)将5个初值依此赋给a 0 至a 4 C)将5个初值依此赋给a 6 至a10 D) 因长度与初值个数不同,故语句错误(27) 若二维数组a有m列,则在a i j 前的元素个数为 A) i * m + j B)j * m + i C) i*m + j -1 D)i * m + j + 1(28) 已定义以下函数void fun(char *p2, char *p1) while(*p2=*p1)!=0) p1+;p2+; 函数的功能是 ( )A)将p1所指字符串复制到p2所指内存空间B)将p1所指字符串的地址赋给指针p2C)对p1和p2两个指针所指字符串进行比较D)检查p1和p2两个指针所指字符串中是否有0。(29) 以下正确的函数声明语句形式是 。 A) double fun ( int x , int y ) B) double fun ( int x ;int y ) C) double fun ( int , int ) ; D) double fun ( int x ; int y );(30) 有以下程序void main( ) int i=0, s=0;doif(!(i%3) i+;continue;i+;s+=i; while(i7);printf(%dn, s);执行后输出的结果是( )a)10 B) 9 C) 8 D) 16 (31) 有两个字符数组 a, b,则以下正确的输入格式是 。 A) scanf (% s % s, &a, &b ) B) gets (a, b) C) scanf (%s,a);scanf (%s, b); D) gets (a); gets (b) (32) 以下程序正确的运行结果是 。 void main ( ) int a = 2 , i ; for ( i = 0 ; i 3 ; i + + ) printf ( % 4 d , f(a) ) ; f( int a) int b = 0 ; static int c = 3 ; b + + ; c + + ; return ( a + b + c ) ; A) 7 7 7 B) 7 10 13 C) 7 8 9 D) 7 9 11 (33) 当运行以下程序时,从键盘输入:ab c def (表示回车)则下面程序的运行结果是 。 # include stdio.h # define N 6 void main ( ) char c N; int i= 0; for ( ;i N; ci = getchar ( ),i+); for (i = 0; i b B)ab0 C)0aab void main( ) int s,t,a,b;scanf(%d,%d,&a,&b);s=1; t=1;if(ab)t=s+1; else if(a= =b)t=5;else t=2*s; printf(t=%dn,t);(46)设x和y均为int型变量,则以下语句:x+=y;y=x-y;x-=y;的功能是A) 把x和y按从大到小排列B)把x和y按从小到大排列C)无确定结果 D)交换x和y中的值(21)以下程序的输出结果是:void main() int a=12,b=12;printf(%d %dn,-a,+b);A)10 10 B)12 12 C)11 10 D)11 13(47)以下程序运行后,输出结果是A)cde B)字符c的ASCII码值C)字符c的地址 D)出错void main() char *s=abcde;s+=2;printf(%ldn,s);(48)以下程序输出结果是A)7 B)6 C)5 D)4main() int m=5;if(m+5)printf(%dn,m);else printf(%dn,m-);(49)当a=1,b=3,c=5,d=4时,执行下面一段程序后,x的值为A)1 B)2 C)3 D)6if(ab)if(cd) x=1;elseif(ac)if(bd) x=2;else x=3;else x=3;else x=6;(50)在执行以下程序时,如果从键盘上输入:ABCdef,则输出为A)ABCdef B)abcDEF C)abc D)DEF#include void main( ) char ch;while(ch=getchar( )!=n) if(ch=A & ch=a & ch100) break; do+k while (k=1000)D) int s=36While(s);-s;(54)执行语句:for(i=1;i+4;)后;变量i的值是A)3 B)4 C)5 D)不定(55)以下程序运行后,如果从键盘上输入ABCDE,则输出结果为A)8 B)7 C)6 D)5#include#includefunc(char str ) int num =0;while(*(str+num)!=0) num+ +;return(num); void main( )char str10,*p=str;gets(p); printf(%dn,func(p);(56)下面程序的运行结果是A)12ba56 B)6521 C)6 D)62 void main() char ch7=65ab21;int i,s =0for(i=0;chi=0&chib)&(n=cd)后,n的值为 A)1 B)2 C)3 D)0(60) 以下程序段在变量ch的值为A 时的输出为:char ch;scanf(“%c”,&ch);switch (ch)case B:printf(“80-90”);case A:printf(“100-91”);case C:printf(“69-79”);break;case D:printf(“60-68”);default:printf(“50”);a) 100-91 b) 100-9169-79 c)80-90100-9169-7960-6850 d) 100-9169-7960-6850三、填空题(1)若想通过以下输入语句使a中存放字符串1234,b中存放字符5,则输入数据的形式应该是 a=1234 b=5 。.char a10,b;scanf(a=%s b=%c,a,&b); .(2)下面程序的输出结果是 ABCDCD 。char b=ABCD;void main( ) char *chp;for(chp=b; *chp; chp+=2) printf(%s,chp);printf(n);(3)下面程序的输出结果是 024 。#define MAX 3int aMAX;void main( ) fun1( ); fun2(a); printf(n);fun1( ) int k,t=0; for(k=0;kMAX;k+,t+) ak=t+t;fun2(int b) int k;for(k=0;kMAX;k+)printf(%d,*(b+k)(2)下面程序的输出结果是 i=6 j=36 。1、#include int f(int n)static int s=1;while(n) s*=n - -;return s;void main()int i,j; i=f(3); j=f(3);printf(i=%d j=%d n,i,j);(4)下面程序的输出是_49_ 。 void main( )int a10=19,23,44,17,37,28,49,36,* p;p=a;printf(%dn,(p+=3)3); (5)下面程序的输出是 AB 。 void main( )int i=3,j=2char *a=DCBA;printf(%c%cn,ai,aj);(6)以下函数的功能是:把两个整数指针所指的存储单元中的内容进行交换。请填空。exchange(int *x, int *y)int t; t=*y;*y= *x; *x= _ t _ ;(7)以下fun函数的功能是:累加数组元素的值。n为数组中元素的个数。累加的和值放入x所指的存储单元中。请填空。fun(int b ,int n,int *x) int k, r=0;for(k=0;kn;k+) r= r+bk或*(b+k)+r ; *x =r;(8)以下程序的功能为:比较判断键入的字符串长度是否大于4,如果是判断内容是否为“abcd”, 如果是,输出字符串值. 请填空。#include “string.h”void main() char str10; scanf(_” %s”_,str_); if ( strlen(str)=4 & strcmp(str,”abcd”)=0) printf(“%sn”, str)(9)有一个3*4的矩阵,要求出其中值最大的那个元素的值,以及其所在的行号和例号, 请填空。 #include “stdio.h” void main() int k,j,jrow=0; double max,a34=1,2,3,4,9,8,7,6,-10,10,-5,2; max=a00; for(k=0;k=2;k+) for(j=0; kmax ) max=akj; row =k; colum =j; printf(max=%f_,colum=%d_n,max,colum) 四、编程题1编写程序,统计4行4列的整数二维数组a主对角线(a00a33)中所有正数之和。void main() int i,j,sum=0;int a44=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16;for(i=0;i4;i+)for(j=0;j4;j+)if (j=i) sum=sum+aij;printf(sum=%d,sum);2 设计函数int diff(int array,int n)求取长度为n的数组array的元素最大值和最小值之差,并返回。int diff(int array,int n)int max= min =array0,j=0;for (;jmax) max=arrayj;else if (arrayjmin) min=arrayj;return (max-min);3 用循环实现以下格式的乘法口诀表的输出(每个数字间空一格:)1 2 4 3 6 9 4 8 12 16 5 10 15 20 256 12 18 24 30 367 14 21 28 35 42 498 16 24 32 30 48 56 649 18 27 36 45 54 63 72 81#include void main()int j,k;for (j=1;j=9;j+)for (k=1;k=j;k+)printf(“%d “,j*k);printf(“n”);4. 设计一个函数void outStr(char str) 要求将数组str保存的一个字符串的每个字符间添加空格显示输出。如字符串为”China”,应显示“C h i n a”。#include #include void outStr(char str)int j;for(j=length(str);j0;j-) str2*j=strj;str2*j-1= ;printf(“%sn”,str);5. 用二维数组建立34整数型矩阵,用键入每个矩阵元素的值,并计算其中所有的正数之和及负数之和。#include void main()int array34,j,k,sum1,sum2;for (j=0;j3;j+) for(k=0;k4;k+)scanf(“%d”,&arrayjk);sum1=sum2=0;for (j=0;j3;j+) for(k=0;k0) sum1+=arrayjk;else if (arrayjk0) sum1+=arrayjk;printf(“%d,%d” sum1,sum2);五、改错题:该错:以下程序实现定义结构体类型Student和建立其变量 zhang的功能,修改其中的错误命令行#1 #include “stdio.h”/ 改为:#include “string.h”#2 Student/ 改为:struct Student #3 char name20;#4 int No=0;/ 改为:int No;#5 char sex;#6 ;#7 void main()#8 #9 Student zhang;/ 改为:struct Student zhang;#10 =”张立”;/ 改为:strcpy(zhang,name, ”张立”);#11 zhang.No=10020;#12 zhang.sex=”m”;/ 改为:z

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论