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

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

main()

{ char ch[3][4]={\int i;

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

p[i]=ch[i]; for (i=0;i<3;i++)

printf(\

A)123456780 B)123 456 780 C) 12345678 D) 147 13、已知:int x=6;执行语句“x+=x-=x*x;”后,x的值为( )。

A)36 B)-60 C)60 D)-24

14、下述程序的输出结果是 ( )。 15、在下程序的输出结果是( ) 。

#include #include void main( ) #define SUM(x) 8.88+x { struct st #define PRT(y) printf(“%d”, (int)(y)) { int x; #define prt(y); PRT(y); putchar(‘\\n’) unsigned a : 2; void main( ) unsigned b : 2; { int x=3; }; prt(SUM(3) * x); printf(“\\n%d”,sizeof(struct st)); } } A) 2.5 B) 3 C) 2 D) 不 A)11 B)12 C)17 D)有语法错误,确定 无输出 二、判断题

1、switch语句是多分支选择语句( )。

2、条件表达式中三个表达式的类型可以不同( )。

3、C语句的一个循环体内不允许又包含另一个完整的循环结构( )。 4、C函数体一般由说明语句和执行语句两部分组成( )。 5、C程序以源程序为单位进行编译( )。

6、在函数内部或复合语句内部定义的变量称为内部变量,是局部变量( )。 7、C语言规定只能逐个引用一维字符数组的元素而不能一次引用整个数组( )。

8、如果一个字符数组中包含一个以上结束符’\\0’,则遇第一个’\\0’时输出就结束( )。 9、可以定义一个指针变量,用来指向一个结构体变量( )。 10、不能用typedef声明新的类型名来代替已有的类型名( )。 11、执行C语言程序时,总是从第一个定义的函数开始执行( )。

12、当switch语句中的表达式的值与任何一个case语句中的常量表达式都不相等时,则执行default后面的语句( )。

13、在if语句与else语句的嵌套中,else语句总是和靠近它最近的if语句配对( )。 14、for循环中,当循环条件表达式为真时结束循环( )。 15、宏定义不是C语句,因此不必在行末加“;”( )。 三、写出程序的运行结果

main ( ) 1、 #includestdio.h

{int a=2, b=-1, c=2; main ( )

if (ab) {char i, j;

for (i=‘0’, j=‘9’; ij; i++, j- -) if (b0) c=0; printf(“%c%c”, i, j); else c+=1; printf(“\\n”); printf(“c=%d\\n”, c); } } 2、 #includestdio.h 3、#include

union memb {float v; int n; char c; };

main( )

4、#include \

main()

{ int i,j,a[10];

for(i=1;i<=10;i++) { a[i]=1;

for(j=i-1;j>=2;j--) a[j]=a[j]+a[j-1]; if(i= =4) break; }

for(j=1;j<=i;j++) printf(\}

5、#define EXCH(a,b) {int t; t=a; a=b;

{union memb tag,Sval; tag.n=673; Sval=tag;

printf(\ }

b=t;}

main( ) {

int x=5, y=9;

printf(\ EXCH(x,y);

printf(\\\n\

}

四、程序填空

1、下面的程序输出3到300之间的所有素数,请将缺省的语句填上,使算法完整。 #includestdio.h main ( ) {int i, j;

for {i=3; ① ; i++} {for (j=2; ② ; j++) if ( ③ ) break; if (j==i)

printf (“M”, i); } }

2、 定义一个结构体变量(包括年、月、日)。计算该日在本年中是第几天,注意闰年问题,请将缺

省的语句填上,使算法完整。 struct

{ int year;

int month; int day;

} date; main()

{ int i, days;

int day_tab[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; printf(“Input year,month,day:”); scanf(“%d,%d,%d”, ① ); days=0;

for(i=1; i=3)

days+=1;

printf(“%d / %d is the %d th day in %d.”, date.month, date.day, days,date.year); }

五、程序设计题

1,输入10个学生的信息(包括学号、姓名、性别、年龄、成绩)组成结构数组,分别统计男、女生人数,计算全体学生的平均年龄、平均成绩,并将高于平均分数的学生信息输出。

2、对于一个卡拉OK比赛,有10位评委,各评委的分数从键盘输入,要求求出一个选手的得分。选手的得分为:所有评委中,去掉一个最高分,去掉一个最低分,剩下的求平均分即可。试编程实现此要求。 参考答案:

一、单项选择题

1、C 2、B 3、D 4、 C 5、 D 6、B 7、D 8、D 9、 C 10、 C 11、 B 12、C 13、B 14、 B 15、 C 二、判断题 1、( √ ) 2、( √ ) 3、( × ) 4、( √ ) 5、( √ ) 6、( √ ) 7、( × ) 8、( √ ) 9、( √ ) 10、( × ) 11、( × ) 12、( √ ) 13、( √ ) 14、( × ) 15、 ( √ ) 三、写出程序的运行结果

1、 答案是:0918273645 2、 答案是:c=2

3、答案是: Sval is : 673 4、答案是:1331

5、答案是:x=5,y=9,x=9,y=5 四、程序填空

1、答案是:①i=100 ②j<=i-1 ③i%j==0

2、答案是: ① &date.year,&date.month,&date.day ② date.year@0==0 五、程序设计题

1参考答案 #define N 10

struct student

{ char num[5]; char name[10]; char sex[7]; int age ; int score; }stu[N];

main( ) { int i;

for (i=0; i

{ printf(“Enter student %d record:\\n”,i+1); printf(“NO:”); scanf(“%s”,stu[i].num);

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

printf(“SEX:”); scanf(“%s”,stu[i].sex); printf(“AGE:”);scanf(“%d”,&stu[i].age);

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

printf(“\\n”);

proce(struct student s[N]) { int i, m=0, w=0;

float agesum=0.0, scoresum=0.0, age_aver, score_aver; for(i=0; i

{ agesum+=s[i].age; scoresum+=s[i].score; if (strcmp(s[i].sex, “female”)==0) w++; else m++; }

age_aver=agesum/N; score_aver=scoresum/N; printf(“AVER_SCORE=%6.2f”,score_aver); pritnf(“AVER_AGE=%6.21f\\n”,age_aver); printf(“MEN=%d WOMEN=%d\\n”,m,w);

printf(“\\n NO NAME SEX AGE SCORE\\n”); for(i=0; i

if (s[i].score>score_aver)

{printf(%s--%-10s--%-7s”,s[i].num,s[i].name,s[i].sex); printf(“?]\\n”,s[i].age,s[i].score); } } 2、参考答案 main( )

{ float a[10],max,min,aver; int j;

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

scanf(“%f”,&a[j]); max=min=aver=a[0]; for(j=1;j<10;j++)

{ if(a[j]>max) max=a[j]; if(a[j]

aver=(aver-max-min)/8; }