c语言程序设计2015A卷-
1.在标准C中,只有数值数据可以执行四种混合运算。
2.在标准C中,_a是合法的自定义标识符。
3.有一个定义:float f;表达式f+=(int)3.6%2”不符合C语言的语法。
4.在标准C中,只有逻辑运算的结果是1,表示满足条件,而结果是0,表示不满足条件。
6.以下运算符按优先级从高到低排列:' &;& amp'、'!'、'=='、'-'。
7.(;的语句;;);是违法的。
8.一个C语言程序可以由多个源文件组成,每个源文件可以有自己的main()函数。
9.9.while和do-while的主要区别在于后者至少被无条件执行一次。
10.数组名代表的数组的第一个地址是常数,所以把实参数的数组名代表的地址传递给形参的组名是错误的。
11.当函数没有返回值类型时,意味着函数类型是void。
在12。c语言,当指针变量作为函数参数时,不采用单向值传递的方式。
13.一个函数中只允许有一个return语句。
14.在C语言中,如果没有指定变量的存储类型是auto type。
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 & amp;& ampb==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-;}
执行loop语句后,z值为(6)。
4.指向变量的指针指向变量的(7)。
5.如果定义了int (*p)[4],那么标识符p就是(8);如果定义了int *p[4],那么标识符p就是(9);
6.现有定义:char * p [] = { "法国","中国","俄罗斯","美国" };语句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+03),(14)",x,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)++的区别。
四、下列程序各有两处错误,指出错误语句并写出相应的正确语句(每道小题4分,***16分)。
动词 (verb的缩写)程序填空:在下面的程序中有几个句子漏掉了。在对应的下划线上填写合适的句子,每条下划线只填一句话(每道小题6分,* * * 24分)。
六、阅读以下程序,写出运行结果(第一项4分,第二项6分,***10分)。
七、编程题(8分)
编译器,其作用是比较字符串的大小(不允许使用系统提供的字符串比较函数strcmp)。要求是:
(1)是通过从main函数调用函数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)俄罗斯(11)I(12)h(13)% c(14)% d(15)7
三。简答题(每题4分,***12分)
1,if总是判断后面的表达式的值是否非零,如果非零,则执行后面的语句或者用{}括起来的复合语句,否则执行else后面的语句。switch语句根据后面表达式的可计值来判断,执行switch语句体中case: constant value equal语句之一后面的语句。执行break语句后,跳出switch语句体。
2、break是终止整个循环过程;继续就是终止这个循环。
3.*p++先取a[0]的值,然后p指向a[1];(*p)++使a[0]的值增加1,但p不变。
四、下列程序各有两处错误,指出错误语句并写出相应的正确语句(每道小题4分,***16分)。
缺少1和(1)# include;(2)scanf("%f ",a);更改为scanf ("%f ",&;a);
2.(1)缺sum = 0;(2)for(I = 1;我& lt=3;I++)更改为for(I = 0;我& lt3;i++)
3.(1)p1=p2改为* p 1 = * P2(2)swap(&;a,*p)改为swap(&;答,p)
4,(1)在if (m
动词 (verb的缩写)程序填空:在下面的程序中有几个句子漏掉了。在对应的下划线上填写合适的句子,每条下划线只填一句话(每道小题6分,* * * 24分)。
1 、( 1)x = 0;(2)if(n = = x)(3)s++;或者s = s+1;
2、4 & amp;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]=温度
4 、( 10)count = 0;(11)n % 10(12)n & gt;0或者n!=0或n
六、阅读以下程序,写出运行结果(第一项4分,第二项6分,***10分)。
1、 #*#*#*
2、主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分)
#包括
主()
{
int i,j,flag = 0;
char str1[90],str 2[90];
gets(str 1);
gets(str 2);
I = 0;
做{
flag=strcompare(str1[i],str 2[I]);
i++;
}while(str1[i]!=“”& amp;& ampstr2[i]!=“”& amp;& ampflag = 0);
if(flag & lt;0) printf ("%s小于%s ",str 1,str 2);
Elseif (flag = = 0) printf ("%s等于%s ",STR 1,STR 2);
Elseprintf ("%s大于%s ",STR 1,STR 2);
Printf("两个字符串中相同的字符串是:");
j = 0;
I-;后三句可以是str 1[I]=“”;printf("%s ",str 1);也可以用str2代替//。
while(j & lt;i){printf("%c ",str 1[I]);j++;} span = " " & gt& lt/i){printf("%c ",str 1[I]);j++;} & gt
}
int strcompare(char c1,char c2)
{
int v;
v = c 1-C2;
回归v;
}