haihongyuan.com
海量文库 文档专家
赞助商链接
当前位置:首页 >> 文学 >>

C语言程序设计模拟试题2(附答案)new

C语言程序设计模拟试题2(附答案)new


语言程序设计》 《C 语言程序设计》模拟试卷二 一、填空题。(每空 2 分,共 30 分) 填空题。(每空 。( 1.设有变量说明语句 int x=1,y=2; 则执行下述 printf 语句的输出结果是______ printf("%f\n",1.0+x/y); 2.执行下述程序 #include <stdio.h> main() { int x,y; scanf("%2d%*2s%1d",&x,&y); printf("%d\n",x+y); } 若从键盘输入 12345671 则程序的输出结果是________。 3.以下程序的功能是:从键盘上输入若干名学生的成绩(百分制,可带小数,以输入 负数或 0 为结束标志),统计并输出最高成绩和最低成绩。请填空。 #include <stdio.h> main() { float x,amax,amin; scanf("%f",&x); amax=x; amin=x; while ( ) _____。

{ if (x>amax) amax=x; else if (x<amin) amin=x; scanf("%f',&x); } printf("\namax=%f\namin=%f\n",amax,amin); } 4.设 n 是整型变量,且已具有某正整数值。根据下述数学式
1 1 1 1 1 1 1 求 s 的值并输出。 + ? + ? +L+ ? 2 2 3 3 4 n n +1

可编写如下之程序段实现之。请填空。 int k; double s,d; s=0.0; d=1.0; K=0; do { s=s+d; ___ _________;

d=1.0/(k*(k+1)); } while (k<=n); printf("%f\n",s); 5.执行下述程序的输出结果是____ #inclued <stdio.h> main() ____。

{ int a[6],i; for (i=0;i<6;i++) { a[i]=9*(i-2+4*(i>3))%5; printf("%3d",a[i]); } printf("\n"); } 6.执行下述程序时的输出结果是_________ #include <stdio.h> main() { int a[]={2,4,6,},*ptr=&a[0],x=8,y,z; for (y=0;y<3;y++) z=(*(ptr+y)<x)?*(ptr+y):x; printf("%d\n",z); } 7.执行下述程序的输出结果是_____ #include <stdio.h> main() { int a[][2]={10,20,30,40,50,60},(*p)[2]; p=a; printf("%d\n",*(*(p+2)+1)); } 8.执行以下程序的输出结果是___ #include <stdio.h> ______。 _______。 ________。

main() { int s,i,sum(); for (i=1;i<=10;i++) s=sum(i); printf("s=%d\n",s); } sum(int k) { int x=0; return (x+=k); } 9.下述函数定义用来求出两个整数之和,并通过函数的模拟传地址调用,传回两整 数相加之和值,请填空。 void add(int x,int y,____ { *z=x+y; } 10.函数 func 的功能是将整型变量 x 的值转换成二进制数,并将该二进制数的每一 位存入由整型指针 b 所指向的一维数组 a,最低位存放于 a[0]中, 次低位存放于 a[1] 中,依此类推。请填空。 void func(int x,int *b) { int r; do { r=x%2; _____________=r; ___)

x/=2; } while (x); } 11.以下程序中函数 invert 实现将数组内所有数组元素的值逆置。比如,执行本程 序将输出 10 9 8 7 6 5 4 3 2 1

请填空。 #include <stdio.h> main() { int a[10]={1,2,3,4,5,6,7,8,9,10},i,n=10; invert(a,n-1); for (i=0;i<10;i++) printf("%3d”,a[i]); printf("\n"); } invert(int *s,int num) { int *t,k; t=s+num; while (____ { k=*s; *s=*t; *t=k; s++; t--; } ________)

} 12.若有以下定义和说明,则结构体变量 w 在内存中所占的字节数是_____

union aa { float x; float y; char c[6]; }; struct st { union aa v; float w[5]; double ave; } w; 13.执行下述程序的输出结果是______ #include <stdio.h> struct str { float x; char *y; } *m; struct str group[3]={ 95.0,"Li", 82.5,"Wang", 73.5,"Sun" }; main() { m=group; printf("%.lf,%s\n",m->x,m->y); } _______。

14.下面的程序用来统计某文件文件中字符的个数。请填空。 #include <stdio.h> #include <stdlib.h> main() { FILE *fp; long num=0; if ((fp=fopen("fnam.dat","r"))==NULL) { printf("Can't open this file!\n"); exit(0); } while (____ { fgetc(fp); num++; } printf("num=%d\n",num); fclose(fp); } 15.执行下述程序后,输出结果为_____ _______。 #include <stdio.h> #define FUN1(a,b) a+b #define FUN2(a,b) a-b #define CAL(a,b) a*b+a+3 main() { printf("%d\n",CAL(FUN1(3,5),FUN2(4,5))); } _____)

二、单项选择题。(每题 1 分,共 20 分) 单项选择题。(每题 。( 1.以下不是 c 语言规定保留字的是( (A)float (B)integer )。 (D) unsigned )

(C)signed

2.设 int 型变量 x 有初始值 3,则表达式 x++*5/10 的值是( (A)0 (B)1 (C)2 ) (D)3

3.下述程序执行后的输出结果是( #include <stdio.h> main() { int x='f'; printf("%c\n",'a'+(x-'a'+1)); } (A)g 4.设有程序 #include <stdio.h> main() { int i,j; for (i=0,j=1;i<=j+1;i+=2,j--) printf("%d\n",i); } (B)h (C)i

(D)j

在运行上述程序时,for 语句中循环体的执行次数是( (A)3 (B)2 (C)1 (D)0 )

)

5.在下述选项时,没有构成死循环的程序是( (A)int i=100 while (1) { i=i%100+1; if (i>100)

break; } (B)for (;;); (C)int k=1000; do { ++k; }while (k>=10000); (D) int s=36; while (s);--s; 6.假定 a 和 b 为 int 型变量,则执行下述语句组后,b 的值为( a=1; b=10; do { b-=a; a++; } while (b--<0); (A)9 (B)-2 (C)-1 (D)8 )。

7.设有变量说明语句 int a=1,b=0; )。

则执行以下程序段的输出结果为( switch { case 1: switch { (b) (a)

case 0:printf("**0**");break; case 1:printf("**1**");break;

} case 2:printf("**2**");break; } printf("\n"); (A)**0** (B)**0****2** )。 (B)int a[5]={0,1,2,3,4,5}; (D)INT a[]={0,12,3,4,5}; )。 (C)**0****1****2** (D)有语法错误

8.以下合法的数组说明是( (A)char a[7]="string"; (C)char a="string";

9.下述程序代码中有语法错误的行是( int i,ia[10],ib[10]; for (i=0;i<=9;i++) ia[i]=0; ib=ia; (A)第 1 行 10.若已定义 int a[9],*p=a; (B)第 2 行 /*第 1 行*/ /*第 2 行*/ /*第 3 行*/ /第 4 行*/ (C)第 3 行

(D)第 4 行

并在以后的语句中未改变 p 的值,则不能表示 a[1]地址的表达式是( (A)p+1 (B)a+1 (C)a++ (D)++p

)。

11.若有下述说明和语句 int **pp,*p,a=10,b=20; pp=&p; p=&a; p=&b; printf("%d,%d\n",*p,**pp); 则输出结果是( (A)10,10 )。 (B)10,20 (C)20,10 )。 (D)20,20

12.执行下述程序后的输出结果是( #include <stdio.h> func(int a)

{ int b=0; static int c=3; a=c++,b++; return (a); } main() { int a=2,i,k; for (i=0;i<2;i++) k=func(a++); printf("%d\n",k); } (A)3 (B)0 (C)5 (D)4 )。

13.执行下述程序的输出结果是( #include <stdio.h> main() {

int aa[3][3]={{2},{4},{6}}; int i,*p=&aa[0][0]; for (i=0;i<2;i++) { if (i==0) aa[i][i+1]=*p+1; else ++p; printf("%d",*p); } printf("\n");

} (A)23 (B)26 (C)33 (D)36 )。

14.读下面的程序,正确的输出结果是( #include <stdio.h>

static int a=50; void f1(int a) { printf("%d,",a+=10); } void f2(void) { printf("%d,",a+=3); } void main() { int a=10; f1(a); f2(); printf("%d\n",a); } (A)60,63,60 (B)20,23,23 (C)20,13,10 )。 (D)20,53,10

15.执行下述程序的输出结果是( #include <stdio.h> int power(int x,int y); main() { float a=2.6,b=3.4; int p; p=power((int)a,(int)b);

printf("%d\n",p); } int power(int x,int y) { int i,p=1; for (i=y;i>0;i--) p=p*x; return (p); } (A)8 (B)9 (C)27 (D)81

16.已知函数 scopy 的定义如下 void scopy(char *s,char *t) { while (*s++=*t++); } 则该函数的功能是( (A)串复制 )。 (C)串比较 )。 (D)串反向

(B)求串长度

17.执行下述程序的输出是( #include <stdio.h> void main() { struct complex { int re; int im; };

struct complex cp[3]={2,5,4,7}; cp[2].re=cp[0].re+cp[1].re; cp[2].im=cp[0].im+cp[1].im;

printf("%d %d\n",cp[2].re,cp[2].im); } (A)7 11 (B)6 12 (C)9 9 )。 (D)12 6

18.执行下述程序的输出结果是( #include <stdio.h> main() { union { int k; char i[2]; } *s,a; s=&a; s->i[0]=0x39; s->i[1]=0x38; printf("%x\n",s->k); } (A)cccc3839 (B)3938

(C)380039 。

(D)390038

19.有以下程序,则结果为 struct abc { int a, b, c; }; main() {

struct abc s[2]={{1,2,3},{4,5,6}};

int t; t=s[0].a+s[1].b; printf(“%d \n”,t); } A) 5 B) 6 C) 7 D) 8 )。

20.以下程序 for 语句循环体中 printf 语句执行次数是(

#include <stdio.h> #define N 2 #define M N+1 #define NUM (M+1)*M/2 main() { int i; for (i=1;i<=NUM;i++) printf("%d\n",i); } (A)5 (B)6 (C)8 (D)9

三、程序分析题(每题 5 分,共 30 分) 程序分析题( 1.阅读程序,写出执行该程序的输出结果。 #include <stdio.h> main() { char s[]="press a key."; int i; char ch; for (i=0;(ch=s[i])!='\0';i++) { switch (ch) { case 'p': case 'a': case 'k':putchar(ch-32);continue; case ' ':putchar('*');break;

case '.':putchar('!');break; default :putchar(ch);continue;

} putchar('\n'); } }

2.阅读程序,写出执行该程序的输出结果。 #include <stdio.h> #define N 5 main() { int i,j; int a[N][N]; for (i=0;i<N;i++) for (j=0;j<N;j++) if (i>=j) a[i][j]=1; else a[i][j]=a[i][j-1]+1; for (i=0;j<N;j++) { for (j=0;j<N;j++) printf("%3d",a[i][j]); printf("\n"); } }

3.阅读程序,写出执行该程序的输出结果 #include <stdio.h> main()

{ int m[5],n[5],*px,*py,k; px=m;py=n; for (k=1;k<4;k++,px++,py++) { *px=k;*py=2*k; printf("%d,%d",m[k-1],n[k-1]); } printf("\n"); px=&m[1]; py=&n[1]; for (k=1;k<3;k++) { *px+=k;*py*=k; printf("%d,%d,",*px++,*py++); } printf("\n"); }

4.阅读程序,写出执行该程序的输出结果。 #include <stdio.h> void f(int y) { static int i=5; int j=3; j++; printf("%d%d%d=%d\n",i,j,y,i+j+y); i*=2; }

void main() { int x; for (x=1;x<+3;++x) f(x); } 5. 阅读下列程序,写出程序运行的输出结果。 #include <stdio.h> void main() { char a[20]={"1A2B3C"},b[20],*p1,*p2; p1=a,p2=b; do{if (!(*p1>='\0' &&*p1<='9')) {*p2=*p1; p2++; *p2=*p1; } else *p2=*p1; p1++,p2++; } while(*p1='\0'); *p2=*p1; printf(" %s\n",b); } 6. 阅读下列程序,写出程序的主要功能。 main() { int n, I; printf("\nplease input a number:\n");

scanf("%d", &n); printf("%d=", n); for(i=2,i<=n,i ) { while(n != i) { if(n % i == 0) { printf("%d*", i); n = n / i; } else break; } } printf("%d", n); }

四、程序设计题(每小题 10 分,共 20 分) 程序设计题( 1、编写.程序求 1、2、3、4 个数字能组成多少个互不相同且无重复数字的三位 数?都是多少?。 2、有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三个 月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

试卷二参考答案
一、填空题。 填空题。 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 1.000000 17 x!=0 && x<100 && x>0 k++ - 3 -4 0 4 4 3 6 60 s=10 s=10 int *z *(b++) t>s 18 95,Li !feof(fp) 29

二、单项选择题。 单项选择题。 择题 1、 B 7、 B 13、A 13、 19、 19、B 2、 B 8、 A 14、D 14、 20、 20、C 3、 A 9、 D 15、A 15、 4、 C 10、 10、C 16、A 16、 5、 C 11、 11、D 17、B 17、 6、 D 12、 12、D 18、A 18、

三、程序分析题 Key! 1、Press A Key! 2、无任何输出结果。 无任何输出结果。 22,43, 3、 1,22,43,6 3,4,5,12, 12, 4、 541=10 1042=16

5 、1 6、求一个正整数分解质因数。 一个正整数分解质因数。 四、程序设计题 1、 #include "stdio.h" main() { int i, j, k; k; printf("\n"); printf("\n"); for(i=1;i<5; /*以下为三重循环 以下为三重循环*/ for(i=1;i<5; i++ ) /*以下为三重循环*/ for(j=1;j<5; for(j=1;j<5;j++ ) for(k=1;k<5; for(k=1;k<5;k++ ) { if(i != k &&i !=j && j != k) /* 确保 i、j、k 三位互不相同 */ %d\ k); printf("%d, %d, %d\n", i, j, k); } } 2、 #include "stdio.h" main() { f2; long f1, f2; int I; 1; f1 = f2 = 1; 20; for(i = 1;i <= 20; i++ ) { printf("% f2); printf("%ld %ld", f1, f2); if(i % 2 == 0) printf("\n"); 控制输出, printf("\n"); /* 控制输出,每行四个 */

f1 = f1+f2;/* 前两个月加起来赋值给第三个月 */ f1+ f2; f1+f2; f2 = f1+f2; /* 前两个月加起来赋值给第三个月 */ } }



推荐相关:
网站首页 | 网站地图
All rights reserved Powered by 海文库 haihongyuan.com
文档资料库内容来自网络,如有侵犯请联系客服。zhit325@qq.com