山西师范大学历年计算机C语言

本试卷为山西师范大学历年计算机C语言,题目包括:单项选择题,填空题,编程题。

覆盖的内容包括:理论题,基础知识,控制结构,循环结构,指针,数组/指针数组,字符串/字符串指针,函数/函数指针,结构体,程序题。

计算机C语言

一、单项选择题 (共20题,每题2分,共计40分)

(  C  )
1、有以下程序
struct stu
{
char name[10];
int num;
int score;
}
;
main( )
{
struct stu s[5]={{"yangsan",20041,703} , {"lisiguo",20042,580 , {"wangyin",20043,680}, {"sundan",20044,550}, {"penghua",20045,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("5d %d\n",s[1].score,p[1]->score);
}
执行后输出结果是________。
A、550 550
B、680 680
C、580 550
D、580 680
(  D  )
2、以下不能正确定义二维数组的选项是________。
A、int a[2][2]={{1},{2}};
B、int a[][2]={1,2,3,4};
C、int a[2][2]={{1},2,3};
D、int a[2][]={{1,2},{3,4}};
(  D  )
3、若有以下说明语句:
struct student
{
int num;
char name[ ];
float score;
} stu;
则下面的叙述不正确的是: ( )
A、struct是结构体类型的关键字
B、struct student 是用户定义的结构体类型
C、num, score都是结构体成员名
D、stu是用户定义的结构体类型名
(  C  )
4、对于类型相同的两个指针变量之间,不能进行的运算是______。
A、<
B、=
C、+
D、-
(  C  )
5、下面各语句行中,能正确进行字符串赋值操作的语句是______。
A、char ST[5]={"ABCDE"} ;
B、char S[5]={'A' , 'B' , 'C' , 'D' , 'E'} ;
C、char *S ; S="ABCDE" ;
D、char *S ; scanf ( "%S" , S );
(  C  )
6、以下正确的叙述是______。
A、C 语言允许 main 函数带形数,且形参个数和形参名均可由用户指定
B、C 语言允许 main 函数带形参,形参名只能是 argc 和 argv
C、当 main 函数带有形参时,传给形参的值只能从命令行中得到
D、有说明 : main ( int argc,char *argv ),则形参 argc 的值必须大于 1
(  C  )
7、下面不属于条件语句关键字的是________。
A、else
B、switch
C、while
D、if
(  A  )
8、下列定义数组的语句中,正确的是______。
A、#define N 10
int x[N];
B、int N=10;
int x[N];
C、int x[0...10];
D、int x[];
(  C  )
9、设有定义语句int a []= { 66,77,99 },则下列对此语句的叙述中错误的是________。
A、定义了一个名为a的一维数组
B、a数组有3个元素
C、a数组的元素的下标为1~3
D、数组中的每一个元素都是整型
(  C  )
10、以下程序的输出结果是________。
#include<stdio.h>
main()
{
int a=1,b=3;
if((++a<0)&&!(b--<=0)) printf("%d,%d\n",a,b);
else printf("%d,%d\n",b,a);
}
A、2,2
B、1,3
C、3,2
D、3,1
(  A  )
11、以下非法的字符常量是________。
A、'\\n'
B、'\101'
C、'\x21'
D、'\0'
(  C  )
12、运行以下程序后,如果从键盘上输入china
A、2,0
B、5,0
C、5,5
D、2,5
(  A  )
13、下面程序的输出结果是_______。
f1(int x)
{
int y;
y=x+x;
return(y);
}
f2(int a ,int b)
{
int z;
z=f1(a*b);
return(z);
}
main( )
{
int a=2,b=5,c;
c=f2(a,b);
printf("%d",c);
}
A、20
B、7
C、4
D、10
(  B  )
14、设char ch='z'; 则表达式"ch=(ch>='a' &&ch<='z')?ch-32:ch"的值是________。
A、'A'
B、'Z'
C、'a'
D、'z'
(  B  )
15、执行循环语句后,i变量的值是________ i=4; while(i--); printf("%d",i);
A、0
B、-1
C、1
D、有错误
(  C  )
16、用冒泡排序对4,5,6,3,2,1进行从小到大排序,第三趟排序后的状态为________。
A、4 5 3 2 1 6
B、4 3 2 1 5 6
C、3 2 1 4 5 6
D、2 1 3 4 5 6
(  B  )
17、c 语言源程序的扩展名为
A、obj
B、c
C、exe
D、cpp
(  D  )
18、宏定义是最常用的预处理功能之一,它用于将一个标识符定义为一个______
A、单精度数
B、双精度数
C、常量
D、字符串
(  B  )
19、以下程序
main()
{
int x[3][2]={0},i;
for(i=0;i<3;i++) scanf("%d",x[i]);
printf("%3d%3d%3d\n",x[0][0],x[0][1],x[1][0]);
}
若运行时输入:246<回车>,则输出结果为________。
A、2 0 0
B、2 0 4
C、2 4 0
D、2 4 6
(  D  )
20、在说明一个结构体变量时系统分配给它的存储空间是________ 。
A、该结构体中第一个成员所需存储空间
B、该结构体中最后一个成员所需存储空间
C、该结构体中占用最大存储空间的成员所需存储空间
D、该结构体中所有成员所需存储空间的总和

二、填空题 (共10题,每题2分,共计20分)

1、c语言程序的基本单位是________。
2、已知char str[]="man",则strlen(str)的值为_____。
3、在c语言数据类型中,浮点型类型包括单精度类型和( )精度类型。
4、c语言中与指针有关的两个运算符是________与*。
5、下列程序段的运行结果是________。
char s1[20]="abcdef", s2[5]="abc";
strcpy(s1,s2);
printf("%c", s1[2]);
6、下面程序段中循环体的执行次数是________。
a=10;
b=0;
do
{
b+=2;
a-=2+b;
}
while(a>=0);
7、将arr传参到子函数,接受处()内函数定义该怎么写?
8、下面程序的功能是求1000 以内的所有完全数。说明:一个数如果恰好等于它的因子之和(除自身外) ,则称该数为完全数。例如: 6=1+2+3 。
#include<stdio.h>
main()
{
int a,i,m;
for(a=1;a<=1000;a++)
{
for( 【1】________;i<=a/2;i++)
if(!(a%i)) 【2】________;
if(m==a) printf("%4d",a);
}
}
9、请补充main()函数,亥函数的功能是求方程ax2+bx+ e=0的两个实数根。方程的系数a、b、c从键盘输入,如果判别式(disc=b*b-4*a*c)小于0,则要求重新输入a、b、c的值。 例如,当a=1,b=2,c=1时,方程的两个根分别是:x1 =-1.00,x2=-1.00。 注意:部分源程序给出如下。 请勿改动函数中的其他任何内容,仅在横线上填入所编写的若干表达式或语旬。 试题程序:
void main()
{
double a,b,c,x1,x2,disc;
do
{
printf("input a,b,c:");
scanf("%1f,%1f,%1f",&a,&b,&c);
disc=b*b一4*a*c;
if(disc<0)
printf("disc=%1f\n input again!\n",disc);
}
while( ________);
printf("****The result****\n");
x1=(-b+ ________ (disc))/(2*a);
x2=(-b- ________(disc))/(2*a);
printf("\nx1=%6.21f\nx2=%6.21f\n",x1,x2);
}
10、定义一个指针数组p,它有4个元素,每个指针指向一个整型数据,定义语句为______。

三、编程题 (共3题,每题0分,共计40分)

1、编写函数
void del(char *s,char c),其功能是在 s 所指字符串中删除与变量 c 相同的 字符,并设计主函数实现: (1)从键盘输入字符串和指定被删除的字符;
(2)调用 del()函数实现删除操作;
(3)输出删除后的字符串。 说明:不允许使用除 gets和 puts之外的任何字符串处理库函数。
2、说明一个枚举类型enummonth它的枚举元素为Jan、Feb、…、Dec。编写能显示上个月名称的函数last_month。例如,输入Jan时能显示Dec。再编写另一个函数printmon用于打印枚举变量的值枚举元素。最后编写主函数调用上述函数生成一张12个月份及其前一个月份的对照表,使用结构体实现
3、求出1到100之间的奇数之和及偶数之和,并将二者输出。