文档库

最新最全的文档下载
当前位置:文档库 > 上海海事大学,C语言试卷11

上海海事大学,C语言试卷11

试卷编号:9681 所属语言:C语言

一、填空共15题(共计15分)

第1题(1.0分)题号:497

设x的值为15,n的值为2,则表达式x%=(n+=3)运算后x的值是【1】.

答案:

=======(答案1)=======

第2题(1.0分)题号:81

已知 i=5,写出语句 i-=0x12; 执行后整型

变量 i 的值是【1】.

答案:

=======(答案1)=======

-13

第3题(1.0分)题号:558

表达式 i++ 相当于表达式i=【1】.

答案:

=======(答案1)=======

i+1

=========或=========

1+i

第4题(1.0分)题号:498

c语言程序的三种基本结构是:顺序结构,选择结构,【1】结构.

答案:

=======(答案1)=======

循环第5题(1.0分)题号:436

下列程序的输出是【1】,

main(){int a=011;printf("%d\n",++a);}

答案:

=======(答案1)=======

10

第6题(1.0分)题号:293

getchar()函数只能接收一个【1】.

答案:

=======(答案1)=======

字符

第7题(1.0分)题号:85

已知a=12,写出表达式 (0

答案:

=======(答案1)=======

第8题(1.0分)题号:308

当a=3,b=2,c=1;时,执行以下程序段后 a=【1】.

if(a>b) a=b;

if(b>c) b=c;

else c=b;

c=a;

答案:

=======(答案1)=======

2

第9题(1.0分)题号:572

执行下列语句后,b 的十进制值是【1】.

int x=240,y=15,b;

char z='A';

b=(( x && y ) && ( z < 'a' ));

答案:

=======(答案1)=======

1

第10题(1.0分)题号:421

若输入字符串:abcde<回车>,则以下while循环体将执行【1】次.

While((ch=getchar())=='e') printf("*");

答案:

=======(答案1)=======

第11题(1.0分)题号:438

以下程序的输出结果为【1】, #include "stdio.h" main(){int

a;for(a=0;a<10;a++);printf("%d",a);}

答案:

=======(答案1)=======

10

第12题(1.0分)题号:398

程序段int k=10; while(k=0) k=k-1循环体语句执行【1】次.

答案:

=======(答案1)=======

第13题(1.0分)题号:344

复制字符串的库函数是【1】,只写函数名即可.

答案:

=======(答案1)=======

strcpy

第14题(1.0分)题号:345

字符串比较的库函数是【1】,只写函数名即可.

答案:

=======(答案1)=======

strcmp

第15题(1.0分)题号:328

C语言中,数组元素的下标下限为【1】.

答案:

=======(答案1)=======

二、判断共15题(共计15分)

第1题(1.0分)题号:928

C程序中的关键字必须小写.

答案:Y

第2题(1.0分)题号:929

在C语言中,5种基本数据类型的存储空间长度的排列顺序为:char

<=float

答案:Y

第3题(1.0分)题号:935

在C程序中,%是只能用于整数运算的运算符

答案:Y

第4题(1.0分)题号:948

用scanf函数向已定义的变量中输入数据时,在变量名前面必须加&.

答案:Y

第5题(1.0分)题号:944

C语言中,赋值表达式加上分号就构成了赋值语句.

答案:Y

第6题(1.0分)题号:719

C语言本身不提供输入输出语句,输入和输出操作是由函数来

实现的.

答案:Y

第7题(1.0分)题号:949

关系运算符的优先级高于算术运算符并且低于赋值运算符.

答案:N 第8题(1.0分)题号:959

在switch-case语句中,不是每个case后都要使用break语句.

答案:Y

第9题(1.0分)题号:869

若有int i=10, j=0;则执行完语句

if (j=0)i++; else i--; i的值为11.

答案:N

第10题(1.0分)题号:953

C语言中的for语句可以用于循环次数已经确定的情况,但是不能用于循环次数不确定而只给出循环结束条件的情况.

答案:N

第11题(1.0分)题号:952

do-while循环是先判断循环条件表达式,后执行循环体;while循环是先执行循环体,后判断循环条件表达式.

答案:N

第12题(1.0分)题号:742

若有说明int c;则while(c=getchar());是正确的C语句.

答案:Y

第13题(1.0分)题号:710

函数strlen("ASDFG\n")的值是7.

答案:N

第14题(1.0分)题号:736

int a[3][4]={{1},{5},{9}}; 它的作用是将数组各行第一列

的元素赋初值,其余元素值为0.

答案:Y

第15题(1.0分)题号:737

char c[]="Very Good"; 是一个合法的为字符串数组赋值的语句.

答案:Y

三、单项选择共20题(共计40分)

第1题(2.0分)题号:2017

C语言中,double类型数据占().

A:1个字节

B:2个字节

C:4个字节

D:8个字节

答案:D

第2题(2.0分)题号:2029

以下不符合C语言语法的赋值语句是(). A:a=1,b=2

B:++j;

C:a=b=5;

D:y=(a=3,6*5);

答案:A

第3题(2.0分)题号:1997

以下标识符中,不能作为合法的C用户定义标识符的是().

A:a3_b3

B:void

C:_123

D:IF

答案:B

第4题(2.0分)题号:2189

从键盘上输入某字符串时,不可使用的函数是().

A:getchar()

B:gets() C:scanf()

D:fread()

答案:A

第5题(2.0分)题号:2038

以下程序段的执行结果是().

double x;x=218.82631;

printf("%-6.2f\n",x);

A:输出格式描述符的域宽不够,不能输出

B:输出为21.38e+01

C:输出为218.83

D:输出为218.82631

答案:C

第6题(2.0分)题号:2128

下列程序段的输出结果为().

float x=213.82631;

printf("%3d",(int)x);

A:213.82

B:213.83

C:213

D:3.8

答案:C

第7题(2.0分)题号:2262

判断char型变量cl是否为小写字母的正确表达式是().

A:a'<=cl<='z'

B:(cl>=a)&&(cl<=z)

C:('a'>=cl)||('z'<=cl)

D:(cl>='a')&&(cl<='z')

答案:D

第8题(2.0分)题号:2261

若希望当A的值为奇数时,表达式的值为"真

",A的值为偶数时,表达

式的值为"假",则以下不能满足要求的表达式是().

A:A%2==1

B:!(A%2==0)

C:!(A%2)

D:A%2

答案:C

第9题(2.0分)题号:2027

下列运算符中,不属于关系运算符的是(). A:<

B:>

C:>=

D:!

答案:D

第10题(2.0分)题号:2047

a,b为整型变量,二者均不为0,以下关系表达式中恒成立的是().

A:a*b/a*b==1

B:a/b*b/a==1

C:a/b*b+a%b==a

D:a/b*b==a

答案:C

第11题(2.0分)题号:2057

经过以下语句定义后,表达式z+=x>y?++x:++y 的值为().

int x=1,y=2,z=3;

A:2

B:3

C:6

D:5

答案:C 第12题(2.0分)题号:2061

在以下给出的表达式中,与 do--while(E)语句中的(E)不等价的

表达式是().

A:(!E==0)

B:(E>0||E<0)

C:(E==0)

D:(E!=0)

答案:C

第13题(2.0分)题号:2247

语句while(!E);中的表达式!E等价于(). A:E==0

B:E!=1

C:E!=0

D:E==1

答案:A

第14题(2.0分)题号:2252

执行语句 for(i=1;i++<4;); 后变量 i 的值是().

A:3

B:4

C:5

D:不定

答案:C

第15题(2.0分)题号:2249

若i为整型变量,则以下循环执行次数是(). for(i=2;i==0;) printf("%d",i--);

A:无限次

B:0次

C:1次

D:2次

答案:B

第16题(2.0分)题号:2123

设j和k都是int类型,则for循环语句(). for(j=0,k=0;j<=9&&k!=876;j++)

scanf("%d",&k);

A:最多执行10次

B:最多执行9次

C:是无限循环

D:循环体一次也不执行

答案:A

第17题(2.0分)题号:2073

下列定义数组的语句中不正确的是().

A:static int a[2][3]={1,2,3,4,5,6};

B:static int a[2][3]={{1},{4,5}};

C:static int a[][3]={{1},{4}};

D:static int a[][]={{1,2,3},{4,5,6}}; 答案:D

第18题(2.0分)题号:2149

char a[10];不能将字符串"abc"存储在数组中的是().

A:strcpy(a,"abc");

B:a[0]=0;strcat(a,"abc");

C:a="abc";

D:int

i;for(i=0;i<3;i++)a[i]=i+97;a[i]=0;

答案:C

第19题(2.0分)题号:2271

若二维数组a有m列,则在a[i][j]前的元素个数为().

A:j*m+i

B:i*m+j

C:i*m+j-1

D:i*m+j+1 答案:B

第20题(2.0分)题号:2072

下列定义数组的语句中正确的是().

A:#define size 10 char

str1[size],str2[size+2];

B:char str[];

C:int num['10'];

D:int n=5; int a[n][n+2];

答案:A

四、程序填空共4题(共计24分)

第1题(6.0分)题号:11

/*-------------------------------------------------------

【程序填空】

---------------------------------------------------------

题目:以下程序的功能是求100-999之间的水仙花数(水仙花数

是指一个三位数的各位数字的立方和是这个数本身,

如:153=1^3+5^3+3^3)。

-------------------------------------------------------*/

int fun(int n)

{ int i,j,k,m;

m=n;

/***********SPACE***********/

【?】

for(i=1;i<4;i++)

{

/***********SPACE***********/

【?】

m=(m-j)/10;

k=k+j*j*j;

}

/***********SPACE***********/

if(k==n) 【?】

else return(0);}

main()

{

int i;

for(i=100;i<1000;i++)

/***********SPACE***********/

if(【?】==1)printf("%d is ok!\n" ,i); }

答案:

=======(答案1)=======

k=0;

=======(答案2)=======

j=m%10;

=========或=========

j=m-m/10*10

=========或=========

j=m-10*(m/10)

=======(答案3)=======

return(1);

=======(答案4)=======

fun(i)

第2题(6.0分)题号:401

/*-------------------------------------------------------

【程序填空】

---------------------------------------------------------

题目:输入某年某月某日,判断这一天是这一年的第几天?

-------------------------------------------------------*/

main()

{int day,month,year,sum,leap;

printf("\nplease input

year,month,day\n"); scanf("%d,%d,%d",&year,&month,&day); switch(month)

{case 1:sum=0;break;

case 2:sum=31;break;

case 3:sum=59;break;

/***********SPACE***********/

case 4:【?】;break;

case 5:sum=120;break;

case 6:sum=151;break;

case 7:sum=181;break;

case 8:sum=212;break;

case 9:sum=243;break;

case 10:sum=273;break;

case 11:sum=304;break;

case 12:sum=334;break;

default:printf("data error");break; }

/***********SPACE***********/ 【?】;

/***********SPACE***********/

if(year%400==0||(【?】)

leap=1;

else

leap=0;

/***********SPACE***********/s

if(【?】)

sum++;

printf("It is the %dth day.",sum); }

答案:

=======(答案1)=======

sum=90

=======(答案2)=======

sum=sum+day

=========或=========

sum= sum + day

=======(答案3)=======

year%4==0&&year%100!=0)

=========或=========

year%4 == 0 && year%100 != 0

=======(答案4)=======

leap==1&&month>2

=========或=========

leap == 1 && month>2

=========或=========

leap == 1 && 2

第3题(6.0分)题号:32

/*-------------------------------------------------------

【程序填空】

---------------------------------------------------------

题目:以下程序的功能:计算并输出500以内最大的10个能被

13或17整除的自然数之和。

-------------------------------------------------------*/

#include

#include

/***********SPACE***********/

int fun(【?】 )

{

int m=0, mc=0, j, n;

/***********SPACE***********/

while (k >= 2 && 【?】)

{

/***********SPACE***********/

if (k%13 == 0 || 【?】)

{ m = m+ k; mc++; }

k--;

}

/***********SPACE***********/

【?】;

}

main ( )

{

clrscr( ); printf("%d\n", fun (500));

}

答案:

=======(答案1)=======

int k

=======(答案2)=======

mc < 10

=========或=========

10 > mc

=========或=========

mc <= 9

=========或=========

9 >= mc

=======(答案3)=======

k%17 == 0

=========或=========

!(k%17)

=========或=========

k/17*17 == k

=======(答案4)=======

return m

=========或=========

return (m)

第4题(6.0分)题号:13

/*-------------------------------------------------------

【程序填空】

---------------------------------------------------------

题目:以下程序的功能是产生并输出杨辉三角的前七行。

1

1 1

1 2 1

1 3 3 1

1 4 6 4 1

1 5 10 10 5 1

1 6 15 20 15 6 1

-------------------------------------------------------*/

main ( )

{

int a[7][7];

int i,j,k;

for (i=0;i<7;i++)

/***********SPACE***********/

{a[i][0]=1; 【?】 ;}

for (i=2;i<7;i++)

/***********SPACE***********/

for (j=1;j<【?】;j++)

/***********SPACE***********/

a[i][j]= 【?】;

for (i=0;i<7;i++)

{

/***********SPACE***********/

for (j=0; 【?】;j++)

printf("%6d",a[i][j]);

printf("\n");

}

}

答案:

=======(答案1)=======

a[i][i]=1

=======(答案2)=======

i

=======(答案3)=======

a[i-1][j]+a[i-1][j-1]

=========或=========

a[i-1][j-1]+a[i-1][j]

=======(答案4)======= j<=i

=========或=========

i>=j

=========或=========

j

=========或=========

i+1>j

=========或=========

j-1

=========或=========

i>j-1

五、程序设计共1题(共计6分)

第1题(6.0分)题号:175

/*------------------------------------------------

【程序设计】

--------------------------------------------------

题目:编写函数fun求1!+2!+3!+ …… +n!的和,在

main函数中由键盘输入n值,并输出运算

结果。请编写fun函数。

例如:若n值为20,则结果为268040729 --------------------------------------------------

注意:部分源程序给出如下。请勿改动主函数main

和其它函数中的任何内容,仅在函数fun的花

括号中填入所编写的若干语句。

------------------------------------------------*/

#include

float fun(int n)

{

/**********Program**********/

/********** End **********/

}

main()

{

int i,n;

long int result;

scanf("%d",&n);

result=fun(n);

printf("%ld\n",result);

getch();

yzj();

}

yzj()

{

FILE *IN,*OUT;

int i;

int iIN;

long int iOUT;

IN=fopen("in.dat","r");

if(IN==NULL)

{printf("Please Verify The Currernt Dir..It May Be Changed");

}

OUT=fopen("out.dat","w");

if(OUT==NULL)

{printf("Please Verify The Current Dir.. It May Be Changed");

}

for(i=0;i<5;i++)

{ fscanf(IN,"%d",&iIN);

iOUT=fun(iIN);

fprintf(OUT,"%ld\n",iOUT);

}

fclose(IN);

fclose(OUT);

}

答案:---------------------- int i;

float f=1,s=0;

for(i=1;i<=n;i++)

{f=f*i;

s=s+f;}

return s;

----------------------