山西师范大学历年计算机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);
}
执行后输出结果是________。
( D )
2、以下不能正确定义二维数组的选项是________。
( D )
3、若有以下说明语句:
struct student
{
int num;
char name[ ];
float score;
} stu;
则下面的叙述不正确的是: ( )
( C )
4、对于类型相同的两个指针变量之间,不能进行的运算是______。
( C )
5、下面各语句行中,能正确进行字符串赋值操作的语句是______。
( C )
6、以下正确的叙述是______。
( C )
7、下面不属于条件语句关键字的是________。
( A )
8、下列定义数组的语句中,正确的是______。
( C )
9、设有定义语句int a []= { 66,77,99 },则下列对此语句的叙述中错误的是________。
( 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 )
11、以下非法的字符常量是________。
( C )
12、运行以下程序后,如果从键盘上输入china
( 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);
}
( B )
14、设char ch='z'; 则表达式"ch=(ch>='a' &&ch<='z')?ch-32:ch"的值是________。
( B )
15、执行循环语句后,i变量的值是________ i=4; while(i--); printf("%d",i);
( C )
16、用冒泡排序对4,5,6,3,2,1进行从小到大排序,第三趟排序后的状态为________。
( B )
17、c 语言源程序的扩展名为
( D )
18、宏定义是最常用的预处理功能之一,它用于将一个标识符定义为一个______
( 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<回车>,则输出结果为________。
( D )
20、在说明一个结构体变量时系统分配给它的存储空间是________ 。
二、填空题 (共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之间的奇数之和及偶数之和,并将二者输出。
相关标签:
- C语言
- 山西师范大学