c语言程序设计2015A卷-

一、是非题(每道小题1分,***15分)

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;

}