C语言程序设计(本科C卷及答案)(1)(1).doc
如有侵权,请联系网站删除,仅供学习与交流C语言程序设计(本科C卷及答案)(1)(1)一二三四五六总分得分考试形式:闭卷 开卷 笔试 机试 答卷要求:试卷答案需填写至答题卡内一、单项选择题(每小题 2 分,共 30 分)12345678910CDABBADACC1112131415CDACB1、C语言源程序文件是一个后缀为( )的文件。(第1章)A) .bas B) .java C) .c D) .pas2、下列哪个图形不属于传统流程图的符号( )(第2章)A) B) C) D) 3、下列标识符中,不合法的用户标识符为( )。(第3章)A) a+4B) IfC) thenD) _1234、下面运算符优先级最高的是()。(第3章)A) *B) !C) -(减号)D) =5、以下哪个是不正确的转义字符( )。(第3章)A) ''B) '077'C) '0'D) 'n'6、若int n,x=1,y=0,则条件表达式n=x<y?x:y的结果为( )。(第4章)A) 0B) 1C) 2D) 表达式错误7、分析以下程序, 下列说法正确的是( )。(第4章)int main() int i=10,m=0,n=0,k=0;switch(i/10) case 0: m+;n+;break;case 10: n+; break;default: k+;n+; printf("%d %d %dn",m,n,k); A) 0 0 0B) 0 1 0C) 1 1 0D) 0 1 18、程序段如下:则以下说法中正确的是( )。(第5章)int k=-10;while(k<0) k=k+1;A) while循环执行10次B) while循环执行11次C) 循环体语句一次也不执行D) 循环是无限循环9、下列程序段执行后k值为( )。(第5章)int k=0,i;for(i=0;i<=20;i+=3) k=k+1;A)5B)6C)7D)810、若有定义int a5,i=4;则对数组元素的非法引用是( )。(第6章)A) aiB) ai-1C) ai+1D) ai-411、以下能正确定义数组并正确赋初值的语句是( )。(第6章)A) int a2=1,2,3,4; B) int a23=1,2,3,4,5,6,7;C) int a3= 1,2,3,4,5,6;D) int a=1,2,3,4,5,6;12、C语言规定,函数返回值的类型是由( )。(第7章)A) return语句中的表达式类型所决定B) 调用该函数时的主调函数类型所决定C) 调用该函数时系统临时决定D) 在定义该函数时所指定的函数类型决定13、以下函数调用语句中实参的个数为( )。(第7章)func(v1,v2),(v3,v4,v5),v6);A) 3B) 4C) 5D) 614、有如下程序段,执行该程序段后a 的值为( )。(第8章)int *p,a=10,b=2;p=&a; a=*p+b;A) 10B) 11C) 12D) 编译出错15、有如下说明,则数值为9 的表达式是( )。(第8章)int a10=1,2,3,4,5,6,7,8,9,10,*p=a;A) *p+9B) *(p+8)C) *p+=9D) p+8二、填空题(每小题 2 分,共 10 分)1函数21/3*n(4*n-1)(4*n-1)31450541、C语言程序是由若干个 组成。(第1章)2、若有声明double n;,则数学公式对应的C语言表达式形式为_。(第3章)3、执行语句“a=0,b=1,c=2;if(a>0 && b>0) c+; else c-;"后,变量c值为_。(第4章)4、执行语句“for(s=0,i=1;i<11;i+) if(i=5) continue; s+=i; "后,s值为_。(第5章)5、在执行int a3=1,2,3,4,5,6;语句后,a10的值是_。(第6章)三、程序改错题。指出下列程序错误代码并改正,使其能正确运行。(每题只有2处错,指出1处得1分,改正得2分,每处 3分,共 12 分)题号错误代码改正后1(1)scanf("%d,%d",a,b);scanf("%d,%d",&a,&b);(2)printf("%dn,a+b");printf("%dn",a+b);2(1)for (i=1;i<=300;i+);for (i=1;i<=300;i+)(2)if (n%3)if (n%3=0)1、(第3章)下面程序是输出a、b两个数,输出a+b的和。#include <stdio.h>int main()int a,b;scanf("%d,%d",a,b);printf("%dn,a+b");2、(第4章和第5章)下面程序是求1.300之间能被3整除的数。int main()int i;for (i=1;i<=300;i+);if (n%3)printf("%d ",i);return 0;四、程序分析题,根据下列程序,写出其运行结果。(每小题 4 分,共 12 分)1、(第3章)int main() int x=4,y=0,z; x*=3+2; printf("%d ",x); x*=y=z=4; printf("%d",x);输出结果:_20 802、(第4章和第5章)#include <stdio.h>int main() int i; for(i=1;i<=5;i+) if(i%2) putchar('<'); else continue; putchar('>'); putchar('#');输出结果:_< >< >< >#3、(第6章)void main() int a44,i,j,k;for (i=0;i<4;i+)for (j=0;j<4;j+)aij=i-j; for (i=0;i<4;i+)for (j=0;j<=i;j+)printf(" %d",aij); printf("n"); 输出结果:_01 02 1 03 2 1 0五、程序填空题(每空 3 分,共 12 分)第1空Sn+hn第2空hn/2第3空ai>amaxIndex第4空maxIndex1、一球从 100米高度自由落下,每次落地后反跳回原来高度的一半,再落下,求它在第十次落地时,共经过多少米?第十次反弹多高?(第4和5章)int main() float Sn=100.0,hn=Sn/2; int n; for (n=2;n<=10;n+) Sn= 【第1空】; hn= 【第2空】; printf("第10次落地时共经过%f米n",Sn); printf("第10次反弹%f米n",hn);2、下面的函数是实现找出一维数组中最大元素的下标。(第6和7章)int findMaxIndex(int a,int n)int i;int maxIndex;maxIndex=0;for(i=0;i<n;i+)if(【第3空】)maxIndex=i;return 【第4空】;六、编程题(第1题 12 分,第2题12分,共 24 分)1、有三个数a、b、c,由键盘输入,输出其中最大的数。(1)画出该程序的流程图;(6分)(2)编写程序。(6分)参考答案(1)(2)#include <stdio.h>int main()int a,b,c;int max;scanf("%d%d%d",&a,&b,&c);if (a>b)max=a;elsemax=b;if (c>max)max=c;printf("max=%dn",max);return 0;2、编写程序,对n个整数逆序存放。n个整数和n在主程序中输入,最后在主函数中输出。(要求使用指针变量指向数组的方法)例如:8 6 9 1 3,逆序后结果是:3 1 9 6 8参考答案#include <stdio.h>#define N 20void revert(int a,int n)int *p,i;int t;p=a;for (i=0;i<n/2;i+)t=*(p+i);*(p+i)=*(p+n-i-1);*(p+n-i-1)=t;int main()int i,n;int aN;scanf("%d",&n);for (i=0;i<n;i+)scanf("%d",&ai);revert(a,n);for (i=0;i<n;i+)printf("%d ",ai);printf("n");return 0;【精品文档】第 5 页题号