C语言程序设计2015A卷
一、判断题(每小题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、 输入一个数,计算其平方根# includevoid main( ){ float a, b; printf("please input a number "); scanf("%f",a); if(a>=0) { b=sqrt(a); printf("b=%f ", b); } else printf("data is error! ");}
2、 已知矩阵a=,求该矩阵对角线元素之和。# includevoid 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、 通过函数调用实现两个变量值的交换。# includevoid 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 ", a, b) ; p=&b; swap(&a, *p) ; printf("New:a=%d b=%d ", a, b) ; }
4、 用递归语句编函数计算10!# includelong 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]以内的所有完全数及完全数的个数。#includeint main( ){int x,n,m,s=0;for(n=2;n<=1000;n++){ (1) for(m=1;mmain( ){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、#includeint main( ){ int i; for (i=1; i<=5; i++) { if (i%2) printf("#"); else continue; printf("*");} return 0;}
2、#includevoid sub();int i=0;static int j=1; main( ){ int k=1; i++; j++; k++; printf("main i=%d j=%d k=%d ", 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 ",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; (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
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]!=’ ’ && str2[i]!=’ ’ &&flag=0);
if(flag<0)printf("%s小于%s ",str1,str2);
else if(flag==0) printf("%s 等于%s ",str1,str2);
else printf("%s大于%s ",str1,str2);
printf("两个字符串中相同的字串为:");
j=0;
i--; 后3句可用str1[i]=’ ’; printf("%s",str1);代替//用str2也可以。
while(j
互联网时代,如何正确抓住风口互联网时代,越来越多的人开始利用网络进行变现。小到传统微商的零售,也就是常见的一件代发。做得规范的也为品牌做了专门的系统,对代理进行公司化系统化的管理。不管是医美行业大健康行业,还
华为P60实现突破!完全国产化但芯片只有14nm,你会支持吗?华为如果推出全国产化的手机,我坚决支持购买!因为虽然是14um芯片,硬件已经够用了,主要是提升鸿蒙系统的生态!一定支持,首先是质量很好,其次是支持国货。我从P9,P10,到P20p
妙招!您必须了解的宽带使用小常识下班后追剧宽带断网可不是件开心的事在这里我给大家介绍一下宽带日常排障小常识让你快速解决,上网无忧!无线路由器排障指南手机电脑不能上网了第一步确认是否欠费停机或宽带到期第二步查看是电
库克可能也没料到,发布三个月下跌700元,新款iPhone一降再降最关心苹果手机销量的人可能就是库克了,苹果手机销量的好坏决定了苹果手机的营收,甚至可以影响到苹果公司的市值,而作为苹果公司CEO,库克是最主要的负责人,所以库克对苹果手机的销量极其
2021,这些人,那些事2021年,世界焦点人物继续吸引着众人的目光。有人春风得意,有人黯然谢幕,有人创造了历史,有人失败后开始重操旧业。2021年转瞬即逝,这些或熟悉或新鲜的面孔会让你想起哪些故事?马斯
苹果XS相比苹果X哪个好?首先你这个问题我肯定得答复你是iPhoneXS更好我们来看一下这两款机器首先,IPhoneX和iPhoneXS两只两款机器外观基本上一模一样,只有略微的差别,IPhoneXS的话,
情侣之间明明都想聊天但是没话题怎么办?这个问题本身感觉是很矛盾的,但是既然问出来,肯定是某一方在乎另一方,想要改变与ta相处时的状态,所作出的一份努力。在我看来,首先,要看你们在一起了多长时间,在一起很久了的话,比如一
冰箱美的和海尔怎么选?冰箱选购注意事项主要有以下几点1冰箱星级。目前我国生产的冰箱有单门二星级,双门三星级和四星级。星级越高,质量档次就越高。单门冷冻一般为12。双门冷冻在1824之间。2认清铭牌。铭牌
苹果的擦屏布卖145,到底值这个价钱吗?仅从擦屏布本身价值来讲,这个价格当然高的离谱,但苹果毕竟是国际知名品牌,定价时将品牌价值适当核算一部分进来也是理所当然。但总的来讲这块小布是让人拿来用的,不是让人拿来显摆的,定这么
接口的幂等性的多重考虑,你会了吗?前言今天的主题接口幂等性的解决方案。本来是想把对象的存储过程和内存布局肝出来的,但是临时产生了变化,哈哈,这部分内容我们留在下一期吧,有句话说的好,好事多磨,对吧。在实际项目开发中
面对华为Mate40Pro与三星GalaxyNote20Ultra你会怎么选有点意思,同样是去年差不多时间发布的综合旗舰产品,目前敞开卖的华为Mate40Pro5G价格与三星GalaxyNote20Ultra相差不大,你会选择保值率更高的Mate还是屏幕更