收藏 分销(赏)

C语言复习题2.doc

上传人:天**** 文档编号:3059936 上传时间:2024-06-14 格式:DOC 页数:18 大小:128.50KB
下载 相关 举报
C语言复习题2.doc_第1页
第1页 / 共18页
C语言复习题2.doc_第2页
第2页 / 共18页
点击查看更多>>
资源描述
题型: l 选择题(20题×2′=40分) l 填空题(15空×2′=30分) l 编程题:(4题共30分) 红色为参考解答 一、选择题 (1) 以下叙述中正确的是( )C A) C语言程序将从源程序中第一个函数开始执行。 B) 可以由在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行。 C) C语言规定必须用main作为主函数名,程序将从此开始执行,在此结束。 D) main可以作为用户标识符,用户可以命名任意一个函数作为主函数。 (2) 若有定义语句:char s[10]=”1234567\0\0”; 则strlen(s)的值是( ) A A)7 B)8 C)9 D)10 (3) 若有定义:float x=1.5;int a=1,b=3,c=2;则正确的switch语句是( )B A) switch(x) B) switch((int)x) {case 1.0:printf("*\n"); {case 1:printf("*\n"); case 2.0:printf("**\n");} case 2:printf("**\n");} C) switch(a+b) ; D) switch(a+b) {case 1:printf("*\n"); {case 1:printf("*\n"); case 2+1:printf("**\n");} case c:printf("**\n");} (4) 有以下程序 D void main( ) { int a[]={0,2,4,6,8}, *p=a, *q=p+3; printf("%d\n", *p + *q); } 程序运行后的输出结果是( )  A) 10  B) 4  C) 8  D) 6 (5) 若有定义:int x=0, *p=&x;,则语句printf("%d\n",*p);的输出结果是( )B A)随机值 B)0 C)x的地址 D)p的地址 (6) 下列叙述中错误的是( )A A) 一个C语言程序可以包含多个main函数 B) C程序可以由多个程序文件组成 C) C程序可以由一个或多个函数组成 D) 在C程序的函数中不能定义另一个函数 A) and_2007 B) abc C)int D) Double (7) 设有int x=11; 则表达式 x % 5的值是( ) A A) 1 B) 2 C) 3 D) 4 (8) 以下的for循环( )C for(x=0; x<10; x + =2 ); A) 是无限循环 B)循环次数不定 C)执行5次 D)执行4次 (9) 以下错误的定义语句是( )C A)int x[][3]={{0},{1},{1,2,3}}; B)int x[4][3]={{1,2,3},{1,2,3},{1,2,3}}; C)int x[4][]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}}; D)int x[][3]={1,2,3,4}; (10) C语言中while和do-while循环的主要区别是( ).A A)do-while的循环体至少无条件执行一次 B)while的循环控制条件比的循环控制条件严格 C)do-while允许从外部转到循环体内 D)do-while的循环体不能是复合语句 (11) 对于基类型相同的两个指针变量之间,不能进行的运算是 ( ) A A) < B) = C) + D) - (12) 设有定义:int n1=0,n2,*p=&n2,*q=&n1;,以下赋值语句中与n2=n1;语句等价的是( )A  A)*p=*q;  B)p=q;  C)*p=&n1;  D)p=*q; (13) 以下叙述错误的是( )D A) 用户定义的函数中可以没有return语句 B) 用户定义的函数中可以有多个return语句,一次调用可以返回多个值 C) 用户定义的函数中若没有return语句,则应当定义函数的类型为void类型 D) 函数的return语句中可以没有表达式 (14) 有以下程序C #include <stdio.h> int fun(int x,int y) { if(x>y) return x; else return y; } void main( ) { int a=4,b=5; printf("%d\n",fun(a,b)); } 程序运行后的输出结果是( )  A) 3  B) 4  C) 5  D) 6 (15) 以下叙述中错误的是( )D A)在程序中凡是以”#”开始的代码行都是预处理指令行 B)预处理指令行的最后不能以分号表示结束 C)#define MAX是合法的宏定义指令行 D)C程序对预处理指令行的处理是在程序执行的过程中进行的 (16) 按照C语言的用户标识符命名规则,不能出现在标识符中的是( )D A) 字母    B) 数字   C) 下划线     D) 连接符 (17) 若有定义语句int a[3][2];按在内存中的存放顺序,a数组的第3个元素(a[0][0]是第一个元素)是( )A A) a[1][0] B) a[1][1] C) a[0][0] D) a[0][1] (18) 以下不合法的标识符是( )A A) for    B) a_b   C) print     D) x1 (19) 若函数中有定义语句:int k;,则( )B A)系统将自动给k赋初值0 B)这时k中的值无定义 C)系统将自动给k赋初值-1 D)这时k中无任何值 (20) 以下叙述中正确的是( )D A) 函数的定义可以嵌套,但函数的调用不可以嵌套。 B) 函数的定义不可以嵌套,但函数的调用可以嵌套。 C) 函数的定义和调用都不可以嵌套。 D) 函数的定义和调用都可以嵌套。 (21) 下面关于标识符的叙述不正确的是( )B   A)标识符中可以有数字 B)关键字可以做标识符   C)标识符中可以有大写字母 D)标识符中可以有下划线 (22) 以下关于字符串的叙述中正确的是( )B A) C语言中有字符串常量和变量 B) C语言中没有字符串变量 C) 可以用关系运算符对字符串大小进行比较 D) 所有字符串末尾都有结束标志 (23) 若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是( )D A)函数的实参和其对应的形参共占同一存储单元 B)形参只是形式上的存在,不占用具体存储单元 C)同名的实参和形参占同一存储单元 D)函数的形参和实参分别占用不同的存储单元 (24) 以下不合法的标识符是( )C A)j2_key B) Int C)4d D)_8_ (25) 设有语句int a=3;则执行了语句a+=a-=a*a;后,变量a的值是( ) D A) 3 B) 0 C) 9 D) –12 (26) 在C程序中,若对函数类型未加说明,则函数的隐含类型为( )。A A)int B)double C)void D)char (27) 设变量定义为int a, b;,执行下列语句时,输入( ),则a和b的值都是10。D scanf("a=%d, b=%d",&a, &b); A)10 10 B)10, 10 C)a=10 b=10 D) a=10, b=10 (28) 设变量定义为int a[4];,则表达式( )不符合C语言语法。D A) *a B) a[0] C) a D) a++ (29) 下列程序输出结果是( ) C #include <stdio.h> void main( ) { int k=5; k--; printf("%d",++k); } A) 3 B) 4 C) 5 D) 6 (30) 有以下程序A #include <stdio.h> void main( ) { int x,y,z; x=y=1; z=x++,y++; printf("%d,%d",x,y); } 程序运行后的输出结果是( ) A) 2,2 B) 2,3 C) 3,2 D) 1,2 (31) 以下能正确定义字符串的语句是( )D A) char str=”kx43”; B) char str=”; C) char str[]={‘\064’}; D) char str[]=”\0”; (32) 已知大写字母A的ASCII码是65,小写字母a的ASCII码是97,以下不能 将变量c中的大写字母转换为小写字母的语句是( )D A)c=(c-‘A’)%26+’a’; B)c=c+32; C)c=c-‘A’+’a’; D)c=(‘A’+c)%26-‘a’; (33) 下列程序段的输出结果是( )C #include <stdio.h> void main( ) { int t=1,i=5; for(;i>=0;i--) t*=i; printf("%d\n",t); } A)5 B)120 C)0 D)1 (34). 执行以下程序后,j的值是多少( )A #include <stdio.h> main() { int i,j=0; for(i=0;i<3;i++) { if(i%2= =0) continue; j++; } printf("%d\n",j); } A)1    B)2   C)3   D)4 (35) 在C语言中,函数返回值的类型最终取决于 ( )A A) 函数定义时在函数首部所说明的函数类型 B) return语句中表达式值的类型 C) 调用函数时主调函数所传递的实参类型 D) 形式参数的类型 (36) 设有以下语句C typedef struct TT { char c; int a[4]; }CIN; 则下列叙述正确的是( ) A)可以用TT定义结构体变量   B)TT是struct类型的变量 C)可以用CIN定义结构体变量  D)CIN是struct TT类型的变量 (37) 下列程序输出结果是( ) C #include <stdio.h> void main( ) { int k=5; printf("%d",k++); } A) 3 B) 4 C) 5 D) 6 (38) 若变量已正确定义,语句if(a>b) k=0; else k=1; 和( )等价。C A) k=(a>b)?1:0; B) k=a>b; C) k=a<=b; D) a<=b ? 0 : 1; (39). 执行以下程序后,j的值是多少( )A #include <stdio.h> main() { int i,j=0; for(i=0;i<3;i++) { if(i%2==0) continue; j++; } printf("%d\n",j); } A)1    B)2   C)3   D)4 (40)有以下程序 B void fun(int *a, int *b) { a=b; (*a)++; } main () { int a=3, b=4, *p1, *p2; p1=&a; p2=&b; fun(p1,p2); printf(“%d%d\n”,a,b); } 程序运行后的输出结果是( ) A) 3 4 B) 3 5 C) 4 4 D) 4 5 (41) 表达式3.6-5/2+1.2+5%2的值是( )D A)4.3 B)4.8 C)3.3 D)3.8 (42) 下列程序输出结果是( )A #include <stdio.h> void main( ) { int k=5; while(--k) printf("%d",k-=3); printf("\n"); } A)1 B)521 C)52-1 D)41 (43) C语言源程序名的后缀是( )B A) .exe  B) .c  C) .obj D) .cpp (44) 按照C语言的用户标识符命名规则,不能出现在标识符中的是( )D A) 字母    B) 数字   C) 下划线     D) 连接符 (45) 有以下程序C #include <stdio.h> void main( ) { int i, s=0, t[ ]={1,2,3,4,5,6,7,8,9}; for(i=0; i<9; i+=2) s+=*(t+i); printf("%d\n", s); } 程序执行后的输出结果是( ) A)45 B)20 C)25 D)36 (46) 设有int x=21; 则表达式 x % 5的值是( ) A A) 1 B) 2 C) 3 D) 4 (47) 设有int x=11; 则表达式5/2+ x % 3的值是( ) C A) 2 B) 3 C) 4 D) 0 (48) 有以下程序 C #include <stdio.h> int fun(int x,int y) { if(x>y) return x; else return y; } void main( ) { int a=4,b=5; printf("%d\n",fun(a,b)); } 程序运行后的输出结果是( )  A) 3  B) 4  C) 5  D) 6 (49) 下列程序输出结果是( ) C #include <stdio.h> void main( ) { int k=5; k++; printf("%d",k++); } A) 3 B) 4 C) 5 D) 6 (50) 若有定义语句int a[3][4];按在内存中的存放顺序,a数组的第8个元素(a[0][0]是第一个元素)是( )A A) a[1][3] B) a[1][4] C) a[0][3] D) a[0][4] (51) 若变量已正确定义为int型,要通过语句scanf(“%d,%d,%d”, &a,&b,&c); 给a赋值1,给b赋值2,给c赋值3,以下输入形式中错误的是( )B A)□□□1,2,3↙ B)1□2□3↙ C)1,□□□2,□□□3↙ D)1,2,3↙ (52) 以下关于函数的叙述中正确的是( )C A)每个函数都可以被其它函数调用(包括main函数) B)每个函数都可以单独运行 C)每个函数都可以被单独编译 D)在一个函数内部可以定义另一个函数 (53) 若要求定义具有10个int型元素的一维数组a,则以下定义语句中错误的是( )D A)#define N 10       B)#define n 5 int a[N];  int a[2*n]; C)int a[5+5];         D)int n=10,a[n];              (54) 下列程序段的输出结果是 ( ) A void fun(int *x, int *y) { printf(“%d %d”, *x, *y); *x=3; *y=4;} main() { int x=1,y=2; fun(&y,&x); printf(“%d %d”,x, y); } A) 2 1 4 3 B) 1 2 1 2 C) 1 2 3 4 D) 2 1 1 2 (55) 以下叙述中正确的是( )C A) C语言程序将从源程序中第一个函数开始执行。 B) 可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行。 C)C语言规定必须用main作为主函数名,程序将从此开始执行,在此结束。 D) main可以作为用户标识符,用户可以命名任意一个函数作为主函数。 (56)有以下程序 A #include <stdio.h> void main( ) { char *p[10]={"abc","aabdfg","dcdbe","abbd","cd"}; printf("%d\n",strlen(p[4])); } 执行后输出结果是( ) A)2 B)3 C)4 D)5 (57) C语言源程序名的后缀是( ) B A) .exe  B) .c  C) .obj D) .cpp (58) 有以下程序段 C int k=0; while(k=1)k++; while 循环执行的次数是 ( ) A) 无限次 B) 有语法错,不能执行 C) 一次也不执行 D) 执行1次 (59) 当调用函数时,实参是一个数组名,则向函数传送的是 ( ) B A) 数组的长度 B) 数组的首地址 C) 数组每一个元素的地址 D) 数组每个元素中的值 (60) 下列程序输出结果是( )D #include <stdio.h> void main( ) { int k=5; k++; printf("%d",k++); } A) 3 B) 4 C) 5 D) 6 (61) 有以下程序 B #include<stdio.h> int f(int x,int y) { return((y-x)*x); } void main() { int a=3,b=4,c=5,d; d=f(f(a,b),f(a,c)); printf(“%d\n”,d); } 程序运行后的输出结果是( ) A)10 B)9 C)8 D)7 (62) 下面关于标识符的叙述不正确的是( )B   A)标识符中可以有数字 B)关键字可以做标识符   C)标识符中可以有大写字母 D)标识符中可以有下划线 (63) 有以下程序 D #include <stdio.h> void main( ) { int a=1,b=0; printf("%d,",b=a+b); printf("%d",a=2*b); } 程序运行后的输出结果是( ) A) 0,0 B) 1,0 C) 3,2 D) 1,2 (64)设变量a、b、c、d和y都已正确定义并赋值。若有以下if语句  if (a<b) if(c= =d) y=0;  else y=1; 该语句所表示的含义是( ) C A) B) C) D) (65)若有定义语句:int m[ ]={5,4,3,2,1},i=4;则下面对m数组元素的引用中错误的是( ) C A)m[i] B)m[2*2] C)m[m[0]] D)m[m[i]] (66) 有以下程序 B #include <stdio.h> int fun(int x,int y) { if(x==y) return(x); else return ((x+y)/2); } void main() { int a=4,b=5,c=6; printf(“%d\n”,fun(2*a,fun(b,c))); } 程序运行后的输出结果是 A)3 B)6 C)8 D)12 填空题 (1) 结构化程序设计中的三种基本结构是顺序结构、选择结构和()。循环结构 (2)当定义一个无返回值函数时,则函数的返回值类型是()。int (3) 在C语言中整数可用()进制数、十进制数、十六进制数三种数制表示。八 (4)若有char a[3]="ab";则*a=(),*(a+2)=()。a \0 (5)设y是int型变量,请写出判断y为偶数的关系表达式()y%2= =0 (6)已知a=3,b=2,则表达式a*=b+8的值是()。30 (7) C语言中的实型变量分为两种类型,分别是()和双精度。单精度 (8)在C程序中,可用()语句结束本次循环,跳过循环体重下面尚未执行的语句,提早进入下一次的循环。 continue (9) 当a=5,b=4,c=2时,表达式a>b!=c的值是()。1 (10) 设有定义语句:int a[3][4]={{1,2},{0},{4,6,8,9}},则数组元素a[2][1]的值是 ()。6 (11) C程序是由函数构成的,一个C源程序至少包含一个()函数。main (12)设有说明语句int a[3][4],则数组a中包括了()个数据元素12 (13)a数组定义如下:char a[3];则a数组中可用最小下标是(),最大下标是()。0 2 (14) 表达式 strlen(”hello”) 的值是()。5 (15) 在循环语句中,break语句的作用是()。 退出循环 (16) C语言源程序的基本单位是()。函数 (17) 表示“x≥y≥z”的C表达式是()。x>=y && y>=z (18) 在C语言中,表示逻辑“真”值用()。 1 (19) 若有int a[3][2] = {{1},{3,2},{4,5}};,则a[1][1]的值是 (),a[2][0]的值是 () 2 4 (20) )以下程序运行后的输出结果是()。 3 4 #include <stdio.h> void main() {int i,j; for(i=6;i>3;i--)j=i; printf(”%d%d\n”,i,j); } (21) 有以下程序 6  #include <stdio.h>  #define f(x) x*x  main()  { int a=2,s;    s=f(a+1);    printf(“%d\n’,s);  }  程序运行后的输出结果是()。 (22) 下面程序的功能是计算s的值:s=1!+2!+3!+……+n!,其中n由键盘敲入,n<30,请填空补充完整。 #include <stdio.h> void main( ) { long s, t; int i, n; printf("input n(n<30):"); scanf("%d", &n); ();s=0; ();t=1; for(i=1; i<=n; i++) { ();t=t*i; s+=t; } printf("1!+2!+3!+…+%d!=%ld\n", n, s); } (23) 以下程序的运行结果是()7 8 9 int f(int a) { int b=0; static int c=3; b=b+1; c=c+1; return(a+b+c); } void main( ) { int a=2,i; for(i=0;i<3;i++) printf(“%d ”,f(a)); } (24)求e的近似值,直到某一项的值小于或等于10-7为止。 将下列程序补充完整。 #include <stdio.h> void main( ) { int n; double t,sum,m; n=1; (); sum=1; m=1; do { (); t=1/m; sum+=t; n++; ( ); m=m*n; } while(t>1e-7); printf("e=%f\n",sum); } (25) 有以下程序 #include<stdio.h> int f(int x,int y) { return((y-x)*x); } void main() { int a=3,b=4,c=5,d; d=f(f(a,b),f(a,c)); printf(“%d\n”,d); } 程序运行后的输出结果是( )9 (26)以下程序的输出结果是( ) #include <stdio.h> void main() { int a[3][3]={{1,2,9},{3,4,8},{5,6,7}},i,s=0; for ( i=0; i<3; i++) s+=a[i][i]+a[i][3-i-1]; printf("%d\n",s); }30 (27)以下程序运行后的输出结果是( )。 void main( ) { int x=10,y=20,t; t=x;x=y;y=t; printf(“%d,%d \n”,x,y); }20 10 (28)执行以下程序后,输出‘#’号的个数是( )。#### #include <stdio.h> void main( ) { int i; for(i=1; i<5; i++) putchar('#'); } (29)执行语句 for(m=1; m<=5; ) m++; 后,变量m的值是( )6 (30) 已知字母A的ASCII码为65。以下程序运行后的输出结果是( ) #include <stdio.h> void main( ) { char a, b; a=’A’+’5’-’3’;  b=a+’6’-’2’ ; printf("%d %c\n", a, b); }67 G (31) 以下程序中,函数fun的功能是计算x2-2x+6,主函数中将调用fun函数计算: y1=(x+8)2-2(x+8)+6 y2=sin2(x)-2sin(x)+6 请填空。 #include"math,h" double fun(double x) { return(x*x-2*x+6); } void main() { double x,y1,y2; printf("Enter x:"); scanf("%lf",&x); y1=fun( );x y2=fun( );sin(x) printf("y1=%lf,y2=%lf\n",y1,y2); } (32) 以下程序的功能是:通过函数func输入字符并统计输入字符的个数。输入时用字符@作为输入结束标志。请填空。 #include <stdio.h> long ; /* 函数说明语句*/ func( ); void main( ) { long n; n=func(); printf(“n=%ld\n”,n); } long func( ) { long m; for(m=0;getchar()!=’@’; m++ ); m++; return m; } (33)以下程序运行后的输出结果是( )。 void main( ) { int x=10,y=20,t; t=x;x=y;y=t; printf(“%d,%d \n”,x,y); } 20 10 (34)执行以下程序后,输出‘*’号的个数是( )。5 #include <stdio.h> void main( ) { int i; for(i=0; i<10; i+=2) putchar('*'); } (35)执行语句 for(m=1; m<=5; m++) ; 后,变量m的值是( )。6 (36) 以下程序运行后的输出结果是( )。 #include <stdio.h> void main( ) { int x=0210;  printf("%X\n",x); }88 (37) 若整型变量a和b中的值分别为7和9,要求按以下格式输出a和b的值: a=7 b=9 请完成输出语句:printf(“ ”,a,b);a=%d\nb=%d\n (38) 已知a=6,则赋值表达式a+=a-=a*=a的值是( ) 0 (39) 以下程序的输出结果是( )。1 3 #include <stdio.h> void fun(int x) { if(x/2>0) fun(x/2); printf(“%d”,x); } void main( ) { fun(3); printf(“\n”); } (40)有以下程序 int fun(int n) { if(n= =1) return 1; else return ( n+fun(n-1 ) ); } void main( ) { int x; scanf ("%d",&x); x=fun (x); printf ("%d\n",x); } 执行程序时,给变量x输入10,程序的输出结果是( )55 (41)下面rotate函数的功能是:将n行n列的矩阵A转置为A’, 请填空。例如: 当A= ,则A’= #include <stdio.h> #define N 4 void rotate(int a[][N]) { int i,j,t; for(i=0;i<N;i++) for(j=0; ();j++) j<i { t=a[i][j]; ();a[i][j]=a[j][i] a[j][i]=t; } } 编程题: (1) 有一函数: 编写一程序,输入一个x值,输出y值。 P58例4-1 #include <stdio.h> void main() { int x,y; printf("Please input the value of x:"); scanf("%d",&x); if (x<0) y=-1; if (x==0) y=0; if (x>0) y=1; printf("The value of y is %d\n",y); } (2) 输入一个字符,判断它是否是小写字母。如果是,将它转化成大写字母;如果不是,不转换。 P86 习题第4章三、1(类似) 方法一: #include <stdio.h> void main() { char ch; scanf("%c",&ch); ch=(ch>='a' && ch<='z')?(ch-32):ch; printf("%c\n",ch); } 方法二: #include <stdio.h> void main() { char ch; scanf("%c",&ch); if(ch>='a' && ch<='z') ch=ch-32; printf("%c\n",ch); } (3) 用for循环写出求整数1~100(包含100)中所有奇数的和的程序。 P76例4-13 (类似) #include <stdio.h> void main() { int i,sum=0; i=1; for(i=1;i<=100;i++,i++) sum=sum+i; printf("sum=%d\n",sum); } (4) 编写程序求出所有满足以下条件的三位整数:其各位数字的立方和等于该数本身。例如:153=。 P81例4-19 #include <stdio.h> void main() { int i,a,b,c; printf("100-000之间的水仙花数有:\n"); for(i=100;i<1000;i++) { a=i/100; b=i/10%10; c=i%10; if (a*a*a+b*b*b+c*c*c==i) printf("%d\n",i); } } (5) 有三个整数a、b、c,由键盘输入,输出其中最大的数。 P59例4-2 (类似) #include <stdio.h> void main() { int a,b,c,max; printf("Please input the data of a、b 、c\n"); scanf("%d,%d,%d",&a,&b,&c); if(a>b) if (a>c) max=
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服