
中南大学2015年C语言考试试卷及答案.doc
《中南大学2015年C语言考试试卷及答案.doc》由会员分享,可在线阅读,更多相关《中南大学2015年C语言考试试卷及答案.doc(7页珍藏版)》请在咨信网上搜索。
中南大学考试试卷 2015-- 2016学年 1 学期期末考试试题 A卷 时间100分钟 C语言程序设计基础课程 40学时 3学分 考试形式:闭卷 专业年级:2015级计算机电气类专业 总分100分,占总评成绩 70 % 注:此页不作答题纸,请将答案写在答题纸上 一、判断题(每小题1分,共15分) 1.标准C中,只有数值型数据才能进行4则混合运算。 2.标准C中,_a是合法的自定义标识符。 3.有定义:float f;表达式f+=(int)3.6%2”不符合C语言语法。 4.标准C中,逻辑运算的结果只有是1表示满足条件,而结果是0表示不满足条件。 5.C语言程序中要求被调用函数在调用函数中能被调用必须要在调用函数中进行声明。 6.以下运算符排列顺序满足按照优先级从高到低的排列:‘&&’、‘!’、‘==’、‘-’。 7.语句for(;;);是非法的。 8.在C语言程序中可以由多个源文件构成,每个源文件都可以有自己的main()函数。 9.while和do-while的主要区别是后者至少无条件执行一次。 10.数组名代表数组的首地址是常量,所以将实参数组名表示地址传给形参数组名是错误的。 11.当函数没有返回值类型时,表示函数类型为void。 12.C语言中,指针变量作函数参数时,它们不是采取单向值传递的方式。 13.一个函数中只允许有一条return语句。 14.在C语言中,如果没有说明变量的存储类型是auto类型的。 15.由于指针中所存放的地址都是整数,所以整型指针和浮点型指针可以相互赋值。 二、填空题(每空1分,共15分) 1. 若a=4;b=5,c=6;则表达式c==(b=-a); 中c的值是 (1) 。 2. 计算表达式的值: 4&&-4的值: (2) ; 设int a=3,b=4,c=5,则表达式a||b+c&&b==c的值: (3) ; 设x=2.5, a=7, y=4.7,则表达式x+a%3*(int)(x+y)%2/4的值: (4) ; 设a=12,则表达式a*=a/5的值: (5) ; 3. 若int x = 4,y = 6,z = 0;有循环while(x = y) {z ++;y--;} 则循环语句执行完后,z值为 (6) 。 4. 变量的指针就是指该变量的 (7) 。 5. 若有定义int (*p)[4],则标识符p是 (8) ;若有定义int *p[4],则标识符p是 (9) ; 6. 已有定义:char *p[ ]={“France”,“Chinese”,“Russia”,“America”};则语句printf( “%s”,p[2]);printf(“%c”,*(p[1]+2));printf(“%c”,*(*(p+1)+1)); 的输出结果分别为: (10) 、 (11) 、 (12) 。 7. 已有定义: int x=65; 若格式化输出结果为“A, 65”,则对应的格式化输出语句为printf(“ (13) , (14) ”, x, x)。 8. 已定义:int a[][2]={1, 2, 3, 4, 2, 6, 7, 2};则a[3][0]= (15) 。 三、 简答题(每题4分,共12分) 1、 简述选择语句if和else语句对与switch语句的区别。 2、 简述在循环语句中,break和continue的区别。 3、 若int a[5],*p=a;简述*p++和(*p)++的区别。 四、下列各程序中每个程序各有2个错误,指出错误语句,写出对应正确语句(每小题4分,共16分) 1、 输入一个数,计算其平方根 # include<stdio.h> void main( ) { float a, b; printf(“please input a number\n”); scanf(“%f”,a); if(a>=0) { b=sqrt(a); printf(“b=%f\n”, b); } else printf(“data is error!\n”); } 2、 已知矩阵a=,求该矩阵对角线元素之和。 # include<stdio.h> void main( ) { int i, sum; int a[3][3]={{1,2,3},{4,5,6},{7,8,9}}; for(i=1; i<=3; i++) sum = sum + a[i][i]; printf(“sum=%d”, sum); } 3、 通过函数调用实现两个变量值的交换。 # include<stdio.h> void swap(int *p1, int *p2) { int temp; temp=*p1; p1= p2; *p2=temp; } void main() { int a = 3, b = 8, *p ; printf("Old:a=%d b=%d\n", a, b) ; p=&b; swap(&a, *p) ; printf("New:a=%d b=%d\n", a, b) ; } 4、 用递归语句编函数计算10! # include<stdio.h> long f (int m) { long a; if(m<0) printf(“data error!”); else a=f(m-1)*m; } void main( ) { int n; n=10; printf(“%d!=%ld”,n,f (n) ); } 五、程序填空题:下列程序中缺少若干条语句,在对应的下划线上填上合适的语句,每一个下划线只填一条语句(每小题6分,共24分) 1、 若一自然数全部正整数因子(该因子不包括其本身)之和仍为该自然数,则该自然数称为完全数。如:6=1+2+3,则6是完全数。输出[2,1000]以内的所有完全数及完全数的个数。 #include<stdio.h> int main( ) { int x,n,m,s=0; for(n=2;n<=1000;n++) { (1) for(m=1;m<n;m++) { if(n%m== 0) x=x+m; } (2) { printf(“%d\n”,n); (3) } } printf(“s=%d\n”,s); } 2、 从键盘输入一组100个以内的整数,使用条件表达式找出最大的整数,并且以输入的整数为0时作为输入数据结束标志。 #define N 100 main() { int num[N]; int i= -1; int max=0; printf("\n Input integer number: \n"); do { i++; printf("num[%d]=",i); scanf("%d", (4) ); max= (5) num[i] : max; }while( (6) ); printf("max=%d\n", max); } 3、用起泡法对n个数由小到大排序。 起泡法排序的原理为:从第一对元素开始比较相邻的元素,如果第一个比第二个大,就交换他们两个,每一轮下来,该序列的最后的元素应该会是当前序列中最大的数。 bubble(int a[],int n) { int i,j,t,temp ; for(i=1; i<=n-1; i++) { t= (7) ; for(j=0; j<=t; j++) if( (8) ) { temp = a[j]; a[j] = a[j+1]; (9) ; } } } 4、从键盘上输入一个不多于7位的正整数,统计其中2的个数,并求各位数字中的最小数。 #include <stdio.h> main( ) {int count,min,temp; long n; min=9; (10) ; scanf(“%ld”,&n); do { temp= (11) ; if (temp= =2) count++; if (temp < min) min=temp; n=n/10; }while ( (12) ); printf(“count=%d,min=%d”,count,min); } 六、阅读下列程序,写出运行结果(第一小题4分,第二小题6分,共10分) 1、#include<stdio.h> int main( ) { int i; for (i=1; i<=5; i++) { if (i%2) printf("#"); else continue; printf("*"); } return 0; } 2、 #include<stdio.h> void sub(); int i=0; static int j=1; main( ) { int k=1; i++; j++; k++; printf(“main i=%d j=%d k=%d\n”, i,j,k); sub( ); sub( ); } void sub( ) { int k=0; static int x=1; k++; x++; printf(“sub i=%d j=%d k=%d x=%d\n”,i,j,k,x); } 七、编程题(8分) 编译程序,其功能是比较字符串的大小(不允许用系统提供的字符串比较函数strcmp)。要求是: (1) 通过主函数调用一个函数strcompare来实现。 (2) 要求函数strcompare实现两个字符的比较:如第一个字符小于第二个字符则返回一个负值;如两个字符相等则返回0值;如第一个字符大于第二个字符则返回一个正值。 (3) 并输出两个字符串中相同部分的子串。 《C语言程序设计基础》试卷参考答案 一、判断题(每小题1分,共15分) 1~5 ×√ × ××; 6~10 ×××√×; 11~15 ×××√ × 二、填空题(每空1分,共15分) (1) 6 (2) 1 (3) 1 (4) 2.5 (5) 24 (6) 6 (7)地址 (8) 行指针,指向有四个元素的一维数组 (9)指针数组名,该数组有四个元素,每个元素都是指针 (10)Russia (11)i (12)h (13) %c (14) %d (15)7 三、 简答题(每题4分,共12分) 1、 if总是判断其后面的表达式的值是否为非零值,如是非零值则执行其后面的语句或由{}括起来的复合语句,否则执行else后面的语句。而switch语句则根据其后面表达式的可数值来判断,执行switch语句体内与其中的一个case:常量值相等语句后面的语句。执行break语句后,跳出switch语句体。 2、 break是终止整个循环过程;continue是终止本次循环。 3、 *p++首先取a[0]的值,然后p指向a[1];(*p)++使得a[0]的值自增1,但p保持不变。 四、下列各程序中每个程序各有2个错误,指出错误语句,写出对应正确语句(每小题4 分,共16分) 1、 (1)缺#include<math.h>; (2)scanf(“%f”,a); 改为 scanf(“%f”,&a); 2、 (1)缺sum=0; (2)for(i=1; i<=3; i++) 改为for(i=0;i<3;i++) 3、 (1)p1=p2 改为 *p1=*p2 (2)swap(&a, *p) 改为swap(&a, p) 4、 (1)在if(m<0)语句后添加else if(m==0) a=1; (2) 添加 return(a); 五、程序填空题:下列程序中缺少若干条语句,在对应的下划线上填上合适的语句,每一个下划线只填一条语句(每小题6分,共24分) 1、 (1)x=0; (2)if(n==x) (3)s++;或s=s+1; 2、 (4)&num[i] (5)max< num[i]? (6)num[i]!=0 3、 (7)n-i-1 (8)a[j]>a[j+1] (9)a[j+1]=temp 4、 (10)count=0; (11)n%10 (12)n>0或n!=0或n 六、阅读下列程序,写出运行结果(第一小题4分,第二小题6分,共10分) 1、 #*#*#* 2、 main i=1 j=2 k=2 sub i=1 j=2 k=1 x=2 sub i=1 j=2 k=1 x=3 七、编程题(8分) #include<stdio.h> main() { int i,j, flag=0; char str1[90],str2[90]; gets(str1); gets(str2); i=0; do{ flag=strcompare(str1[i],str2[i]); i++; }while(str1[i]!=’\0’ && str2[i]!=’\0’ &&flag=0); if(flag<0)printf(“%s小于%s\n”,str1,str2); else if(flag==0) printf(“%s 等于%s\n”,str1,str2); else printf(“%s大于%s\n”,str1,str2); printf(“两个字符串中相同的字串为:”); j=0; i--; 后3句可用str1[i]=’\0’; printf(“%s”,str1);代替//用str2也可以。 while(j<i){printf(“%c”,str1[i]);j++;} } int strcompare(char c1,char c2) { int v; v=c1-c2; return v; } (注:专业文档是经验性极强的领域,无法思考和涵盖全面,素材和资料部分来自网络,供参考。可复制、编制,期待你的好评与关注)- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 中南 大学 2015 语言 考试 试卷 答案

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【人****来】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【人****来】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文