C语言作业及答案 联系客服

发布时间 : 星期三 文章C语言作业及答案更新完毕开始阅读ae5e3367846a561252d380eb6294dd88d1d23d59

四、程序填空

1、答案是:①x=0 ②xamax ③x2、答案:①y=&b; ②exchange(x,y); 五、程序设计题 1、参考答案:

#define N 10 struct student { char num[6]; char name[8]; int score[4]; float ave; } stu[N]; main()

{ int i,j,max,maxi,sum; float average; /*输入*/

for ( i=0; i

{ printf(“\\nInput scores of student %d,\\n”,i+1);

printf(“No.:”);

scanf(“%s”,stu[i].num); printf(“name:”);

scanf(“%s”,stu[i].name); for(j=0;j<3;j++)

{ printf(“score %d:”,j+i);

scanf(“%d”,&stu[i].score[j]); } }

/*计算*/ average=0; max=0; maxi=0;

for(i=0; i

2、参考答案:

float average( float a[ ], int n) { float aver=0; int j;

for(j=0;j

一、单项选择题

amin

{ sum=0;

for(j=0; j

sum+=stu[i].score[j]; stu[i].avr=sum/3.0; average+=stu[i].avr; if (sum>max)

{ max=sum; maxi=i; }

}

average/=N; /*打印*/

printf(“NO. name score1 score2

score3 average\\n”);

for(i=0; i

{ printf(“%ss”, stu[i].num ,

stu[i].name);

for(j=0; j<3; j++)

printf(“?”,stu[i].score[j]); printf(“%8.2f\\n”,stu[i].avr); }

printf(“average=%6.2f\\n”,average);

printf(“The highest score is : %s, score

total: %d”, stu[maxi].name,max);

}

main()

{ float x[10],y; int j;

for(j=0;j<10;j++) scanf(“%f”,&x[j]); y=average(x,10);

printf(“aver=%.2f\\n”,y); }

1、逗号表达式2,4,6,8的值为( )。

A )2 B)4 C)6 D)8 2、以下选项中非法的表达式是( )

A)0<=x&&x<100 B)i=j = =0 C)(char)(65+3) D)x+1=x+1

3、若定义float a;现要从键盘输入a的数据,其整数位为3位,小数位为2位,则

选用( )。

A)scanf(“%f”,&a); B) scanf(“%5.2f”,a); C) scanf(“%6.2f”,&a); D) scanf(“%f”,a); 4、下列程序的运行结果是( )

main()

{int a=3, b=2, c=1, k=4;

printf(\} A) 4 B) 3 C) 2 D) 1 5、以下程序中,while循环的循环次数是()。

main( )

{ int i=0; while(i<10)

{ if(i<1) continue; if(i==5) break; i++; } } A)1

B)10

C)6

D)死循环,不能确定次数

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

A)3

B)4

C)5

D)不定

7、有关函数参数,下列说法不正确的是( )。

A) 实参可以将数据传给形参; B) 实参和形参是不同的变量;

C) 形参可以将数据传给实参; D) 实参和形参必须个数相等,类型一致。 8、C语言中,变量和函数具有两个属性是( )。

A)作用域和生存期 B)类型和存储类别 C)作用域和类型 D)作用域和存储类别

9、说明语句“int (*p)( ):”的含义是( )。 A)p是一个指向一维数组的指针变量 B)p是指针变量,指向一个整型数据

C)p是一个指向函数的指针,该函数的返回值是一个整型 D)以上都不对

10、说明语句\的含义是( )。 A)p是一个指向int 型数组的指针 B)p是指针变量,它构成了指针数组

C)p是一个指向函数的指针,该函数的返回值是一个整型

D)p是一个指向函数的指针,该函数的返回值是一个指向整型的指针 11、下述程序的执行结果是( )。

#include { union un x; union un x.c[0]=10; { int i; x.c[1]=1; char c[2]; }; printf(“\\n%d”,x.i);} void main( )

A) 266 B)11 C)265 D)138 12、若程序中有如下的说明和定义:

struct ex

{ int x, y ; } …

struct ex x, y;

则会发生的情况是 ( )。

A) 编译时错 B) 程序能顺利编译、连接、执行 C) 能顺利编译和连接,但不能执行 D) 能通过编译,但连接出错 13、C语言可以处理的文件类型是( ) 。

A) 文本文件和数据文件 B) 文本文件和二进制文件

C) 数据文件和二进制文件 D) 数据代码文件 14、下面的for语句( )。

for (x=0, y=0; (y!=123) && (x4); x++) A)是无限循环 B)循环次数不定 C)循环执行4次 D)循环执行3次 15、若有如下说明:

struct

{ char ch; int i; double x;

}arr[2][3]={{‘a’,1,3.45},{‘b’,2,7.89},{‘c’,3,1.93}}; 则表达式( ) 的值为2。

A) arr[0][1].ch B) arr[0][1].i C) arr[0][0].i D) arr[0][2].i 二、判断题

1、条件运算符的结合方向是“自左向右” ( )。

2、switch语句中每一个case的常量表达式的值必须互不相同( )。

3、循环语句中循环体允许包含一个以上的语句,可以不以复合语句形式出现( )。 4、构成C程序的源文件之间以及函数与函数之间,相互位置可以任意( )。 5、C程序中的函数不能嵌套定义,但可嵌套调用( )。

6、从变量的作用域角度来分,可以分为全局变量和局部变量( )。

7、从终端输入一个字符串给字符数组,该字符串两端不必用双引号括起来( )。

8、若有说明:int a[ ][4]={0,0};,则只有a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值0( )。

9、利用指针和结构类型不能构成更复杂的数据结构( )。 10、共用体类型可以出现在结构体类型定义中( )。

11、当一个case语句末包含break语句时,执行完该case语句后跳出switch结构( )。 12、宏定义中的标识符可以用大写字母,也可以用小写字母( )。

13、do-while语句构成的循环,当while语句中的表达式的值为非零时结束循环( )。 14、用“%”作求余运算时,该运算符两侧均应为整型数据 ( )。 15、一个逗号表达式可以与另一个表达式组成一个新的逗号表达式( )。

三、写出程序的运行结果

} 1、 #includestdio.h

2、 #includestdio.h main ( )

{int a=1, b=3, c=5, d=4; main ( )

{int k, j, m; if (ab)

for(k=5; k=1; k- -) if (cd) x=1;

{m=0; else

for (j=k, j=5; j++) if (ac)

m+=k*j; if (bd) x=2;

} else x=3;

printf (“m=%d\\n”, m); else x=6;

} else x=7;

printf(“x=%d”, x);

main( ) 3、#include

main( ) { int a[ ]={1,2,3,4},i,j,s=0; {union Exa j=1; { struct for(i=3;i>=0;i--) {int a; { s=s+a[i]*j; int b; j=j*10; } }out; printf(“s=%d\\n”,s);} int c; 5、#include \ int d; #include \ }e; main( ) e.c=1; e.d=2; { char s1[ ]=\ e.out.a=e.c*e.d; char s2[ ]=\ e.out.b=e.c+e.d; char s3[ ]=\ printf(\ printf(\

} } 4、#include “stdio.h” 四、程序填空

1、下面程序输出100到200之间的素数,每行输出10个素数,请将缺省语句填上,使算法完整。 #include “math.h” main ( )

{int m, k, i, n=0;

for (m=101; m=200; m=m+2) {if ( ① ) printf (“\\n”); k=sqrt(m);

for (i=2, i=k; i++) if ( ② ) break;

if ( i=k+1){printf(“%d”, m); n=n+1;} } }

2、一个函数days,实现求某月某日是该年的第多少天。由主函数将年、月、日传递给days函数,计算后将日数传回主函数输出,请将缺省语句填上,使算法完整。

struct y_m_d { int year; int month; int day; } date; main()