第3部分

模拟试
题


3.1 
模拟试题(一) 
一、单项选择题(20 
分,每题1分) 

1. 可选作用户标识符的是( )
。
A.void B.c5b8 C.for D.3a
2. 在C语言中,非法的八进是( )。制(_) 
A.018 B.016 C.017 D.0257 
3. 若以下选项中的变量已正确定义,则正确的赋值语句是( )。
A.x=8%3 x=xC.=2 x==
126.B.3012 1+2xD.41+23; 

4. 设x,y,k都是it型变量, =(y4,=k=32) x的值
为()。
z,n则执行表达式:x=z16,后,

A.4 B.16 C.32 D.52 
5. 设int型变量a为5,使b不为2的表达式是( )。
A.b=a/2 B.b=6-(-a) C.b=a%2 D.b=a>3?2∶1 
6. 一个C语言程序的执行是从( )
。
A.main函数开始,直到main函数结
束
B. 第一个函数开始,最后一个函数结束
C. 第一个语句开始,最后一个语句结
束
D.main函数开始,直到最后一个函
数
7.C语言中用于结构化程序设计的3种基本结构是( )。
A. 顺序结构、选择结构、模块结构B. 选择结构、循环结构、模块结
构
C.whiledo-whilefor D. 顺序结构、选择结构、循环结
构
8. 以下叙述中不正确的是( )。
A. 在不同的函数中可以使用相同名字的变量
B. 函数中的形式参数是局部变量
C. 在一个函数内的复合语句中定义变量在本函数范围内有效
D. 在一个函数内定义的变量只在本函数范围内有效

96 C 语言程序设计教程实验指导与课程设计(第2 版) 
9.若k为int类型,且k的值为3,执行语句k+=k-=k*k后,k的值为( )。
A.-3 B.6 C.-9 D.-12 
10.有以下程序,输出结果是( )。
#include <stdio.h> 
void main(){ 
int x=3,y=3,z=3; 
printf("%d %d\n",(++x,y++),++z); 
}
A.3 3 B.3 4 C.4 2 D.4 3 
11.若有定义和语句:inta=21,b=021;printf("%x,%d\n",a,b);输出结果是( )。
A.17,15 B.16,18 C.17,19 D.15,17 
12.已有定义语句:intx=3,y=4,z=5;则值为0的表达式是( )。
A.x>y++ B.x<=++y C.x! =y+z>y-z D.y%z>=y-z 
13.能正确表达逻辑关系“a≥10或a≤0”的C语言表达式是( )。
A.a>=10ora<=0 B.a>=10||a<=0 
C.a>=10&&a<=0 D.a>=10|a<=0 
14.n为整型常量,且n=2;while(n--);printf(“%d”,n);执行后的结果是( )。
A.2 B.1 C.-1 D.0 
15.若有以下定义和赋值double*q,a=5.5;int*p,i=1;double*q,a=5.5;int* 
p,i=1;p=&i;q=&a;以下对赋值语句叙述错误的是( )。
A.*p=*q;改变i中的值
B.p=oxffd0;将改变p的值,使p指向地址为ffd0的存储单元
C.*q=*p;等同于a=i; 
D.*p=*q;是取q所指变量的值放在p所指的存储单元
16.若有以下定义语句doublea[8],*p=a;inti=5;对数组元素错误的引用
是( )。
A.*a B.*a[5] C.*(p+i) D.p[8] 
17.以下选项中不能使指针正确指向字符串的是( )。
A.char*ch;*ch="hello" B.char*ch="hello" 
C.char*ch="hello";ch="bye" D.char*ch;ch="hello" 
18.若有以下说明和定义语句:unionuti{intn;doubleg;charch[9];} 
structsrt{floatxy;unionutiuv;}aa;则变量aa所占内存的字节数是( )。
A.9 B.13 C.24 D.17 
19.设有以下语句
typedef struct S{ 
int g; 
char h; 
}T;

第3 部分 模拟试题 97 
则下面叙述中不正确的是( )。
A.可用S定义结构体变量 B.可以用T定义结构体变量
C.S不是struct类型的变量 D.T是structS类型的变量
20.有以下程序
#include <stdio.h> 
void main(){ 
FILE *fp; 
int i,k=0,n=0; 
fp=fopen("d1.dat","w"); 
for(i=1;i<4;i++) fprintf(fp,"%d",i); 
fclose(fp); 
fp=fopen("d1.dat","r"); 
fscanf(fp,"%d%d",&k,&n); 
printf("%d %d\n",k,n); 
fclose(fp); 
} 
执行后输出结果是( )。
A.1 2 B.123 0 C.1 23 D.0 0 
二、填空题(24分,每空2分) 
1.C 语言源程序文件的扩展名是,经过编译后,生成文件的扩展名是
,经过连接后,生成文件的扩展名是。
2.把a,b定义成长整型变量的定义语句是。
3.设x和y均为整型变量,且x=3,y=2,则表达式1.0*x/y的值为。
4.已有定义floatx=5.5;则表达式x=(int)x+2的值为。
5.已有定义intx=0,y=0;则表达式(x+=2,y=x+3/2,y+5)后,变量x的值为
,变量y的值为,表达式的值为。
6.执行for(i=1;i++<=5)语句后,变量i的值为。
7.数组是表示类型相同的数据,而结构体则是若干数据项的集合。
8.C语言中文件是指。
三、阅读程序,写出程序运行结果(25分,每题5分) 
1.程序运行结果为。 
#include <stdio.h> 
void main(){ 
int a=1,c=65,d=97; 
printf("a8=%o,a16=%x\n",a,a); 
printf("c10=%d,c8=%o,c16=%x,cc=%c\n",c,c,c,c); 
d++;

98 C 语言程序设计教程实验指导与课程设计(第2 版) 
printf("d10=%d,dc=%c\n",d,d); 
} 
2.程序运行结果为。 
#include <stdio.h> 
void f(int x,int y){ 
int t; 
if(x<y){ t=x;x=y;y=t; } 
}v
oid main(){ 
int a=4,b=3,c=5; 
f(a,b); 
f(a,c); 
f(b,c); 
printf("%d,%d,%d",a,b,c); 
} 
3.程序运行结果为。 
#include <stdio.h> 
void main(){ 
int i=0,a=2; 
if(i==0) printf("**"); 
else printf("$ $ "); 
printf("*"); 
} 
4.当输入1时,程序运行结果为。 
#include <stdio.h> 
void main(){ 
int sum=0,n; 
scanf("%d",&n); 
while(n<=5){ 
sum+=n; 
n++; 
} 
printf("sum=%d",sum); 
} 
5.程序运行结果为。 
#include <stdio.h> 
void main(){ 
int a[2][3]={{3,2,7},{4,8,6}}; 
int*p,m; 
p=&a[0][0];

第3 部分 模拟试题 99 
m=(*p)*(*(p+2))*(*(p+4)); 
printf("m=%d",m); 
}
四、编程题(31分) 
1.从键盘上输入若干个学生成绩,统计并输出最高成绩和最低成绩,当输入负数时
结束输入。(10分) 
2.求3~100的全部素数,并统计全部素数个数。(10分) 
3.编写程序完成矩阵转置,即将矩阵的行和列对换。(11分) 
如将矩阵
9 7 5 1 
3 1 2 8 
4 6 8 10 
é
.
êêêê 
ù
.
úúúú 
倒置为
9 3 4 
7 1 6 
5 2 8 
1 8 10 
é
.
êêêêê 
ù
.
úúúúú 
3.2 模拟试题(二) 
一、单项选择题(10分,每题2分) 
1.判断字符串s1与字符串s2相等,条件成立的语句是( )。
A.if(s1=s2) B.if(strcmp(s1,s2)) 
C.if(! strcmp(s1,s2)) D.if(strcmp(s1,s2)=0) 
2.二维数组a有m 行n列,则在a[i][j]之前的元素个数为( )。
A.j*n+i B.i*n+j C.i*n+j-1 D.i*n+j+1 
3.以下程序的输出结果是( )。
#include<stdio.h> 
#include<string.h> 
void main(){ 
printf("%d\n", strlen("IBM\n012\t\"\\\0")); 
}
A.10 B.11 C.16 D.12 
4.有如下程序段: 
int i=0; 
while(i++<=2); 
printf("%d", i); 
则正确的执行结果是( )。
A.2 B.3 C.4 D.程序陷入死循环
5.以下定义合法的是( )。

1 00 C 语言程序设计教程实验指导与课程设计(第2 版) 
A.chara[8]="language"; B.inta[5]={0,1,2,3,4,5}; 
C.char*a="string"; D.inta[2][]={0,1,2,3,4,5,6}; 
二、判断对错(6分,每题1分,对:√,错:×) 
1.在C语言中,可以用typedef定义一种新的类型。( ) 
2.C语言中基本数据类型包括整型、实型、字符型。( ) 
3.不同的函数中可以使用相同的变量名。( ) 
4.形式参数是局部变量。( ) 
5.若有定义“int*p[4];”,则标识符p是一个指向有4个整型元素的一维数组的指
针变量。( ) 
6.共用体所占的内存空间大小取决于占空间最多的那个成员变量。( ) 
三、写出下列程序的运行结果(10分,每题2分) 
1.程序运行结果是。 
#include <stdio.h> 
void main(){ 
int a=5, b=4, x, y; 
x=2*a++; 
printf("a=%d, x=%d\n", a, x); 
y=--b*2 ; 
printf("b=%d, y=%d\n", b, y); 
} 
2.程序运行结果是。 
#include<stdio.h> 
void fun1(int x){ 
x=20; 
}v
oid fun2(int b[4]){ 
int j; 
for(j=0; j<4; j++) b[j]=j; 
}v
oid main(){ 
int x=10; 
int a[4]={1,2,3,4}, k; 
fun1(x); 
printf("x=%d\n", x); 
fun2(a); 
for(k=0; k<4; k++) 
printf("%d\n", a[k]); 
} 
3.程序运行时输入:123456789↙,则程序运行结果是。

第3 部分 模拟试题1 01 
#include <stdio.h> 
void main(){ 
int x, y; 
scanf("%2d%*4s%2d", &x, &y); 
printf("%d", y-x); 
} 
4.程序运行结果是。 
#include <stdio.h> 
struct date{ 
int year; 
int month; 
int day; 
}; 
void func(struct date p){ 
p.year=2010; 
p.month=5; 
p.day=22; 
}
void main(){ 
struct date d; 
d.year=2020; 
d.month=4; 
d.day=23; 
printf("%d,%d,%d\n", d.year, d.month, d.day); 
func(d); 
printf("%d,%d,%d\n", d.year, d.month, d.day); 
} 
5.程序运行结果是。 
#include<stdio.h> 
void Fun(int*y){ 
printf("*y=%d\n", *y); 
*y+=20; 
printf("*y=%d\n", *y); 
}
void main(){ 
int x=10; 
printf("x=%d\n", x); 
Fun(&x); 
printf("x=%d\n", x); 
}

1 02 C 语言程序设计教程实验指导与课程设计(第2 版) 
四、阅读程序,在标有下画线的空白处填入适当的表达式或语句,使程序
完整并符合题目要求(10分,每空1分) 
1.从键盘任意输入一个年号,判断它是否是闰年。若是闰年,输出“它是闰年”,否则
输出“它不是闰年”。已知闰年须符合下列条件之一: 
(1)能被4整除,但不能被100整除; 
(2)能被400整除。 
#include <stdio.h> 
void main(){ 
int year, flag; 
printf("Enter year:"); 
scanf("%d", ); 
if( ) flag=1; 
else flag=0; 
if( ) printf("它是闰年\n"); 
else printf("它不是闰年\n"); 
} 
2.输入一个数,判断是否为素数,已知0和1不是素数。 
#include <stdio.h> 
#include < > 
void main(){ 
int n, flag; 
printf("Input n:"); 
scanf("%d", &n); 
flag=IsPrime(n); 
if( ) printf("它是素数\n"); 
else printf("它不是素数\n"); 
}i
nt IsPrime(int m){ 
int i, k; 
if(m<=1) 
return ; 
for (i=2; ; i++){ 
k= ; 
if( ) return 0; 
} 
} 
五、在下面给出的4 个程序中,共有18 处错误(包括语法错误和逻辑错
误),请找出其中的错误,并改正(34分,每找对1个错误,加1分,每修改正确
1个错误,再加1分。只要找对17个即可,多找不加分。) 
1.下面程序的功能是从键盘输入一行字符,统计其中有多少单词。假设单词之间以

第3 部分 模拟试题1 03 
空格分开。已知:判断是否有新单词出现的方法———当前被检验字符不是空格,而前一
被检验字符是空格,则表示有新单词出现。 
#include <stdio.h> 
void main(){ 
int i, num, n=20; 
char str[n]; 
scanf("%s", str); 
if(str[0]!=' ') num=1; 
else num=0; 
for(i=1; i<20; i++) 
if(str[i]!=' '||str[i-1]==' ') num=num++; 
printf("num=%d\n",num); 
} 
2.编写一个函数Inverse(),实现将字符数组中的字符串逆序存放的功能。 
#include<string.h> 
#include<stdio.h> 
#define ARR_SIZE=80; 
void Inverse(char str[]) 
void main(){ 
char a[ARR_SIZE]; 
printf("Please enter a string: "); 
gets(a); 
Inverse(char a[]); 
printf("The inversed string is: "); 
puts(a); 
}v
oid Inverse(char str[]){ 
int len, i=0, j; 
char temp; 
len=strlen(str); 
for(j=len; i<j; i++, j--){ 
temp=str[i]; 
str[j]=str[i]; 
str[j]=temp; 
} 
} 
3.韩信点兵。韩信有一队兵,他想知道有多少人,便让士兵排队报数:按从1至5报
数,最末一个士兵报的数为1;按从1至6报数,最末一个士兵报的数为5;按从1至7报
数,最末一个士兵报的数为4;最后再按从1至11报数,最末一个士兵报的数为10。你知
道韩信至少有多少兵吗? 
#include <stdio.h>

1 04 C 语言程序设计教程实验指导与课程设计(第2 版) 
void main(){ 
int x; 
while(1) 
{ 
if(x%5=1 && x%6=5 && x%7=4 && x%11=10){ 
continue; 
x++; 
} 
} 
printf("x=%d\n",x); 
} 
4.编程输入10个数,找出其中的最大值及其所在的数组下标位置。 
#include <stdio.h> 
int FindMax(int num[], int n, int*pMaxPos); 
void main(){ 
int num[10], maxValue, maxPos, minValue, minPos, i; 
printf("Input 10 numbers:\n "); 
for(i=0; i<10; i++) 
scanf("%d", num[i]); 
maxValue=FindMax(num, 10, maxPos); 
printf("Max=%d, Position=%d\n",maxValue, maxPos); 
}i
nt FindMax(int num[], int n, int *pMaxPos); 
{ 
int i, max; 
max=num[0]; 
for(i=1; i<n; i++){ 
if(num[i]>max){ 
max=num[i]; 
*pMaxPos=i; 
} 
} 
return max; 
}
六、编程题(30分) 
1.编程计算1!+2!+3!+…+10!的值。(12分) 
2.从键盘任意输入某班20个学生的成绩,打印最高分,并统计不及格学生的人数。
(18分) 
要求按如下函数原型进行编程,分别计算最高分和统计不及格学生的人数: 
int FindMax(int score[], int n); 
int CountFail(int score[], int n);

第3 部分 模拟试题1 05 
3.3 模拟试题(三) 
一、单项选择题(20分,每题1分) 
1.C语言程序的基本单位是( )。
A.子程序 B.程序 C.子过程 D.函数
2.在C语言中,非法的十六进制是( )。 
A.0x16 B.018 C.0x17 D.0x2d 
3.不是C语言实型常量的是( )。 
A.55.0 B.0.0 C.55.5 D.55e2.5 
4.字符串xyzw在内存中占用的字节数是( )。 
A.6 B.5 C.4 D.3 
5.若已定义f、g为double类型,则表达式f=1,g=f+5/4的值是( )。
A.2.0 B.2.25 C.2.1 D.1.5 
6.若有语句charc1=d' ',c2=g' ';printf("%c,%d\n",c2-a' '+65,c2-c1);则输出结
果为( )。(a的ASCII码值为97) 
A.M,2 B.G,3 C.G,2 D.D,g 
7.使用语句scanf("a=%f,b=%d",&a,&b);输入数据时,正确的数据输入
是( )。
A.a=2.2,b=3 B.a=2.2 b=3 C.2.2 3 D.2.2,3 
8.表示关系12<=x<=y的C语言表达式为( )。
A.(12<=x)&(x<=y) B.(12<=x)&&(x<=y) 
C.(12<=x)|(x<=y) D.(12<=x)||(x<=y) 
9.设x=1,y=2,m=4,n=3,则表达式x>y?x:m<n?y:n的值为( )。 
A.1 B.3 C.2 D.4 
10.若有说明和语句inta=5,b=6;b*=a+1;则b的值为( )。 
A.5 B.6 C.31 D.36 
11.设整型变量s、t、c1、c2、c3、c4的值均为2,则执行语句(s=c1==c2)||(t=c3> 
c4)后,s,t的值为( )。 
A.1,2 B.1,1 C.0,1 D.1,0 
12.语句for(a=0,b=0;b!=100&&a<5;a++)scanf("%d",&b);scanf最多可
执行次数为( )。
A.4 B.6 C.5 D.1 
13.对于for(s=2; ;s++)可以理解为( )。 
A.for(s=2;0;s++) B.for(s=2;1;s++) 
C.for(s=2;s<2;s++) D.for(s=2;s>2;s++)

1 06 C 语言程序设计教程实验指导与课程设计(第2 版) 
14.若有“charh='a',g='f';inta[6]={1,2,3,4,5,6};”,则数值为4的表达式
为( )。
A.a[g-h] B.a[4] C.a[g' '-d' '] D.a[h' '-c' '] 
15.设“chars[10]="october"};”,则printf("%d\n",strlen(s));输出是( )。 
A.7 B.8 C.10 D.11 
16.若有“inta[3][5]={{2,2},{2,6},{2,6,2}};”,则数组a共有( )个元素。 
A.8 B.5 C.3 D.15 
17.设“inta=5,b,*p=&a;”,则使b不等于5的语句为( )。 
A.b=*&a B.b=*a C.b=*p D.b=a 
18.若有“inta[7]={1,2,3,4,5,6,7},*p=a;”,则不能表示数组元素的表达式
是( )。 
A.*p B.*a C.a[7] D.a[p-a] 
19.若有“intb[4]={0,1,2,3},*p;”,则数值不为3的表达式是( )。 
A.p=s+2,*(p++) B.p=s+3,*p++ 
C.p=s+2,*(++p) D.s[3] 
20.设有如下定义:“structjan{inta;floatb;}c2,*p;”,若有“p=&c2;”,则对c2中
的成员a的正确引用是( )。 
A.(*p).c2.a B.(*p).a C.p->c2.a D.p.c2.a 
二、填空题(24分,每空2分) 
1.C语言标识符由字母、数字和来构造。
2.在C语言中,字符串常量是用括起一串字符。
3.若有语句“inta=25,b=60;b=++a;”,则b的值是。
4.若有“intx=5;while(x>0)printf("%d",x--);”,则循环执行次数为。
5.若有“inta[5],*p=a;”,则p+2表示第个元素的地址。
6.若有语句“inta=5,b=6,y=6;b- =a;y=a+ +;”,则b和y的值分别是
和。
7.已知整型变量a=3,b=4,c=5,写出逻辑表达式a||b+c>c&&b-c的值
是。
8.C语言程序设计的3种基本结构是顺序结构、和。
9.数组是表示类型相同的数据,而结构体可以是若干数据项的集合。
10.C语言中文件是指。
三、阅读程序,写出程序运行结果(20分,每题5分) 
1.程序运行结果为。 
#include <stdio.h> 
void main(){ 
int x=5;

第3 部分 模拟试题1 07 
int y=10; 
printf("%d\n",x++); 
printf("%d\n",++y); 
} 
2.程序运行结果为。 
#include <stdio.h> 
void main(){ 
int y=9,k=1; 
for(;y>0;y--){ 
if(y%3==0){ 
printf("%4d",--y); 
continue; 
} 
k++; 
} 
printf("\nk=%4d,y=%4d\n",k,y); 
} 
3.程序运行结果为。 
#include "stdio.h" 
void main(){ 
int k,j; 
int a[]={3,-5,18,27,37,23,69,82,52,-15}; 
for(k=0,j=k;k<10;k++) 
if(a[k]>a[j]) j=k; 
printf("m=%d,j=%d\n",a[j],j); 
} 
4.程序运行结果为。 
#include <stdio.h> 
void main(){ 
char *p,s[]="ABCD"; 
for(p=s;p<s+4;p++) 
printf("%s\n",p); 
}
四、编程题(36分) 
1.求元素个数为10的一维数组元素中的最大值和最小值。(12分) 
2.输出1900—2026年中所有的闰年。每输出3个年号换一行。(判断闰年的条件为
下面二者之一:能被4整除,但不能被100整除。或者能被400整除。)(12分) 
3.编写函数:输入两个正整数m,n,求它们的最大公约数和最小公倍数。(12分)

1 08 C 语言程序设计教程实验指导与课程设计(第2 版) 
3.4 模拟试题(四) 
一、单项选择题(20分,每题1分) 
1.设intx=1,y=1;表达式(! x++||y--)的值是( )。 
A.0 B.1 C.2 D.-1 
2.#include <stdio.h> 
void main(){ 
int n; 
(n=6*4,n+6),n*2; 
printf("n=%d\n",n); 
} 
此程序的输出结果是( )。
A.n=30 B.n=24 C.n=60 D.n=48 
3.若有如下定义,则( )是对数组元素的正确引用。
int a[10], *p ; 
p=a; 
A.*&a[10] B.a[11] C.*(p+10) D.*p 
4.设整型变量n的值为2,执行语句“n+=n-=n*n;”后,n的值是( )。 
A.0 B.4 C.-4 D.2 
5.以下不能正确定义二维数组的语句是( )。 
A.inta[2][2]={{1},{2}}; B.inta[][2]={1,2,3,4}; 
C.inta[2][2]={{1},2,3}; D.inta[2][]={{1,2},{3,4}}; 
6.程序段( )的功能是将变量u、s中的最小值赋给变量t。 
A.if(u>s)t=u;t=s; B.t=u;if(t)t=s; 
C.if(u>s)t=s;elset=u; D.t=s;if(u)t=u; 
7.下列程序段的输出结果是( )。
#include <stdio.h> 
void main(){ 
int k; 
for(k=1;k<5;k++){ 
if(k%2!=0) printf("#"); 
else printf("*"); 
} 
}
A.#*#* B.*#*# C.## D.以上都不对
8.设变量定义为“inta[3]={1,4,7},*p=&a[2];”,则*p的值是( )。

第3 部分 模拟试题1 09 
A.&a[2] B.4 C.7 D.1 
9.能正确表示a和b同时为正或同时为负的逻辑表达式是( )。
A.(a>=0||b>=0)&&(a<0||b<0) 
B.(a>=0&&b>=0)&&(a<0&&b<0) 
C.(a+b>0)&&(a+b<=0) 
D.a*b>0 
10.C语言中,合法的字符型常量是( )。
A.‘A’ B.“A” C.65 D.A 
11.设有数组定义:chararray[]="China";则数组所占的空间是( )。
A.4字节B.5字节 C.6字节 D.7字节
12.若变量c为char类型,能正确判断出c为小写字母的表达式是( )。
A.a' '<=c<=z' ' B.(c>=a' ')||(c<=z' ') 
C.(a' '<=c)and(z' '>=c) D.(c>=a' ')&&(c<=z' ') 
13.设有定义:longx=-123456L;则以下能够正确输出变量x值的语句是( )。
A.printf("x=%d\n",x) B.printf("x=%ld\n",x) 
C.printf("x=%8dl\n",x) D.printf("x=%LD\n",x); 
14.下列关于指针定义的描述,( )是错误的。 
A.指针是一种变量,该变量用来存放某个变量的地址值 
B.指针变量的类型与它所指向的变量类型一致 
C.指针变量的命名规则与标识符相同 
D.在定义指针时,标识符前的“*”号表示后面的指针变量所指向的内容
15.已知:intx; inty[10];下列( )是合法的。
A.&x B.&(x+3) C.&5 D.&y 
16.指出下面正确的输入语句( )。
A.scanf("a=b=%d",&a,&b); B.scanf("%d,%d",&a,&b); 
C.scanf("%c",c); D.scanf("%f%d\n",&f); 
17.C语言中以追加方式打开一个文件应选择( )参数。
A.r B.w C.rb D.a 
18.break语句正确用法是( )。 
A.无论在任何情况下,都中断程序的执行,退出到系统下一层 
B.在多重循环中,只能退出最靠近的那一层循环语句 
C.跳出多重循环 
D.只能修改控制变量
19.为表示关系x≥y≥z,应使用C语言表达式( )。
A.(x>=y)&&(y>=z) B.(x>=y)AND (y>=z) 
C.(x>=y>=z) D.(x>=z)&(y>=z) 
20.以下可以作为C语言合法整数的是( )。
A.1010B B.0368 C.0Xffa D.x2a2

1 10 C 语言程序设计教程实验指导与课程设计(第2 版) 
二、填空题(16分,每空2分) 
1.C语言的预处理语句以开头。
2.表达式7+8>2&&25%5的结果是。
3.下列程序段是从键盘输入的字符中统计数字字符的个数,用换行符结束循环,补
充程序。 
int n=0,ch; 
ch=getchar(); 
while( ){ 
if( ) n++; 
c=getchar(); 
} 
4.C语言中putchar(c)函数的功能是。
5.int*p的含义是。
6.定义fp为文件型指针变量的定义方法为。
7.数组inta[3][4];共定义了个数组元素。
三、阅读程序,写出程序运行结果(25分,每题5分) 
1.程序运行结果为。 
#include <stdio.h> 
void main(){ 
char s[]="GFEDCBA"; 
int p=6; 
while(s[p]!='D'){ 
printf("%c ", s[p]); 
p=p-1; 
} 
} 
2.程序运行结果为。 
#include <stdio.h> 
int fun(int a, int b){ 
if(a>b) return (a); 
else return (b); 
}v
oid main(){ 
int x=3,y=8,z=6,r; 
r=fun(fun(x,y),2*z); 
printf("%d\n",r); 
}

第3 部分 模拟试题1 11 
3.程序运行结果为。 
#include <stdio.h> 
int fac(int n){ 
static int f=1; 
f=f*n; return(f); 
}v
oid main(){ 
int i; 
for(i=1;i<=5;i++) 
printf("%d!=%d\n",i,fac(i)); 
} 
4.程序运行结果为。 
#include <stdio.h> 
void main(){ 
int n; 
for(n=3; n<=10; n++){ 
if(n%5==0) break; 
printf("%d ",n); 
} 
} 
5.程序运行结果为。 
#include "stdio.h" 
void main(){ 
int a[]={1,2,3,-4,5}; 
int m,n,*p; 
p=&a[0]; p=&a[0]; 
m=*(p+2); 
n=*(p+4); 
printf("%d %d %d ",*p,m,n); 
}
四、编程题(39分) 
1.编程计算下列表达式:s=1!+2!+3!+4!+…+10!。(13分) 
2.从键盘上输入a与n的值,计算sum=a+aa+aaa+aaaa+…(共n项)的和。例
a=2,n=4,则sum=2+22+222+2222。(13分) 
3.求3×3矩阵的主对角线元素之和。(13分)

1 12 C 语言程序设计教程实验指导与课程设计(第2 版) 
3.5 模拟试题(五) 
一、单项选择题(10分,每题2分) 
1.对于一个正常运行和正常退出的C语言程序,以下叙述正确的是( )。
A.程序从main()函数第一条可执行语句开始执行,在main()函数结束
B.程序的执行总是从程序的第一个函数开始,在main()函数结束
C.程序的执行总是从main()函数开始,在最后一个函数中结束
D.从程序的第一个函数开始,在程序的最后一个函数中结束
2.输出结果是( )。 
#include <stdio.h> 
void main(){ 
int a=5, b=4, x, y; 
x=2*a++; 
printf("a=%d, x=%d\t", a, x); 
y=--b*2; 
printf("b=%d, y=%d\n", b, y); 
} 
A.a=6,x=10 b=3,y=8 B.a=6,x=10 b=3,y=6 
C.a=6,x=12 b=3,y=6 D.以上均不对
3.输出结果是( )。 
# include <stdio.h> 
typedef struct{ 
int b; 
int p; 
}TYPEA; 
void f(TYPEA c){ 
c.b +=1; 
c.p +=2; 
}v
oid main(){ 
TYPEA a={1, 2}; 
f(a); 
printf("%d,%d\n", a.b, a.p); 
} 
A.2,3 B.2,4 C.1,4 D.1,2 
4.对于以下程序段,描述正确的是( )。 
int x=-1;

第3 部分 模拟试题1 13 
do{ 
x=x*x; 
}while(!x); 
A.是死循环B.循环执行两次
C.循环执行一次D.有语法错误
5.一个指针数组的定义为( )。
A.int(*ptr)[5]; B.int*ptr[5]; 
C.int*(ptr[5]); D.intptr[5]; 
二、写出下列程序的运行结果(10分,每题2分) 
1.程序运行时输入为2016<回车> 时,则程序运行结果是。 
#include <stdio.h> 
void main(){ 
int n=0; 
char c; 
while((c=getchar( ))!='\n'){ 
if(c>='0' && c<='9') n=n*10+c-'0'; 
} 
printf("value=%d\n", n); 
} 
2.运行结果是。 
#include<stdio.h> 
void main(){ 
int a=1, b=0; 
switch(a){ 
case 1: 
switch(b){ 
case 0: a++; 
b++; 
printf("a=%d, b=%d\n", a, b); 
break; 
case 1: a++; 
b++; 
printf("a=%d, b=%d\n", a, b); 
break; 
} 
case 2: a++; 
b++; 
printf("a=%d, b=%d\n", a, b); 
break; 
} 
}

1 14 C 语言程序设计教程实验指导与课程设计(第2 版) 
3.程序运行结果是。 
#include<stdio.h> 
#include<string.h> 
void main(){ 
printf("%d\n", strlen("IBM\n012\1\")); 
} 
4.程序运行时输入为1<回车>2<回车>3<回车>4<回车>5<回车>6<回
车>7<回车>8<回车>9<回车>10<回车> 时,则程序运行结果为。 
#include<stdio.h> 
void main(){ 
int i, a[10]; 
int*p; 
p=a; 
for(i=0; i<10; i++) 
scanf("%d", p+i); 
for(p=a; p<a+10; p++) 
printf("%d\t", *p); 
printf("\n"); 
for(p=a; p<a+10; p++) 
if (*p %2) printf("%d\t", *p); 
} 
5.程序运行时输入63<空格>14<回车>,则运行结果是。 
#include <stdio.h> 
int mod(int x, int y){ 
return (x %y); 
}v
oid main(){ 
int m, n, r; 
scanf("%d %d", &m, &n); 
r=mod(m,n); 
while(r!=0) 
{ 
m=n; 
n=r; 
r=mod(m,n); 
} 
printf("The Result is : %d\n", n); 
} 
三、阅读程序,在标有下画线的空白处填入适当的表达式或语句,使程序
完整并符合题目要求(8分,每空1分) 
1.在以下程序中将输入的十进制数以十六进制的形式输出。