资源描述
一、选择题(本题共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. 在循环语句的循环体中执行continue语句,其作用是 C 。
A) 跳出该循环体,提前结束循环 B) 继续执行该语句之后的循环体各语句
C) 结束本次循环,进行下次循环 D) 终止程序运行
5.下列标识符中不合法的变量名是 D 。
A)class3 B)length C)_2abc D)long
6.C语言的一个源文件中定义的全局变量的作用域为 D 。
A)本文件的全部范围 B)本程序的全部范围
C)本函数的全部范围 D)从定义该变量的位置开始至本文件结束
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; float 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≤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 。
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 <stdio.h>
void main( )
{ int i,s=0;
for(i=1;i<10;i+=3) s+=i;
printf("%d\n",s);
}
程序执行后的输出结果是 12
2. #include <stdio.h>
void main( )
{ int i,j,s=0;
int a[ ][3]={{1,2,3},{4,5,6},{7,8,9}};
for(i=0;i<3;i++)
for(j=0;j<3;j++)
if(i!=j) s=s+a[i][j];
printf("s=%d\n",s);
}
程序输出结果: s=30
3. #include <stdio.h>
void main( )
{ char *p,s[ ]="you are a student";
int n=0;
p=s;
while(*p++!= '\0' )
n++;
printf(“n=%d\n”,n);
}
程序输出结果: n=17
4. #include <stdio.h>
void main( )
{ int i,t=1,s=0;
for(i=1;i<=3;i++)
{ t=t*i;
s=s+t; }
printf(“s=%d\n”,s);
}
程序输出结果: s=9
5. struct stu{ char name[10]; int 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]=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 <stdio.h>
void main( )
{ int i,sum;
sum=0 ;
for( i=0; i<=100; i=i+5 )
sum+=i;
printf(″sum=%d\n″,sum);
}
2. 找出一维数组a[10]中的最大值,返回最大值的下标。
#include <stdio.h>
void fun( int a[10])
{ int i,j,max;
j=0;
for(max=a[0],i=1;i<10;i++)
if( a[i]>max )
{
max=a[i];
j=i ;
}
return( j ); }
3. 函数count( )统计链表中结点的个数,head为头指针。
#include <stdio.h>
struct student
{ char name[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++)
if( 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 <stdio.h>
void main( )
{
unsigned m,ws=0,p=0;
scanf(“%u”,&m);
do
{ ws++;
p=p+(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 <stdio.h>
void main ( )
{ int i,j, row=0, colum=0, min;
int a[3][4]={{1,2,3,4},{9,8,7,6}, {–10,10, –5, 2}};
min=a[0][0];
for (i=0;i<=2; i++)
for (j=0; j<=3; j++)
if (a[i][j]<min)
{ min=a[i][j];
row=i;
colum=j;
}
printf( "min=%d,row=%d, colum=%d\n ", min, row, colum);
}
3.设有5个学生的相关数据,每个学生的数据为一个结构体,包括学号、姓名、两门功课的成绩及平均成绩。编写一个函数,要求输入每个学生的所有数据,并计算各个学生的平均成绩,然后依次输出各个学生的数据(学号、姓名、各门课程成绩及平均成绩)。要求学号为整型、姓名为长度为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
展开阅读全文