第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.在以下程序中将输入的十进制数以十六进制的形式输出。