C程序设计试题库
一、单项选择题
1.C语言的程序是从 C 开始执行的。
A. 程序的第一条语句 B. 程序的第一个函数 C. 程序的main( )函数
D. 包含文件中的第一个函数
2.A’+6的结果是 D 。
A. “F” B. ’F’ C. “G” D. ’G’ 3.以下可以定义为用户合法标识符的是 A 。
A. maine
B. 0_0
C. 12abc
D. float
4.设int a=5;则表达式a<5&&--a>5的运算结果和a的值分别是 B 。
A. 0和4 B. 0和5 C. 1和4
D. 1和5 5.对于int a=97, b='b'; printf(“%c,%d”, a , b);的结果是: B 。
A. 97, b
B.a,98
C. 97,98
D. a,b
6.C程序设计的三种基本结构是_ B ___。
A. 递归结构,循环结构,转移结构 B. 顺序结构,选择结构,循环结构 C. 嵌套结构,递归结构,顺序结构
D. 循环结构,转移结构,顺序结构
7.以下不正确的if语句是 D 。
A. if(x>y) printf(\"%d\\n\
B. if(x 8.当执行x=1; do { x=x*x; } while(x);程序段时,运行情况是 C 。 A. 循环体将执行一次 B. 循环体将执行两次 C. 循环体将执行无限次 D. 系统提示有语法错误 9.下面关于for循环的正确描述是 A 。 A. for循环的循环体可以是一个复合语句 B. for循环的循环体不能是一个空语句 C. for循环中,不能用break语句跳出循环体 D. for循环只能用于循环次数已经确定的情况 10.以下叙述正确的是 B 。 A. continue语句的作用是结束整个循环的执行 B. 只能在循环体内和switch语句体内使用break语句 C. 在循环体内使用break语句或continue语句的作用相同 D. 从多层循环嵌套中退出时只能使用goto语句 11.若有定义语句:int b; char c[10]; ,则下面正确的输入语句是 B 。 A. scanf(\"%d%s\ B. scanf(\"%d%s\ C. scanf(\"%d%s\ D. scanf(\"%d%s\ 12.设有数组定义:char array[]=\"China\";则数组array所占的存储空间为 C 。 A. 4个字节 B. 5个字节 C. 6个字节 13.以下叙述中,不正确的是 D 。 第 1 页 共 36 页 D. 7个字节 C程序设计试题库 A. 函数未被调用时,系统将不为形参分配内存单元 B. 实参与形参的个数应相等,且类型相同或赋值兼容 C. 实参可以是常量、变量或表达式 D. 形参可以是常量、变量或表达式 14.以下数组定义中不正确的是 D 。 A. int a[2][3]; B. int b[][3]={0,1,2,3}; D. int d[3][]={{1,2},{1,2,3},{1,2,3,4}}; C. int c[100][100]={0}; 15.若有说明:int a=2, *p=&a, *q=p;,则以下非法的赋值语句是 A 。 A. q=a; B.*p=*q; C.a=*q; D.p=q; 16.以下叙述不正确的是 D 。 A. 在C程序中,源程序均由若干个函数组成 B. 在C程序中,总是从main()函数开始执行 C. 在C程序中,%运算符只能用于整数的运算 D. 在C程序中,main()函数必须放在程序的开始部分 17.a=b+=c+5,若b=1,c=2,则a的值是 C 。 A. 1 B. 7 C. 8 D. 出错 18.以下可以定义为用户合法标识符的是 A 。 A. C_1 B. 1_C C. int D. char 19.设 a=5, b=6, c=7, d=8, m=2, n=2, 执行 (m=a>b)&&(n=c>d)后n的值为 B 。 A.1 B.2 C.3 D.4 20.scanf( )函数的地址表列是用 B 符号加上变量名表示变量的地址。 A. @ B. & C. # D. ! 21.关于运算符优先顺序描述中正确的是 C 。 A. 关系运算符 < 算术运算符 < 赋值运算符 < 逻辑运算符 B. 逻辑运算符 < 关系运算符 < 算术运算符 < 赋值运算符 C. 赋值运算符 < 逻辑运算符 < 关系运算符 < 算术运算符 D. 算术运算符 < 关系运算符 < 赋值运算符 < 逻辑运算符 22.在C语言中,if语句的圆括号内用以决定分支流程的表达式 D 。 A. 只能用逻辑表达式 C. 只能用逻辑表达式或关系表达式 B. 只能用关系表达式 D. 可以用任意表达式 23.有定义int t=0;程序段while( t = =1 ){ ……},则以下叙述中正确的是 A 。 A. 循环控制表达式的值为0 C. 循环控制表达式不合法 B. 循环控制表达式的值为1 D. 以上说法都不对 24.对于for(表达式1;;表达式3)可理解为 B 。 A.for(表达式1;0;表达式3) B.for(表达式1;1;表达式3) D. for(表达式1;表达式3;表达式3) C. for(表达式1;表达式1;表达式3) 25.以下叙述正确的是 B 。 A. continue语句的作用是结束整个循环的执行 第 2 页 共 36 页 C程序设计试题库 B. 只能在循环体内和switch语句体内使用break语句 C. 在循环体内使用break语句或continue语句的作用相同 D. 从多层循环嵌套中退出时只能使用goto语句 26.设有数组定义:char array[10]= \"China\";则数组array所占的存储空间为 D 。 A. 4个字节 B. 5个字节 C. 6个字节 D. 10个字节 27.若有char c[6]={‘c’,’d’,’\\0’,’e’ ’f’,’\\0’};则执行语句printf(“%s”,c);结果是__ C __。 A. cd\\0e f B. ‘c’’d’ C. cd D. cd ef 28.对于C语言的函数,下列叙述中正确的是 A 。 A. 函数的定义不能嵌套,但函数调用可以嵌套 B. 函数的定义可以嵌套,但函数调用不能嵌套 C. 函数的定义和调用都不能嵌套 D. 函数的定义和调用都可以嵌套 29.合法的数组定义是 D 。 A. int a[6]={\"string\C. char a={\"string\ B. int a[5]={0,1,2,3,4,5}; D. char a[]={0,1,2,3,4,5}; 30.若声明:int a, b, c, *d=&c;,从键盘读入三个整数分别赋给变量a、b、c,正确的语句是 A 。 A. scanf(\"%d%d%d\ C. scanf(\"%d%d%d\ B. scanf(\"%d%d%d\D. scanf(\"%d%d%d\ 31.十进制数1000对应八进制数和十六进制数分别为 A 。 A. 1750,3e8 A.double B.1752,3d8 B._total C.1750,3c8 C.sizeof D.1752,3b8 D.3D 32.下列合法的变量名是 B 。 33.设有int x=17;则表达式(x++*1/3)的值是 B 。 A. 4 B. 5 C.14 D.15 34.设变量f是单精度型,i是双精度型,则表达式10+’a’+i*f的值的数据类型为 B 。 A.int B.double C.float D.char 35.在C语言中,if语句用以决定分支的流程的表达式 D 。 A.只能用逻辑表达式 B.只能用关系表达式 D.可以用任意表达式 C.只能用逻辑表达式或关系表达式 36.循环控制语句for(x=0,y=0;(y!=99)&&(x<=4);x++); 最多可执行 C 次。 A.3 B.4 C.5 D.6 37.有定义int t=0;程序段while( t = =2 ){ ……},则以下叙述中正确的是 A 。 A.循环控制表达式的值为0 C.循环控制表达式不合法 B.循环控制表达式的值为1 D.以上说法都不对 38.执行语句: for(j=1;j++<=9;);后,变量j的值是 C 。 A.8 B.9 C.10 D.不确定 39.在定义int a[3][4]; 之后,对a的引用正确的是 C 。 A.a[2][4] B.a[1,3] C.a[0][3] D.a[3][0] 40.下面合法的数组定义是 B 。 第 3 页 共 36 页 C程序设计试题库 A.int a[]=\"string\"; B.char a[]=\"china\"; D.int s=\"string\"; C.int a[5]={0,1,2,3,4,5}; 41.判断字符串 s1 是否大于字符串 s2,应当使用 D 。 A. if( s1>s2 ) B. if( strcmp(s1,s2)<0) D. if(strcmp(s1,s2)>0) C. if(strcmp(s2,s1)>0) 42.在函数的定义格式中,下列可以省略的部分是 D 。 A.函数名 C.函数类型 B.函数体 D.函数参数 B.返回值以return语句中表达式值的类型为准 D.编译不通过 43.如果函数的类型和return语句中表达式的值的类型不一致,则 A 。 A.返回值的类型以函数类型为准 C.返回值的类型不能确定 44.若有说明:int b=2, *p=&b, *q=p;,则以下非法的赋值语句是 D 。 A.p=q; B.*p=*q; C.b=*q; D.q=b; 45.定义 int a[]={2,4,6,8,10,12},p=&a; 则*(p+5) 的值是 D 。 A.6 B.8 C.10 D.12 46.在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是 B 。 A.地址传递 B.单向值传递 D.传递方式由用户指定 C.双向值传递 47.函数返回值的类型应由 C 决定。 A.return语句中的表达式类型 C.定义函数所指定的类型 B.调用该函数的主调用函数类型 D.实参的类型 48.一个函数无返回值时,应选择下列的类型说明符是 C 。 A.static B.extern C.void D.无说明符 49.若有语句int *p, a=10; p=&a; 下面均代表地址的一组选项是 C 。 A.a, p, *&a A.*p+9 B.&*a, &a, *p B.*(p+8) C.&a, &*p, p C.*p+=9 D.*&p, *p, &a D.p+8 50.定义 int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a; 则数值为9的表达式是 B 。 51.十进制数2000相当十六进制数 D 。 A.7D3 B.7D2 C.7D1 D.7D0 52.下列选项中,不能用作标识符的是 D 。 A._2char_ B._char_2 C.char_2_ D.2_chart_ 53.下列表达式的值为0的是 B 。 A.3﹪5 B.3/5 C.3.0/5 D.3<5 54.设变量m是单精度型,n是双精度型,则表达式10+’a’+m*n的值的数据类型为 B 。 A.int B.double C.float D.char 55.x为奇数时值为“真”,x为偶数时值为“假”的表达式为 C 。 A.!(x%2==1) B. x%2==0 C. x%2 D.!(x%2) 56.C语言中while和do-while循环的主要区别是 A 。 第 4 页 共 36 页 C程序设计试题库 A.do-while的循环体至少无条件执行一次 B. while的循环控制条件比do-while的循环控制条件严格 C.do-while允许从外部转到循环体内 D.do-while的循环体不能是复合语句 57. for语句的一般形式如下: for(表达式1;表达式2;表达式3) 语句 ;,表示循环条件的是 B 。 A.表达式1 B.表达式2 C.表达式3 D.语句 58.以下对二维数组a 的正确定义的是 C 。 A.int a[3][]; B.float a(3,4); C.double a[1][4]; D.float a(3)(4); 59.调用strlen(“abcd\\0ef\\0g”)的返回值为 A 。 A.4 B.5 C.8 D.9 60.函数调用:strcat(strcpy(str1,str2),str3)的功能是 C 。 A.将串str1复制到串str2中后再连接到串str3之后 B.将串str1连接到串str2之后再复制到串str3之后 C.将串str2复制到串str1中后再将串str3连接到串str1之后 D.将串str2连接到串str1之后再将串str1复制到串str3中 61.C99建议把main函数指定为int型,因此main函数的最后都应该加上一个 B 语句。 A. return 1 A.A和B B.return 0 B.8和16 C.void C.0和1 D.sum D.&和# 62.从根本上说,计算机只能识别由 C 组成的指令。 3.设有int c,f=33;c=(5/9)*(f-32);则最终c的值是 C 。 A. 0.555555 B. 1 C.0 D.1.555555 .下列哪个语句是非法的 B 。 A.int a=1; B.float 2c=6.2; C.char _ab=’c’; D.float a,b=2.34; 65.在C语言中,if语句用以决定分支的流程的表达式 D 。 A.只能用逻辑表达式 B.只能用关系表达式 D.可以用任意表达式 C.只能用逻辑表达式或关系表达式 66.在C语言中,转义字符是由 D 符号开头的字符常量。 A.# B.& B.55 C.? D.\\ D.以上结果都不对 67.有下列语句:int a=55;a++;,则最终变量a的值为 A 。 A.56 C.54 68.负整数是以 C 形式存放在计算机内存中的。 A.原码 B.ASCII码 C.补码 D.莫尔斯码 69.在定义int a[2][3]; 之后,对a的引用正确的是 C 。 A.a[2][3] B.a[1,2] C.a[1][2] D.a[2][0] 70.下面合法的数组定义是 B 。 A.int a[5]=\"boy\"; B.char a[6]=\"girl\"; D.int s=\"string\"; C.int a[5]={0,1,2,3,4,5}; 71.int a=5;a+=3;,则最终a的值为 A 。 A. 8 B. 5 C. 3 D. 10 第 5 页 共 36 页 C程序设计试题库 72.在输出小数的时候,如果只想保留3位小数,应该用下列哪个格式字符输出形式? C 。 A.%f B.%5.4f B.for语句 C.%.3f D.%3d D.if语句 73.C语言中拥有跳出switch结构和跳出循环体双重功能的语句为 C 。 A.continue语句 C.break语句 74.数组名作为函数实参时,向形参传递的是数组首元素的 D 。 A.数值 B.大小 C.名字 D.地址 75.某些局部变量的值在函数调用结束后不消失而继续保留原值,这种局部变量称为 A 变量。 A.static B.auto C.register D.extern 76.下面合法的数组定义是 A 。 A.char a[5]=\"boy\"; B.char a[3]=\"girl\"; D.int ss=\"china\"; C.int c[4]={0,1,2,3,4,5}; 77.在C语言中,能代表逻辑值\"真\"的是 A 。 A.非0的数 B.非0整数 C.大于0的数 D.true 78.在输出小数的时候,如果只想保留4位小数,应该用下列哪个格式字符输出形式? B 。 A.%f B.%5.4f B.十六进制 C.%2.3f D.%3d D.八进制 79.数据在内存中是以 C 形式存放的。 A.十进制 C.二进制 80.在VC编译系统中,7/2的值为多少 A 。 A.3 B.3.5 C.不确定的数值 D.4 81. C语言可执行程序的开始执行点是 C 。 A.程序中第一条可执行语句 C.程序中的main函数 B.程序中第一个函数 D.包含文件中的第一个函数 82.下列合法的变量名是 B 。 A.123 B._total C.int D.3D 83. 在以下运算符中,优先级最高的运算符是 C 。 A.<= B.= C.% D.&& 84.下列赋值语句中不正确的是 B 。 A. a++; B.a= =b; C.a+=b; D. a=1,b=1; 85.在C语言的if语句中,用作判断的表达式为 D 。 A.只能用逻辑表达式 B.只能用关系表达式 D.可以用任意表达式 C.只能用逻辑表达式或关系表达式 86.字符型数据在微机内存中的存储形式是 B 。 A.原码 A.12 B.ASCII码 B.11 C.补码 C.10 D.莫尔斯码 D.以上结果都不对 87.有下列语句:int a=11;a++;,则最终变量a的值为 A 。 88.函数定义的缺省类型为 C 。 A.void B.float C.int D.char .凡是函数中未指定存储类别的局部变量,其隐含的存储类别为 B 。 A.static B.auto C.register D.extern 第 6 页 共 36 页 C程序设计试题库 90.已知字母A的ASCII码为十进制数65,且c2为字符型,则执行语句c2=’A’+6-3;后,c2为 A 。 A.’D’ B.68 C.不确定的数值 D.’C’ 二、填空题 1.如果程序中调用了printf函数,则需要预处理命令 #include 3.设x的值为15,n的值为2,则表达式x%=(n+=3)运算后x的值是 0 。 4.C语言表达式!(3<6)||(4<9)的值是 1 。 5.用来引用特定数组元素的数字称为 下标 。 6.定义int a[2][3];表示数组a中的元素个数是 6 个。 7.字符串比较的库函数是 strcmp ,只写函数名即可。 8.C语言中一个函数由 函数首部 和 函数体 两部分组成。 9.若有定义 int a[]={0,1,2,3},*p=&a[2]; 则 *(--p)的值是 1 。 10.若有定义 int a[]={2,4,6,8,10,12},*p=a; 则*(p+5) 的值是 12 。 11.在C语言中,格式输入操作是由库函数 scanf 完成的,格式输出操作是由库函数 printf 完成的。 12.在C语言中,说明变量为双精度的关键字是 double 。 13. 若有定义int a=10,则printf(\"%d, \\n\;语句的输出结果是 9 。 14. int x=2,y=3,z=4; 则表达式!(x+y) 19.若有语句char a[10]=\"windows\则n的值为 8 。 20.若有定义和语句:int a[4]={1,2,3,4},*p; p=&a[0]; ,则*p--的值是 1 。 21.C程序是由函数构成的,一个C程序中至少包含一个 主(main)函数 。 22.在VC++6.0编译环境下,double类型的数据在内存占 8 个字节。 23.若有定义float x=2.5,y=4.7; int a=7;,则表达式 x+a%3*(int)(x+y)%2/4 的值为 2.5 。 24.设x,y,z和k都是int型变量,则执行表达式:x=(y=2,z=4,k=6)后,x的值为 6 。 25.循环控制语句for(x=0,y=0;(y!=0)||(x<=5);x++); 最多可执行 6 次。 26.在循环体中,执行 break 语句能够立即结束本层循环,结束当前循环。 27.定义数组:int a[3][4]={{1,2},{0},{4,6,8,10}};a[1][3]的初值是 0 ,a[2][2]的初值是 8 。 28.判断字符串 s1 是否大于字符串 s2,用C语言应表示为 if(strcmp(s1,s2)>0) 。 29.若有定义:char s[20]=“windows8”, *ps=s;则*(ps+5)代表的字符是 w 。 30.定义数组“int a[3][4]={{1},{2},{3}};”,则a[1][1]元素的值为 0 。 31.程序设计的三种基本结构是顺序结构, 选择 结构和 循环 结构。 32.在VC++6.0编译环境下,char类型的数据在内存占 1 个字节。 33.若有定义 int x=3,y=2,z=1; 则表达式 z*=(x>y ? ++x :y++)的值是 4 。 34.若有定义int i=25;,循环语句while(i>=1)i- -;执行后i的值为 0 。 35.判断变量a、b的值均不为0的逻辑表达式为 a!=0&&b!=0(或其他等价表达式) 。 第 7 页 共 36 页 C程序设计试题库 36.在循环体中,执行 continue 语句能够立即结束本次循环,执行下一次循环。 37.C程序是由函数构成的,一个C程序中至少包含一个 主(main)函数 。 38.在VC++6.0编译环境下,int类型的数据在内存占 4 个字节。 39.C语言规定标识符只能由 字母 、 数字 和 下划线 组成。 40.若已知a=10,b=20,则表达式!(a41.字符串函数strlen的作用是:求出字符串的 长度(或实际长度或字符个数(不包含’\\0’)) 。 42.C语言的三大基本结构是: 顺序 结构、 选择 结构、 循环 结构。 43.假设变量a和b、t均为整型,借助t实现a、b中的值的交换,写出其实现交换的语句: t=a 、 a=b 、 b=t 。 44.C语言中float类型的数据在内存占 4 个字节。 45.判断变量a、b的值均为0的逻辑表达式为 a=0&&b=0 。 46.C语言的源程序必须通过 编译 和 连接 ,然后才能被 执行 。 47.C源程序的基本单位是 函数 。 48.定义为void类型的函数,表示其没有 返回值 。 49.指针变量是把另一个变量的 地址(指针) 作为其值的变量。 50.被调用函数中的 return 语句用来把表达式的值传回给调用函数。 51.C语言表达式!(3<6)||(4<9)的值是 1 。 52.已知char w; int x; float y; double z; 则表达式:w*x+z-y所求得的数据类型为 double(双精度) 。 53.设a,b,t 为整型变量,初值为a=7,b=9,执行完语句t=(a>b)?a:b后,t 的值是 9 。 54.设x,y,z和k都是int型变量,则执行表达式:x=(y=5,z=8,k=20)后,x的值为 20 。 55.设i为整型变量,则以下循环for(i=2;i!=0 ;)printf(“%d”,i--);执行的次数是: 2 。 56.定义数组:int a[3][4]={{1,2},{0,3},{4,6,8,10}};a[1][2]的初值是 0 ,a[2][1]的初值是 6 。 57.定义数组:char s[10]=”china”;,则printf(“%d”,strlen(s));的输出结果为 5 。 58.若有定义int x=123; 则printf(\"%d,%d,%d\\n\x/100, x/10%10 (或 x%100/10或其他结果正确的答案) ,x%10);,将x中的数值按照百位、十位、个位的顺序拆分并输出。 59.若有定义char a[]=\"windows\,则语句printf(\"%s\的输出结果是 windows8 。 60.若有定义:char s[20]=“student”, *ps=s;则*(ps+7)代表的字符是 \\0 。 61.已知char w; int x; float y; double z; 则表达式:w*x+z-y所求得的数据类型为 double(双精度) 。 62.整型变量x的值为23,语句\"printf(″%o\\\\n″,x);\"的输出结果为 27\\n 。 63.在C语言中,运算符的优先级最低的是 逗号 运算符。 .用条件运算符将语句“if (a>b) c=a; else c=b;”转换成等价的C语句是: c=a>b?a:b; 。 65.循环控制语句for(x=0,y=0;(y!=99)&&(x<4);x++); 最多可执行 4 次。 66.执行循环结构或switch结构中的 break 语句能够立即退出该结构。 67.若有char c[5]={‘c’,’d’,’\\0’,’e’,’\\0’};则执行语句printf(“%s”,c);结果是 cd 。 68.被调用函数中的 return 语句用来把表达式的值传回给调用函数。 69.执行代码:int i = 3,*p; p = &i;则*p+3的值是 6 。 70.定义数组:char str[10]=”china”; char *p = str;,则printf(“%c”,*(p+3));的输出结果为 n 。 第 8 页 共 36 页 C程序设计试题库 71.C语言程序基本执行单位是 函数 。 72.在VC++6.0中定义变量 int x;则sizeof(x)的值为 4 。 73.设a,b,t 为整型变量,初值为a=20,b=10,执行完语句t=(a>b)?a:b后,t 的值是 20 。 74.定义变量double x=3.8,则(int)x的值为 3 。 75.设i为整型变量,执行for(i=0;i<10;i++);后变量i的值是 10 。 76.定义数组:int a[3][4]={{1 },{0,3},{2,4,6,8}}; a[2][1]的值是 4 。 77.定义变量int a=2,b;执行代码b = a++;,则变量b的值是 2 。 78.若有定义int x=12,y;,则表达式y=x+1,x+2,x+3;的结果是 15 。 79.若有定义char a[]=\"abce\,则语句printf(\"%d\的输出结果是 1 。 80.定义char s[20]= \"student\则通过 p=s; 可以将指针变量p指向数组s。 81.C语言程序的工作过程是编辑、 编译 、连接、运行。 82.C语言中为了正确计算表达式,需要考虑运算的 优先级 和结合方向。 83.定义变量int a = 2,b;,则表达式b=1/(float)a的结果是 0.5 。 84.在C语言中,以 \\0 作为字符串结束标志。 85.在C语言中,存储\"a\"需占用 2 个存储单元。 86.若int x=2,y=13,z=4 则表达式x 1.用指针法将输入两个数字由大到小顺序排列。 #include int *p1,*p2,*p,a,b; printf(\"please enter two integer numbers:\"); scanf(\"%d,%d\ p1=&a ; } p2=&b; if(a{p=p1; p1=p2 ;p2=p;} printf(\"a=%d,b=%d\\n\ printf(\"max=%d,min=%d\\n\ *p1,*p2 ); return 0; } 2.将一个2行3列的矩阵转置成3行2列的矩阵。 #include 第 9 页 共 36 页 C程序设计试题库 { int i,j,a[2][3], b[3][2] ; int row=2,col=3; for(i=0;i for(n=100; n<=200 ;n++) {if( n%3==0 ) continue ; printf(\"%4d\ printf(\"\\n\"); return 0; } 4.通过指针变量输出数组a的10个元素。 #include { int i,a[10], *p=a ; printf(\"please enter 10 integer numbers:\"); for(i=0;i<10;i++) scanf(\"%d\ p++ ); p=a; for(i=0;i<10;i++,p++) printf(\"%d \ *p ); printf(\"\\n\"); return 0; } 第 10 页 共 36 页 C程序设计试题库 5.求出200-300之间满足三个数字之积为42且三个数字之和为12的数并输出结果。 #include int i; int a,b,c; for ( i=200;i<=300;i++ ) { } 6.输入一行字符,统计其中有多少个单词,单词之间用空格分隔开。 #include char string[81]; int i,num=0,word=0; char c; gets(string); ; for(i=0;(c=string[i])!='\\0';i++) if(c==' ') word=0 ; else if(word==0) { word=1; num++ ; } printf(\" %d\\n\} 7.编程实现,输出100-999之间所有的“水仙花数”。 #include int n; int a,b,c; for(n=100; n<=999 ;n++) a=n/100; a=i/100; b= i/10-a*10;(i/10%10) ; c=i%10; if ( (a+b+c==12)&&(a*b*c==42) ) } printf (\"%d\\n\ 第 11 页 共 36 页 C程序设计试题库 b= n/10%10 ; c=n%10; if( n==(a*a*a+b*b*b+c*c*c) ) { }}} printf(\"%d%d%d\\n\ 8.输入一个字符串,将字符串中的字符逆序输出。 #include scanf(\"%s\ n= strlen(a) ; for(i=0;i for(i=0;i 9.求8的阶乘(8!)。 #include while( i<=8 ) { t=t*i ; i=i+1或i++或i+=1 ; } printf(\"%d\\n\ return 0; } 第 12 页 共 36 页 C程序设计试题库 10.用数组处理输出Fibonacci数列的前20个数。 #include int f[20]={1,1}; for(i= 2 ;i<20;i++) f[i]= f[i-2]+f[i-1] ; for(i=0;i<20;i++) { if(i%5==0) printf(\"\\n\"); printf(\"%12d\ f[i] ); } printf(\"\\n\"); return 0; } 11.给定一个3*3的二维数组转置,即行列互换。 #include { int i,j,a[3][3], b[3][3] ; int row=3,col=3; for(i=0;i #include t = * p; * p = * q; * q = t; 第 13 页 共 36 页 C程序设计试题库 printf(\"swap: *p = %d *q = %d\\n\ } int main() { int x,y; scanf(\"%d%d\ swap(&x,&y); printf(\"main: x = %d y = %d\\n\ return 0; } 13.求3×3方阵各行的最大值。 #include scanf(\"%d\ for(i = 0; i < N; i++) { max = a[i][0]; for(j = 0; j < N; j++) if(a[i][j] > max) max = a[i][j]; printf(\"max[%d] = %d\\n\ } return 0; } 14.输出1-200之间的素数。 #include \"stdio.h\" #include \"math.h\" int isprime(int x); void main() { int i,m = 0; for(i = 1; i < 200;i++) { if(isprime(i)) { printf(\"%-5d\ 第 14 页 共 36 页 C程序设计试题库 } } } m++; if(m % 5 == 0) printf(\"\\n\"); printf(\"\\n\"); int isprime(int x) { } 15.输入一个不超过5位数的正整数,统计其位数。 #include int m,k,temp; k = 0; scanf(\"%d\ int k,j,flag; k = ( int )sqrt( x ); for(j = 2; j <= k;j++) { } return flag; if(x % j == 0) { } else flag = 1; flag = 0; break; temp = m; while(m > 0) } { } k++; m = m / 10; printf(\"%d是%d位正整数\\n\return 0; 16.下面程序的功能是计算3×3方阵各行的最大值,请填空。 #include 第 15 页 共 36 页 C程序设计试题库 #define N 3 int main() { for(i = 0; i < N; i++) } 17.下面程序的功能是在a数组中查找与x值相同的元素所在位置,请填空。 #include { int a[10],i,x; printf(\"input 10 integers:\"); for(i=0;i<10;i++) scanf(\"%d\ printf(\"input the number you want to find x:\"); scanf(“%d”, &x); for(i=0;i<10;i++) if(x == a[i]) break; if(i<10 ) printf(\"the pos of x is:%d\\n\ else printf(\"can not find x!\\n\"); return 0; } 18.下面程序的功能是统计大于零的整数个数和小于零的整数个数。当输入0时结束输入,请填空。 { } return 0; max = a[i][0]; for(j = 0; j < N; j++) if(a[i][j] > max) max = a[i][j]; int a[N][N],i,j,max; for(i = 0; i < N; i++) for(j = 0;j < N;j++) scanf(\"%d\ printf(\"max[%d] = %d\\n\ 第 16 页 共 36 页 C程序设计试题库 #include int main() { int n,i=0,j=0; printf(\"input a integer,0 for end\\n\"); scanf(\"%d\ while ( n或n!=0 ) { if(n>0) i = i+1; else j=j+1; } printf(\"i=%4d,j=%4d \ printf(\"\\n\"); return 0 ; } 四、阅读程序题 1.该程序运行结果为: 9 8 7 6 5 4 3 2 1 0 。 #include for(i=9;i>=0; i--) printf(\"%d \printf(\"\\n\"); return 0; } 2.该程序运行结果为: sum is 579.23 。 #include float a,b,sum; a=123.111; b=456.121; sum=a+b; printf(\"sum is %.2f\\n\ 第 17 页 共 36 页 C程序设计试题库 return 0; } 3.该程序运行结果为: 5040 。 #include printf(\"%d\\n\ return 0; } 4.该程序运行结果为: r 。 (假设由键盘输入的内容是: R ) #include ch=(ch>='A' && ch<='Z')?(ch+32):ch; printf(\"%c\\n\ return 0; } 5.该程序运行结果为: 大写:B,小写:b (假设键盘输入的内容为: B ) #include char c1,c2; c1=getchar(); c2=c1+32; printf(\"大写:%c,小写:%c\\n\ return 0; } 6.该程序运行结果为: 1 4 #include 第 18 页 共 36 页 C程序设计试题库 int main() 3 6 {int a[2][3]={{1,2,3},{4,5,6}}; int b[3][2],i,j; for (i=0;i<=1;i++) {for (j=0;j<=2;j++) {b[j][i]=a[i][j];}} for (i=0;i<=2;i++) {for(j=0;j<=1;j++) printf(\"%5d\ printf(\"\\n\");} return 0;} 7.该程序运行结果为: ************ #include {printf(\"************\\n\");} void print_message() {printf(\"How are you?\\n\"); } 8.该程序运行结果为: sum=15 (假设键盘输入的内容为: 1 2 3 4 5 6 7 8 9 #include for (i=0;i<3;i++) for (j=0;j<3;j++) scanf(\"%3d\ for (i=0;i<3;i++) sum=sum+a[i][i]; printf(\"sum=%d\\n\ return 0; 第 19 页 共 36 页 C程序设计试题库 } 9.下面程序的运行结果为: 3,2 。 #include c=a>b?a++:++b; return(c); } void main( ) {int x=1, y=2, z, r ; z=fan(x,y) ; r=fan(y,x) ; printf(\"%d,%d\ 10.下面程序运行结果为: lettc 。 (从键盘上输入”happy”。) #include char c; while((c=getchar())!='\\n') { if((c>='A'&&c<='V'-4)||(c>='a'&&c<='v')) c+=4; else if((c>='W'&&c<='Z')||(c>='W'&&c<='z')) c-=22; printf(\"%c\\n\ } } 11.下面程序运行结果为: 8 10 12 。 #include static int c=4;b=b+1;c=c+2; return(a+b+c);} void main() { int a=1,i; for(i=0;i<3;i++) printf(\"%4d,\ 12.下面程序运行结果为 21 。 #include int array[15],j; array[0]=0; 第 20 页 共 36 页 C程序设计试题库 array[1]=1; for(j=2;j<15;j++) array[j]=array[j-1]+array[j-2]; printf(\"%d\\n\ } 13.下面程序的运行结果为: 3,4 。 #include c=a>b?++a:b++; return(c); } void main( ) {int x=2, y=3, z, r ; z=fan(x,y) ; r=fan(y,x) ; printf(\"%d,%d\ 14.下面程序的运行结果为: 7,10,13 。#include static int c=1;b=b+2;c=c+3; return(a+b+c);} void main() { int a=1,i; for(i=0;i<3;i++) printf(\"%4d,\ } 15.下面程序的运行结果为: 3,36 。 #include while ((r=a%b)!=0) { a=b; b=r; } printf (\"%d,%d\\n\} 16.下面程序的运行结果为: 8 。 第 21 页 共 36 页 C程序设计试题库 #include int array[15],j; array[0]=0; array[1]=1; for(j=2;j<15;j++) array[j]=array[j-1]+array[j-2]; printf(\"%d\} 17.该程序运行结果为: sum=5050 。 #include printf(\"sum=%d\\n\ return 0;} 18.该程序运行结果为: 7 8 9 。 #include 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(\"%2d\ 19.该程序运行结果为: 9 8 7 6 5 4 3 2 1 0 。 #include int i,a[10]; for (i=0; i<=9;i++) a[i]=i; for(i=9;i>=0;i--) printf(\"%2d\ 第 22 页 共 36 页 C程序设计试题库 printf(\"\\n\");} 20.该程序运行结果为: 5 。 #include int a[3][3]={{1,2},{3,4},{5}}; int i,sum=0; for(i=0;i<3;i++) sum=sum+a[i][i]; printf(\"%d\\n\} 21.该程序运行结果为: BOY 。 #include {char a='B',b='O',c='Y'; putchar(a); putchar(b); putchar(c); putchar ('\\n'); return 0;} 22.该程序运行结果为: a 97 。 #include printf(\"%c %d\\n\ return 0;} 23.该程序运行结果为: 0 1 2 3 4 5 6 7 8 9 。 #include for (i=0; i<=9;i++) printf(\"%2d\ printf(\"\\n\");} 24.该程序运行结果为: 7 。 #include 第 23 页 共 36 页 C程序设计试题库 #include {char a[10]=”chinese”; int i; i=strlen(a); printf(\"%d\\n\} 25.下面程序的运行结果为: ABC 。 #include 26.下面程序运行结果为: 7 。 #include void main() { } 27.输入5回车后,下面程序运行结果为: 120 。 #include 第 24 页 共 36 页 float score=100; switch((int)score/10) { case 10: case 9: printf(\"A\"); case 8: printf(\"B\"); case 7: printf(\"C\"); break; case 6: printf(\"D\"); break; default: printf(\"Error\"); } int b=0; static int c=3;b=b+1;c=c+1; return(a+b+c); int a=2,i; for(i=0;i<3;i++) printf(\"%d\ C程序设计试题库 { int f; if(n<0) printf(\"n<0,data error!\"); else if(n==0 ) f=1; else f = fac(n-1)*n; return(f); } void main() { } 28.下面程序运行结果为 b[0]=5,b[1]=3,a[0]=5,a[1]=3 。 #include printf(\"b[0]=%d,b[1]=%d,\} void main() { int a[2]; } 29.下面程序的运行结果为: 3 4 。 #include a[0]=10; a[1]=5; fun(a); printf(\"a[0]=%d,a[1]=%d\\n\int n,y; scanf(\"%d\y=fac(n); printf(\"%d\\n\ 第 25 页 共 36 页 C程序设计试题库 } int a=13; switch(a%5) { case 0: printf(\"0\"); case 1: printf(\"1\"); case 2: printf(\"2\"); default: printf(\"3\"); } printf(\"4\\n\"); 30.下面程序的运行结果为: 21 。 #include 31.下面程序的运行结果为: 9,19 。 #include void main ( ) { } 32.下面程序的运行结果为: b0=5,b1=3,a0=3,a1=5 。 第 26 页 共 36 页 int a[][3]={1,2,3,4,5,6,7,8}; int i,sum=0; for(i=0;i<3;i++) sum+=a[i][i]+a[i][2-i]; printf(\"sum=%d\\n\ static int m=1,i=2; i+=m+1; m=i+a+b; return (m); int k=4,m=1,p1,p2; p1=func(k,m); p2=func(k,m); printf(\"%d,%d\\n\ C程序设计试题库 #include t=b0; b0=b1; b1=t; printf(\"b0=%d,b1=%d,\ } void main() { int a0=3,a1=5; fun(a0,a1); printf(\"a0=%d,a1=%d\\n\} 33.下面程序的运行结果为: CD 。#include case 9: printf(\"A\"); case 8: printf(\"B\"); break; case 7: printf(\"C\"); case 6: printf(\"D\"); break; default: printf(\"Error\"); } return 0; } 34.下面程序运行结果为: s=20 。#include s = 0; for(i = 0;i < 10;i++) { if(i % 2 == 1) 第 27 页 共 36 页 C程序设计试题库 } } continue; s = s + i; printf(\"s = %d\\n\return 0; 35.输入5回车后,下面程序运行结果为: student 。 #include char str[]=\"STUDENT\"; char *p; p = str; for(;*p != '\\0';p++) { *p = *p + 32; } printf(\"The result is:\\n\"); puts(str); return 0; } 36.下面程序运行结果为 5 6 7 。 #include static int c=2; b=b+1; c=c+1; return (a+b+c); } int main() { int a=1,i; for(i=0;i<3;i++) printf(\"%d\ printf(\"\\n\"); return 0; } 第 28 页 共 36 页 C程序设计试题库 五、程序设计题 1.用冒泡法对10个整数进行从小到大的排序。 #include int a[10]; int i,j,t; printf(\"input 10 numbers :\\n\"); for (i=0;i<10;i++) scanf(\"%d\ printf(\"\\n\"); for(j=0;j<9;j++) for(i=0;i<9-j;i++) if (a[i]>a[i+1]) {t=a[i];a[i]=a[i+1];a[i+1]=t;} printf(\"the sorted numbers :\\n\"); for(i=0;i<10;i++) printf(\"%d \ printf(\"\\n\"); return 0; } 2.输入一行字符,统计其中有多少个单词,单词之间用空格隔开。 #include char string[81]; int i,num=0,word=0; char c; gets(string); for (i=0;(c=string[i])!='\\0';i++) if(c==' ') word=0; else if(word==0) {word=1; num++; } printf(\"There are %d words in this line.\\n\ return 0; } 3.编写程序,根据输入的三角形的边长,判断是否能组成三角形,若可以则输出它的面积和三角形的类型(等 第 29 页 共 36 页 C程序设计试题库 腰,等边,直角,普通)。 #include 4.编写程序,实现从键盘出入年号和月份,计算当年的这一月共有多少天,并输出结果。 #include\"stdio.h\" void main() { } 5.编程求一个矩阵的转置矩阵。 #include int a[2][3]={{1,2,3},{4,5,6}}; int year,mon; scanf(\"%d,%d\switch(mon) { case 1:case 3: case 5: case 7:case 8: case 10: case 12: printf(\"%d\ case 4:case 6: case 9: case 11: printf(\"%d\case 2: } if(year%4==0 && year%100!=0 || year%400==0) printf(\"%d\else printf(\"%d\ 第 30 页 共 36 页 C程序设计试题库 int b[3][2],i,j; printf(\"array a:\\n\"); for (i=0;i<=1;i++) {for (j=0;j<=2;j++) {printf(\"%5d\ b[j][i]=a[i][j]; } printf(\"\\n\"); } printf(\"array b:\\n\"); for (i=0;i<=2;i++) { for(j=0;j<=1;j++) printf(\"%5d\ printf(\"\\n\"); } return 0; } 6.输入两个实数,用函数调用的方法求出它们的和,结果保留两位小数。 #include {float add(float x, float y); float a,b,c; printf(\"Please enter a and b:\"); scanf(\"%f,%f\ c=add(a,b); printf(\"sum is %.2f\\n\ return 0; } float add(float x,float y) {float z; z=x+y; return(z); } 7.两个乒乓球队进行比赛,各对出3人,每人与对方队的一人进行一场比赛,甲队出A B C三人,乙队出 XYZ三人。请编程找出所有可能的对阵情况。抽签后,有人向队长打听对阵情况,A说他不和X比,C说他不和X、Z比,编程找出三个对手名单。 #include \"stdio.h\" int main() 第 31 页 共 36 页 C程序设计试题库 { } 8.某班级有30个学生,每个学生有3门课程成绩。现要求编写输入成绩函数、输出成绩函数分别实现学生成绩的输入和输出,并编写函数计算出每个学生三门课程的平均成绩。 #include \"stdio.h\" #define N 30 #define M 3 void input(int a[][M]); void output(int a[][M]); int main() { } void input(int a[][M]) { } void output(int a[][M]) { int i,j; for(i = 0;i < N;i++) { for(j = 0;j < M;j++) printf(\"%5d\ 第 32 页 共 36 页 char i,j; for(i = 'A';i <= 'C';i++) for(j = 'X';j <= 'Z';j++) if(i == 'A' && j == 'X' || i == 'C' && j == 'X' || i == 'C' && j == 'Z') continue; else printf(\"%c -- %c\\n\ return 0; int a[N][M]; input(a); output(a); average(a); return 0; int i,j; for(i = 0;i < N;i++) for(j = 0;j < M;j++) scanf(\"%d\ C程序设计试题库 } } printf(\"\\n\"); void average(int a[][M]) { } 9.编程实现:从键盘上输入a和n的数值,计算a + aa + aaa + … + aaaaa;如输入变量a和n的值分别是2和5,则计算式为2 + 22 + 222 + 2222 + 22222;如输入变量a和n的值分别是3和5,则计算式为3 + 33 + 333 + 3333 + 33333。(提示:pow(x,y)表示xy,使用该函数需添加头文件math.h) #include \"stdio.h\" #include \"math.h\" int main() { } 10.编写冒泡排序函数,实现对一维数组进行排序,数组元素类型可自行定义。 #define N 5 int a,n,i,j; double sum = 0,m; scanf(\"%d%d\ for(i = 0; i < n; i++) { } printf(\"sum = %7.0lf\\n\return 0; m = 0; for(j = 0; j <= i; j++ ) m = m +a * pow(10.0,j); int i,j; double ave; for(i = 0;i < N;i++) { } ave = 0; for(j = 0;j < M;j++) ave = ave + a[i][j]; ave = ave / M; printf(\"The %dth student's average score :%7.2lf\\n\ sum = sum + m; 第 33 页 共 36 页 C程序设计试题库 #include \"stdio.h\" void sort_maopao(int * p); void main() { int a[N],i; for(i = 0; i < N;i++) scanf(\"%d\ printf(\"冒泡排序:\\n\"); sort_maopao(a); for(i = 0;i < N; i++) printf(\"%d \} void sort_maopao(int * p) { int i,j,t; for(i = 0; i < N; i++) for(j = 0; j < N - 1 - i;j++) { if(p[j] < p[j + 1]) { t = p[j]; p[j] = p[j + 1]; p[j + 1] = t; } } } 11.编写程序实现如下图的乘法口诀表。(其他答案,只要能实现相应功能,也可得相应分数) #include \"stdio.h\" int main() { int x,y; for(x = 1;x < 10; x++) { 第 34 页 共 36 页 C程序设计试题库 } } for(y = 1;y <= x; y++) printf(\"%d*%d=%d \printf(\"\\n\"); return 0; 12.输入10个数,编写两个函数分别求其最大值和平均值。(其他答案,只要能实现相应功能,也可得相应分数) #include \"stdio.h\" int main() { } int max(int a[]) { } double average(int a[]) { } 13.编程实现如下图的二维数组的输入输出。(其他答案,只要能实现相应功能,也可得相应分数) 第 35 页 共 36 页 int max(int a[]); double average(int a[]); int a[10],i,m; double aver; for(i = 0;i < 10;i++) scanf(\"%d\m = max(a); aver = average(a); printf(\"max = %d average = %5.2lf\\n\return 0; int i,m; m = a[0]; for(i = 1; i < 10;i++) { } return m; if(a[i] > m) m = a[i]; double s = 0; int i; for(i = 0;i < 10; i++) s = s + a[i]; s = s /100; return s; C程序设计试题库 2 4 5 6 8 #include scanf(\"%d\ for(i = 0;i < 3;i++) { for(j = 0;j < 3;j++) if(i == 1 || j == 1) printf(\"%2d \ else printf(\" \"); printf(\"\\n\"); } return 0; } 第 36 页 共 36 页
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- 91gzw.com 版权所有 湘ICP备2023023988号-2
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务