华科2013级光电实验班C语言试卷答案.doc_第1页
华科2013级光电实验班C语言试卷答案.doc_第2页
华科2013级光电实验班C语言试卷答案.doc_第3页
华科2013级光电实验班C语言试卷答案.doc_第4页
华科2013级光电实验班C语言试卷答案.doc_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

华中科技大学光学与电子信息学院课程考试(标答)2013 2014 学年度第 1 学期 课程名称: C语言程序设计 考试类型: 正常考试 考试时间: 2014 年 1 月 16 日 考试方式: 闭卷 学生姓名 学号 专业班级 题 号 一 二 三 四 五 六总 分 题 分 25 35 7 8 12 13 100 得 分 一、 单项选择(25分)1. 对于下面的表示,请在相应小题前面的( )中填入A,B,C或D。A,B,C,D的含义如下:(A) 合法的标识符; (B)C语言的关键字; (C)合法的字符串;(D)既不是C语言的关键字,也不是合法的标识符或字符串。( A )(1)Break ( D ) (2) -abc( A )(3)_456 ( B ) (4) case( C )(5)” t123n” ( A ) (6) _void( D )(7)x12 ( A ) (8) Main( D )(9)VC+ 6.0 ( D ) (10) j+ 2. 对于下面的表示,请在相应小题前面的( )中填入A,B,C或D。A,B,C,D的含义如下:(A)合法的字符常数; (B)合法的整常数; (C)合法的浮点常数;(D)非法表示。( D )(1)911 ( A ) (2) ( C )(3).15 ( C ) (4) 2014f ( C )(5)12.3e-5 ( D ) (6) 23E( D )(7)def ( B ) (8) 10000L( B )(9)0x12DEF ( A ) (10) xdf 3若有定义:int a=7; float x=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4 的值是 ( A )。(A) 2.500000 (B)2.750000 (C)3.500000 (D)0.000000 4#include void main( ) int a=5,b=1,c=0; if(a=b+c) printf(“*n”); else printf(“$n”); 以上程序( C ) 。 (A) 有语法错误不能通过编译 (B)可以通过编译但不能通过连接 (C) 输出* (D) 输出$ 5有下面程序: #includevoid main( ) char a3,b=”china”; a=b; printf(“%s”,a); 则( D )。(A) 运行后输出china (B)运行后输出ch (C) 运行后输出chi (D) 编译出错 6在int b3=1,2,3,4,5,6,7; 则b数组第一维的大小是( B )。(A)2 (B) 3 (C) 4 (D)无确定值7已知学生记录描述为: struct student int no;char name20;char sex;struct int year; int month; int day; birth; ; struct student s;设变量s中的“生日”应是“1995年1月16日”,下列对“生日”的正确赋值方式是( D )。(A) year=1995; month=1; day=16;(B) birth.year=1995; birth.month=1; birth.day=16;(C) s.year=1995; s.month=1; s.day=16;(D) s. birth.year=1995; s. birth.month=1; s. birth.day=16;8.下面程序执行结果是( D )。 #include void main( ) int y=10; do y -; while(-y); printf(“%dn”,y-);(A)-1 (B) 1 (C)8 (D)0 9以下函数采用折半查找法从数组a中查找特定元素m。请选择填空。 binary(int a10, int m) int low=0, high=9, mid; while( low=high) mid=(low+high)/2; if(mamid( D ); else return(mid); return -1; (A)high=mid-1 (B)high=mid+1 (C)low=mid-1 (D)low=mid+110若有以下定义和语句,则对a数组元素地址的正确引用为( C )。 int a23, (*p)3; p=a; (A)*(p+2) (B)p2 (C)p1+1 (D)(p+1)+211. 已知:a=b=c=1且均为int型变量,则执行以下语句后: (a=a)&(b+|+c); a,b,c的值分别为: ( B )(A) 0 1 2 (B) 0 1 1 (C) 0 2 2 (D) 1 2 2 12下面对字符数组描述错误的是( C )。 (A)字符数组可以存放字符串 (B)字符数组的字符串可以整体输入输出 (C)可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值 (D)不可以用关系运算符对字符数组中的字符串进行大小比较13下面程序段的运行结果是( B ) char c =”tv0willn”; printf(“%d”, strlen(c); (A) 14 (B)3 (C)9 (D)字符串中有非法字符,输出不确定14. 设有以下程序段:char str410=“first”, “ second”, “third”, “fourth”, *strp4;for(int n=0; n4; n+)strpn=strn;若k为int变量且0=k4,则对字符串的不正确引用是( A )。 (A) strp (B) strk (C) strpk (D) *strp15. 若有以下定义,则*(p+5)表示( B )。 int a10, *p=a; (A)元素a5的地址 (B)元素a5的值 (C)元素a6的地址 (D)元素a6的值16. 下面程序段的功能是计算1000!的末尾含有多少个零。请选择填空。 for(k=0, i=5; i=1000; i+=5) m=i; while( C ) k+; m/=5; (A) m%5=0 (B)m=m%5= = 0(C)m%5= = 0(D)m%5!=0二、 填空(35分)1阅读下面程序,写输出结果#includeint a;void s();void main() for(int i=1;i5;i+) +a; printf(%d,a); s(); void s() static b; int a=100; +a; b+; printf(%d,%dn,a,b); 1,101,1 2,101,2 3.101,3 4,101,4 2. 以下程序的输出结果是 10 。 #include #include void fun(int *a,int p23) *a=p11; void main( ) int x23=2,4,6,8,10,12,*p; p=(int *)malloc(sizeof(int); fun(&p,x); printf(%dn,*p); free(p); 3. 下面程序运行结果是 *$# 。#includevoid main() int i; for(i=1;ix的结果是 2 , 表达式*p-y的结果是 a , 表达式*(+p)-y的结果是 c 。 5#includevoid main() char ch210=693479,829294,*p2; int i,j,s=0; for(i=0;i2;i+) pi=chi; for(i=0;i0&pij=8;j+=2)s=10*s+pij-0; printf(%dn,s);上面程序运行后的输出结果是 : 63786. 下面的程序实现从10个数中找出最大值和最小值。#includeint max,min;void find_max_min(int *p,int n) int *q; max=min=*p; for(q=p; qp+n ;q+) if( max*q )min=*q;void main() int i,num10; printf(input 10 numbers:n); for(i=0;i10;i+) scanf(%d, &numi ); find_max_min( num , 10 ); printf(max=%d;min=%dn,max,min);7. 下列程序的功能是将字符串a的所有字符传送到字符串b中,要求每传送3个字符后再传送一个空格。#includevoid main() int i,k=0; char a80,b80,*p; p=a; gets(p); while(*p) for( i=1; i=3 ; p+,k+,i+)bk=*p; if( i=4 ) bk= ;k+; bk= 0 ; puts(b);8. 下面程序的功能是将二维数组a中每个元素向右移一列,最右一列换到最左一列,移动后放到另一个二维数组b中。如: 4 5 6 变为: 6 4 5 1 2 3 3 1 2 #includevoid main()int a23=4,5,6, 1,2,3; int b23,i,j; printf(array a:n); for(i=0;i=1;i+) for(j=0;j3;j+) printf(%5d,aij); if(j2)bij+1=aij; printf(n); for(i=0;i=1;i+) bi0=ai2; printf(array a:n); for(i=0;i2;i+) for(j=0;j3;j+)printf(%5d,bij); printf(n); 三、 编写一个程序计算任一输入的整数的各位数字之和并输出。(7分)#includevoid main() int num,sum=0; printf(请输入一个整数:); scanf(%d,&num); do sum+=num%10; num/=10; while(num); printf(结果为:%d,sum); 四、编程检查一个44的矩阵是否对称,要求用函数实现。(8分)#includeint found(int b4) int i,j; for(i=0;i4;i+) for(j=0;j4;j+) if(bij!=bji)return 0; return 1; void main() int a44= 1,2,3,4, 5,6,7,8, 2,3,4,5, 3,2,5,4 ; if(found(a)=1) printf(矩阵对称!); else printf(矩阵不对称!); 5、 编程将某一字符串中所有包含A特定子串的内容用B特定子串替换。例如,字符串为“abc12345abc12fhgk”,A子串为“abc”,B子串为“ttt”,则形成的新串为“ttt12345ttt12fhgk”。(12分)#include#includevoid main() char m_str100; char a_str100; char b_str100; char new_str100=0; char *ptr; printf(请输入母串:n); gets(m_str); printf(请输入A子串:n); gets(a_str); printf(请输入B子串:n); gets(b_str); while(ptr=strstr(m_str,a_str)!=NULL) *ptr=0; strcat(new_str,m_str); strcat(new_str,b_str); strcpy(m_str,ptr+strlen(a_str); strcat(new_str,m_str); printf(新串为:n); puts(new_str);6、 将1到9这九个数字分成三个3位数,要求第一个3位数,正好是第二个3位数的两倍,是第三个3位数的三倍。应当怎样分。(13分)#in

温馨提示

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

评论

0/150

提交评论