1、 一、选择题(本题共15小题,每小题2分,共30分) 1. C程序的基本组成单位是 B 。 A)程序 B)函数 C)子程序 D)文件 2. C语言中的整数变量在内存中占 C 个字节。 A) 0 B) 1 C) 2 D)4 3. 设int i=3;与函数f(i, ++i)等价的调用语句为 D 。 A) f(3,3) B) f(3,4) C) f(4,3) D) f(4,4) 4. 在循环语句的
2、循环体中执行continue语句,其作用是 C 。 A) 跳出该循环体,提前结束循环 B) 继续执行该语句之后的循环体各语句 C) 结束本次循环,进行下次循环 D) 终止程序运行 5.下列标识符中不合法的变量名是 D 。 A)class3 B)length C)_2abc D)long 6.C语言的一个源文件中定义的全局变量的作用域为 D 。 A)本文件的全部范围 B)本程序的全部范围 C)本函数的全部范围 D)从定义该变量的位置开始
3、至本文件结束 7. 设a、b、c、d、m、n均为int型变量,且a=3、b=6、c=7、d=8、m=2、n=5,则逻辑表达式(m=a>b)&&(n=c>d)运算后,n的值为 A 。 A) 0 B) 1 C) 5 D) 7 8. 下列 A 描述的全是C语言中的基本数据类型。 A) 字符型、整型 B) 字符型、数组 C)整型、结构体 D) 浮点型、共用体 9.下面定义了共用体类型的变量x,则sizeof(x)的值为 D 。 union { char c[10]; int b; fl
4、oat e; } x; A) 16 B) 4 C) 2 D) 10 10.已知a,b为整型变量,a=2,b=1,则表达式(a=b+2,a+b)的值是 D 。 A) 2 B) 6 C) 3 D) 4 11.当调用函数时,实参和形参是数组名,则向被调用函数传送的是 B 。 A) 数组的长度 B) 数组首元素的地址 C) 数组的值 D) 数组每个元素中的值 12. 能正确表示逻辑关系:“x
5、≤10或x≥20”的C语言表达式是 ( B ) A) x<=10 or x>=20 B) x>=20||x<=10 C) x>=10 && x<=20 D) x£10 and x³20 13.设有以下说明语句,则下面正确的引用是 C 。 struct student { int num; char name[10]; float score;} s1; A) struct.score B) student.score C) s1.name D) s1[2].name 14. 设p是指向字符型数据的指针变量,与p++等价的语句是 A 。
6、
A)p=p+1; B)p=p+2; C)p=p+3; D)p=p+4;
15. 若己定义:int a[ ]={0,1,2,3,4,5,6,7,8,9},*p=a, i; 其中 0≤i≤9, 则对 a中数组元素不正确的引用是 C 。
A) *p B) *(a+i) C) a+i D) p[i]
二、读程序,严格按照程序写出输出结果(本题共5小题,每小题4分,共20分)
1. #include
7、<10;i+=3) s+=i;
printf("%d\n",s);
}
程序执行后的输出结果是 12
2. #include
8、 *p,s[ ]="you are a student";
int n=0;
p=s;
while(*p++!= '\0' )
n++;
printf(“n=%d\n”,n);
}
程序输出结果: n=17
4. #include
9、num; int score; }; void main( ) { struct stu s[5]={{“yangsan”,2041,703},{“licuan”,2042,580}, {“zhangyue”,2043,680},{“sunyue”,2044,550}, {“pengli”,2045,537}},*p[5],*t; int i,j; for(i=0;i<5;i++) p[i]=&s[i]; for(i=0;i<4;i++) for(j=i+1;j<5;j++) if(p[i]->score>p[j]->score) { t=p[i]; p[i]=
10、p[j]; p[j]=t; }
printf(“%d,%d”,s[1].score,p[1]->score);
}
则程序输出结果为: 580,550
三、程序填空题(本题共4小题,每空3分,共30分)
1. 用以下程序计算0+5+10+15+……+100的累加和。请填空。
#include
11、um=%d\n″,sum);
}
2. 找出一维数组a[10]中的最大值,返回最大值的下标。
#include
12、e[10]; struct student *next; }; int count(struct student *head) { int n=0; struct student *p; p=head; while( p!=NULL ) { n++; p=p->next ; } return(n); } 4. 用0到9之间不同的3个数构成一个3位数,统计共可以得到多少个数。 void main( ) { int i,j,k,count; count=0; for(i=1;i<10;i++) for(j=0;j<10;j++) i
13、f( i==j ) continue;
else for(k=0;k<10;k++)
if( k!=i&&k!=j ) count++;
printf(“count=%d\n”,count);
}
四、编程题(本题共3个小题,第1、2小题6分,第3小题8分,共20分)
1. 输入一个无符号整数,求出它的位数以及各位数之和并输出。(例如若输入123,则各位之和为6)
# include
14、m%10);
} while(m/=10);
printf(“%d\t%u\n”,ws,p);
}
2. 有一个3×4的矩阵,要求编写一个函数求出其中值最小的数组元素,以及所在的行号和列号,并输出。数组的初值为a[3][4] ={{1,2,3,4},{9,8,7,6}, {–10,10, –5, 2}}。
#include
15、
min=a[0][0];
for (i=0;i<=2; i++)
for (j=0; j<=3; j++)
if (a[i][j] 16、姓名为长度为8的字符数组、成绩为浮点数。
void main( )
{ struct student
{ int no; char name[8]; float score[2]; float ave; } stu[5];
int i,j;
float temp;
for(i=0;i<5;i++)
scanf(“%d%s%f%f”,&stu[i].no,stu[i].name,&stu[i].score[0],&stu[i].score[1]);
for(i=0;i<5;i++)
{ temp=0;
for(j=0;j<2;j++)
temp=+stu[i].score[j];
stu[i].ave=temp; }
for(i=0;i<5;i++)
{ printf(“no=%d,name=%s,score1=%f,score2=%f,average=%f”,stu[i].no,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].ave);
}
}
4 / 4






