1、中国地质大学(北京)继续教育学院 2015 年 01 课程考试第 1 页(共 23 页)C 语言程序设计模拟题一、简答题1、简述 C 语言程序的结构。C 程序结构 : 头文件; 局部函数声明; 局部定义声明; 全局变量 声明; 全局函数声明; 引用外部函数声明; C 代码( C 函数);二、选择题1、 下面程序段的输出结果是【1】。Cint a=60;a+=a-=a+a;printf(“%dn”,a);A) 120 B) 60C) -120 D) -602、 下面正确的字符常量是【2】。CA) c B) /C) “w” D) 3、 以下不能用作标识符的是【3】。CA) _26 B) Scanf
2、C) case D) Double4、 下面程序段中循环体执行的次数是【4】。Cint a=10, b=0;do b+=2; a-=2+b; while(a=0);A) 1B) 2C) 3D) 45、 以下关于函数的叙述正确的是【5】。DA) 函数中必须要有 return 语句B) 函数中可以有多个 return 语句,但只有一个被执行中国地质大学(北京)继续教育学院 2015 年 01 课程考试第 2 页(共 23 页)C) return 语句中必须有一个表达式D) 函数中定义的变量不能与其它函数中的变量同名6、 满足 x 为奇数时值为真,x 为偶数时值为假的表达式是【6】。CA) !(x%
3、2=1) B) x%2=0C) x%2 D) !(x%2)7、 以下语句中无法正确赋值的是【7】。BA) char b10=H, e, l, l, o, !;B) char b10; b=“Hello!”;C) char b10; strcpy(b, “Hello!”);D) char b10= “Hello!”;8、 若有以下的定义和语句,则值为 5 的表达式是【8】。Cint a=1,2,3,4,5,6,7,8,9,10;A) a5 B) aa4C) aa3 D) aa59、 若有定义:int k=7;float a=2.5,b=4.7;则表达式 a+k%3*(int)(a+b)%2/4
4、的值是【9】。BA) 2.750000B) 2.500000C) 3.500000D) 0.00000010、 已知 ch 是字符型变量,下面正确的赋值语句是【10】。CA) ch=” B) ch=123C) ch=xff D) ch=0811、 下面程序的运行结果是:【11】。D void main()char c=a;if(0b 后,变量 a 的值为【12】。AA) 0 B) 1C) 4 D) 513、 以下程序的运行结果是【13】。C#include void main() int x1=3,x2=1,x3=1;if(x1=x2+x3) printf(“*”);else printf(“
5、#”);A) 存在语法错误 B) 无输出结果C) 输出* D) 输出#14、 下面程序段的输出结果是【14】。#include char p110= “abc”, p2=“ABC”, str50= “xyz”;strcpy(str+2, strcat(p1,p2);printf(“%sn”,str);A) xyabcABC B) zabcABCC) yzabcABC D) xyzabcABC15、 设有:int a=1,b=2,c=3,d=4,m=2,n=2;执行(m=ab)void fun1() x=3; y=4; void fun2(int x,int y) printf(“%d,%dn”
6、,x,y); void main() fun1(); printf(“%d,%d,”,x,y);fun2(5,6);A) 3,4,5,6 B) 1,2,5,6C) 1,2,3,4 D) 3,4,1,218、 下面程序执行时,while 的循环次数是【18】。Dint i=0;while(i2!1 D) a2026、设有程序段 int k=10;while (k=0) k=k-1;则下面描述中正确的是:【26】CA)while 循环执行 10 次B)循环是无限循环中国地质大学(北京)继续教育学院 2015 年 01 课程考试第 6 页(共 23 页)C)循环体语句一次也不执行D)循环体语句执行一
7、次27、判断两个字符串 s1 和 s2 相等的正确语句是【27】。DA) if(s1=s2) B) if(s1=s2)C) if(strcpy(s1,s2) D) if(strcmp(s1,s2)=0)28、以下正确的字符常量的定义为【】。DA、c B、“cj”C、 abc D、 29、若 x、y 都是 int 型变量,且 x=100,y=200,则 printf(“%d”,(x,y);的输出结果是【】。AA) 200 B) 100C) 100 200 D) 不确定30、运行以下程序,如果从键盘输入 ABCDE,则输出结果是【】。#include int funch (char str) in
8、t num=0;while( strnum!= 0) num+;return (num);void main( ) char str10;gets(str);printf(“%dn”,funch(str);A) 7 B) 6C) 5 D) 431、为表示关系 x=y=z,下面 C 语言表达式中正确的是【】。CA) (x=y) x*=3+2; printf(“%d ”,x); x*=y=z=4; printf(“%d”,x); A) 8 40 B) 10 40C) 10 4 D) 8 433、下列程序段的输出结果为【】。Cint a=9;a+=a-=a+a;printf(“%dn”,a);A)
9、18 B) 9C) -18 D) -934、设有整型变量 a 的值为 5,使整型变量 b 的值不为 2 的表达式【】。CA) b=a/5 B) b=6-(-a)C) b=a%2 D) b=(a-a-,a/2)35、语句 printf(“abrehiyboun”)的输出结果为【】。CA) abrehiybou B) abrehiybouC) rehiyou D) abrehiybou36、设 a,b,c,d 均是 int 型变量,为了使以下程序输出为:1234+123+12+1,正确的输入形式应当为【】。 Dscanf(“%4d+%3d+%2d+%1d”,printf(“%4d+%3d+%2d+
10、%1d”,a,b,c,d);A) 1234123121 B) 1234123412341234C) 1234+1234+1234+1234 D) 1234+123+12+137、以下程序的输出结果是【】。 Avoid main() int a=1,b=1; switch (a+b) case 2 : printf(“*n“); case 3 : printf(“*n“); 中国地质大学(北京)继续教育学院 2015 年 01 课程考试第 8 页(共 23 页) A) *B) *C) * D) * *38、分析以下程序,以下程序【】。Dvoid main() int x=5,a=0,b=0;if
11、(x=a+b) printf(“*n”);else printf(“#n”); A) 有语法错,不能通过编译 B) 通过编译,但不能连接C) 输出* D) 输出#39、假定所有变量均已正确说明,下列程序段运行后 x 的值是【】。a=b=c=0;x=35;if(! a) x=-1;else if(b);if(c) x=3;else x=4;A) -1 B) 4C) 35 D) 340、下面程序运行的结果是【】。B#include void main() int i,j,x=0;for(i=0;i=0中国地质大学(北京)继续教育学院 2015 年 01 课程考试第 11 页(共 23 页)scan
12、f(“%ld”,doif(【1】) printf(“%ld”,num);scanf(“%ld”,while(【2】);2、 下面程序段的运行结果是【3】。(其中表示空格)Bchar c5=a,b,0,c,0;printf(“%s”,c);3、下列程序的运行结果是【4】。int i, x33=1,2,3,4,5,6,7,8,9;for(i=0;i#include void main() char a20= “cehiknqtw”; char s=“bafl”;int i,j,k;for(k=0; 【5】;k+) j=0;while(sk=aj【1】 A) num%100/10=3 B) num/
13、10%10=3C) num%10/10=3 D) num/100%10=3【2】 A) !num B) !num=0C) num0=0 D) !num!=0【3】 A) a b B) abC) abc D) abc【4】 A) 1,5,9 B) 1,4,7C) 3,5,7 D) 3,6,9中国地质大学(北京)继续教育学院 2015 年 01 课程考试第 12 页(共 23 页)for(【6】) ai+1=ai; aj=【7】;puts(a);4、 下面程序的功能是找出数组中的最大值和此元素的下标,请选择填空。#include void main() int a10=4,6,8,2,0,9,23
14、,5,67,1,k,p;【8】;for(k=1;kap)【9】;printf(”最大值=%d, 下标=%dn”,ap,【10】);四、填空题1、 以下程序求解百钱百鸡问题,公鸡五元一只,母鸡三元一只,小鸡一元三只,用一百元买一百只鸡,且必须有公鸡、母鸡和小鸡,求解所有可能的方案。请填空。#include void main()【5】 A) sk!= 0 B) sk!= 0C) sk=0 D) sk!=0【6】 A) i=strlen(a)+k;i=j;i- B) i=strlen(a); i=j;i-C) i=j; imain() int a, e10, c, i=0;printf(“输入一个
15、整数n”);scanf(“%d”, while(a!=0) c=sub(a);a=a/2; ei=c; i+;中国地质大学(北京)继续教育学院 2015 年 01 课程考试第 14 页(共 23 页)for(;i0;i-)printf(“%d”, ei-1);sub(int a) int c;c=a%2;return c;4、下面的函数 invert 的功能是将一个字符串的内容颠倒过来.void invert(char str) int i, j, 【7】;for(i=0,j=strlen(str); 【8】;i+,j-) k=stri;stri=strj;strj=k;5、在 C 语言中,要
16、求对所有用到的变量,遵循先定义后 使用 的原则。6、C 语言规定,可执行程序的开始执行点是 名为 main 的函数。7. 设 float x=2.5,y=4.7; int a=7;,则表达式 x+a%3*(int)(x+y)%2/4 的值为 2.5。8. 判断变量 a、b 的值均不为 0 的逻辑表达式为 if(a!=0的输出结果为 m=1b。10. 如定义语句为 char a=“windows “,b=“95“;,语句“printf(“%s“,strcat(a,b);“的输出结果为【14】。11int i=234,j=567; 函数 printf(“%d%dn“,i,j) 的输出结果是 234
17、567。12. 求 1 至 100 的和,程序应写成 for(s=0,i=1;【16】;+i) s+=i;中国地质大学(北京)继续教育学院 2015 年 01 课程考试第 15 页(共 23 页)13. 定义 a 为长度为 10 的字符串,同时为字符串赋初值“continue“的语句为 int strlen(char *str) int len=0; char 循环体语句; 表达式 3; 同样 while(条件) 循环体转化为 for for。14. 已知方程 ax2+bx+c=0 系数 a、b、c 且存在两个实根,计算其中一个实根的算术表达式为【18】。15. 若 s=d,执行语句 s=(s
18、=aif(n=1|n=2) r=1;elser=fun(n-1)+fun(n-2);return r;void main() printf(“%dn“,fun(8); 五、 编程题1.输入 10 个数据,用选择法对 10 个数由小到大排序,并输出。中国地质大学(北京)继续教育学院 2015 年 01 课程考试第 16 页(共 23 页)2.写一个函数,用于求 n 个学生的平均成绩:并设计主函数,定义一个一维数组 score 里面存放 10 个学生的成绩,输出这 10 位学生的平均成绩。3.有一个 3*4 的矩阵,要求编写程序求出其中值最大的那个元素的值,以及所在的行号和列号。#includeu
19、singnamespacestd;intmain()intmatrix34;intFindMax=0;inti,j;coutmatrixij;for(inti=0;iFindMax)FindMax=matrixij;coutusing namespace std; #include using namespace std; int main()int a34;int max = 0;int iIndex = 0;int jIndex = 0; coutaij; if(aijmax)max=aij;iIndex = i;jIndex = j;coutint main()void sort(int
20、 array,int n);int a10,i;printf(“enter array:n“);for(i=0;iint main()float average(float array10); /函数声明float score10,aver;int i;printf(“input 10 score:n“);for(i=0;iint main()中国地质大学(北京)继续教育学院 2015 年 01 课程考试第 21 页(共 23 页)float average(float array,int n);float score10=67.5,89.5,99,69.5,77,89.5,76.5,54,6
21、0,99.5; /定义长度为 10 的数组printf(“The average of class B is %6.2fn“,average(score,10); /用数组名 score 和 10 作实参return 0;float average(float array,int n) /定义 average 函数,未指定形参数组长度int i;float aver,sum=array0;for(i=1;iint main()int i,j,row=0,colum=0,max;int a34=1,2,3,4,9,8,7,6,-10,10,-5,2; /定义数组并赋初值max=a00; /先认为
22、 a00最大for(i=0;imax) /如果某元素大于 max,就取代 max 的原值max=aij;row=i; /记下此元素的行号colum=j; /记下此元素的列好printf(“max=%dnrow=%dncolum=%dn“,max,row,colum);return 0;4. 题方法一:#includeint main()float average(float array10); /函数声明float score10,aver;中国地质大学(北京)继续教育学院 2015 年 01 课程考试第 22 页(共 23 页)int i;printf(“input 10 score:n“)
23、;for(i=0;iint main()float average(float array,int n);float score10=67.5,89.5,99,69.5,77,89.5,76.5,54,60,99.5; /定义长度为10 的数组printf(“The average of class B is %6.2fn“,average(score,10); /用数组名score 和 10 作实参return 0;float average(float array,int n) /定义 average 函数,未指定形参数组长度int i;float aver,sum=array0;for(i=1;iint main()int f1=1,f2=1,f3;int i;printf(“%12dn%12dn“,f1,f2);for(i=1;i=38;i+)f3=f1+f2;printf(“%12dn“,f3);f1=f2;f2=f3;return 0;