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

上传人:b****5 文档编号:4481883 上传时间:2022-12-01 格式:DOCX 页数:22 大小:24.79KB
下载 相关 举报
C语言程序设计模拟试题2附答案new.docx_第1页
第1页 / 共22页
C语言程序设计模拟试题2附答案new.docx_第2页
第2页 / 共22页
C语言程序设计模拟试题2附答案new.docx_第3页
第3页 / 共22页
C语言程序设计模拟试题2附答案new.docx_第4页
第4页 / 共22页
C语言程序设计模拟试题2附答案new.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

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

《C语言程序设计模拟试题2附答案new.docx》由会员分享,可在线阅读,更多相关《C语言程序设计模拟试题2附答案new.docx(22页珍藏版)》请在冰豆网上搜索。

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

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

《C语言程序设计》模拟试卷二

一、填空题。

(每空2分,共30分)

1.设有变量说明语句

intx=1,y=2;

则执行下述printf语句的输出结果是_____。

printf("%f\n",+x/y);

2.执行下述程序

#include<>

main()

{

intx,y;

scanf("%2d%*2s%1d",&x,&y);

printf("%d\n",x+y);

}

若从键盘输入

则程序的输出结果是__17______。

3.以下程序的功能是:

从键盘上输入若干名学生的成绩(百分制,可带小数,以输入负数或0为结束标志),统计并输出最高成绩和最低成绩。

请填空。

#include<>

main()

{

floatx,amax,amin;

scanf("%f",&x);

amax=x;

amin=x;

while(X>0&&X<=100)

{

if(x>amax)

amax=x;

elseif(x

amin=x;

scanf("%f”,&x);

}

printf("\namax=%f\namin=%f\n",amax,amin);

}

4.设n是整型变量,且已具有某正整数值。

根据下述数学式

求s的值并输出。

可编写如下之程序段实现之。

请填空。

intk;

doubles,d;

s=;

d=;

K=0;

do

{

s=s+d;

_k++_________;

d=(k*(k+1));

}while(k<=n);

printf("%f\n",s);

5.执行下述程序的输出结果是_-3-40443_______。

#inclued<>

main()

{

inta[6],i;

for(i=0;i<6;i++)

{

a[i]=9*(i-2+4*(i>3))%5;

printf("%3d",a[i]);

}

printf("\n");

}

6.执行下述程序时的输出结果是____6_____________。

#include<>

main()

{

inta[]={2,4,6,},*ptr=&a[0],x=8,y,z;

for(y=0;y<3;y++)

z=(*(ptr+y)

x;

printf("%d\n",z);

}

7.执行下述程序的输出结果是____60________。

#include<>

main()

{

inta[][2]={10,20,30,40,50,60},(*p)[2];

p=a;

printf("%d\n",*(*(p+2)+1));

}

8.执行以下程序的输出结果是___s=10______。

#include<>

main()

{

ints,i,sum();

for(i=1;i<=10;i++)

s=sum(i);

printf("s=%d\n",s);

}

sum(intk)

{

intx=0;

return(x+=k);

}

9.下述函数定义用来求出两个整数之和,并通过函数的模拟传地址调用,传回两整数相加之和值,请填空。

voidadd(intx,inty,___int*z____)

{

*z=x+y;

}

10.函数func的功能是将整型变量x的值转换成二进制数,并将该二进制数的每一位存入由整型指针b所指向的一维数组a,最低位存放于a[0]中,次低位存放于a[1]中,依此类推。

请填空。

voidfunc(intx,int*b)

{

intr;

do

{

r=x%2;

____*b++___=r;

x/=2;

}while(x);

}

11.以下程序中函数invert实现将数组内所有数组元素的值逆置。

比如,执行本程序将输出

10987654321

请填空。

#include<>

main()

{

inta[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,intnum)

{

int*t,k;

t=s+num;

while(____t>=s________)

{

k=*s;

*s=*t;

*t=k;

s++;

t--;

}

}

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

unionaa

{

floatx;

floaty;

charc[6];

};

structst

{

unionaav;

floatw[5];

doubleave;

}w;

13.执行下述程序的输出结果是__95,Li___________。

#include<>

structstr

{

floatx;

char*y;

}*m;

structstrgroup[3]={

"Li",

"Wang",

"Sun"

};

main()

{

m=group;

printf("%.lf,%s\n",m->x,m->y);

}

14.下面的程序用来统计某文件文件中字符的个数。

请填空。

#include<>

#include<>

main()

{

FILE*fp;

longnum=0;

if((fp=fopen("","r"))++)==NULL)

{

printf("Can'topenthisfile!

\n");

exit(0);

}

while(!

{

fgetc(fp);

num++;

}

printf("num=%d\n",num);

fclose(fp);

}

15.执行下述程序后,输出结果为___29______。

#include<>

#defineFUN1(a,b)a+b

#defineFUN2(a,b)a-b

#defineCAL(a,b)a*b+a+3

main()

{

printf("%d\n",CAL(FUN1(3,5),FUN2(4,5)));

}

 

二、单项选择题。

(每题1分,共20分)

1.以下不是c语言规定保留字的是(B)。

(A)float(B)integer(C)signed(D)unsigned

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

(A)0(B)1(C)2(D)3

3.下述程序执行后的输出结果是(A )

#include<>

main()

{

intx='f';

printf("%c\n",'a'+(x-'a'+1));

}

(A)g(B)h(C)i(D)j

4.设有程序

#include<>

main()

{

inti,j;

for(i=0,j=1;i<=j+1;i+=2,j--)

printf("%d\n",i);

}

在运行上述程序时,for语句中循环体的执行次数是(C)

(A)3(B)2(C)1(D)0

5.在下述选项时,没有构成死循环的程序是(C)

(A)inti=100

while

(1)

{

i=i%100+1;

if(i>100)

break;

}

(B)for(;;);

(C)intk=1000;

do

{

++k;

}while(k>=10000);

(D)ints=36;

while(s);--s;

6.假定a和b为int型变量,则执行下述语句组后,b的值为(D)。

a=1;

b=10;

do

{

b-=a;A

a++;

}while(b--<0);

(A)9(B)-2(C)-1(D)8

7.设有变量说明语句

inta=1,b=0;

则执行以下程序段的输出结果为(B)。

switch(a)

{

case1:

switch(b)

{

case0:

printf("**0**");break;

case1:

printf("**1**");break;

}

case2:

printf("**2**");break;

}

printf("\n");

(A)**0**(B)**0****2**(C)**0****1****2**(D)有语法错误

8.以下合法的数组说明是(A)。

(A)chara[7]="string";(B)inta[5]={0,1,2,3,4,5};

(C)chara="string";(D)INTa[]={0,12,3,4,5};

9.下述程序代码中有语法错误的行是(D)。

inti,ia[10],ib[10];/*第1行*/

for(i=0;i<=9;i++)/*第2行*/

ia[i]=0;/*第3行*/

ib=ia;/第4行*/

(A)第1行(B)第2行(C)第3行(D)第4行

10.若已定义

inta[9],*p=a;

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

(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);

则输出结果是(D)。

(A)10,10(B)10,20(C)20,10(D)20,20

12.执行下述程序后的输出结果是(D)。

#include<>

func(inta)

{

intb=0;

staticintc=3;

a=c++,b++;

return(a);

}

main()

{

inta=2,i,k;

fori=0;i<2;i++)

k=func(a++);

printf("%d\n",k);

}

(A)3(B)0(C)5(D)4

13.执行下述程序的输出结果是(A)。

#include<>

main()

{

intaa[3][3]={{2},{4},{6}};

inti,*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.读下面的程序,正确的输出结果是(D)。

#include<>

staticinta=50;

voidf1(inta)

{

printf("%d,",a+=10);

}

voidf2(void)

{

printf("%d,",a+=3);

}

voidmain()

{

inta=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.执行下述程序的输出结果是(A)。

#include<>

intpower(intx,inty);

main()

{

floata=,b=;

intp;

p=power((int)a,(int)b);

printf("%d\n",p);

}

intpower(intx,inty)

{

inti,p=1;

for(i=y;i>0;i--)

p=p*x;

return(p);

}

(A)8(B)9(C)27(D)81

16.已知函数scopy的定义如下

voidscopy(char*s,char*t)

{

while(*s++=*t++);

}

则该函数的功能是(A)。

(A)串复制(B)求串长度(C)串比较(D)串反向

17.执行下述程序的输出是(B)。

#include<>

voidmain()

{

structcomplex

{

intre;

intim;

};

structcomplexcp[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)711(B)612(C)99(D)126

18.执行下述程序的输出结果是(A)。

#include<>

main()

{

union

{

intk;

chari[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.有以下程序,则结果为B。

structabc

{inta,b,c;};

main()

{structabcs[2]={{1,2,3},{4,5,6}};

intt;

 t=s[0].a+s[1].b;

  printf(“%d\n”,t);

}

A)5   B)6  C)7  D)8

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

#include<>

#defineN2

#defineMN+1

#defineNUM(M+1)*M/2

main()

{

inti;

for(i=1;i<=NUM;i++)

printf("%d\n",i);

}

(A)5(B)6(C)8(D)9

三、程序分析题(每题5分,共30分)

1.阅读程序,写出执行该程序的输出结果。

#include<>

main()

{

chars[]="pressakey.";

inti;

charch;

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');

}

}

Press*A*Key!

2.阅读程序,写出执行该程序的输出结果。

#include<>

#defineN5

main()

{

inti,j;

inta[N][N];

for(i=0;i

for(j=0;j

if(i>=j)

a[i][j]=1;

else

a[i][j]=a[i][j-1]+1;

for(i=0;j

{

for(j=0;j

printf("%3d",a[i][j]);

printf("\n");

}

}

不输出任何结果

3.阅读程序,写出执行该程序的输出结果

#include<>

main()

{

intm[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");

}

1,22,43,6

3,4,4,8,

4.阅读程序,写出执行该程序的输出结果。

#include<>

voidf(inty)

{

staticinti=5;

intj=3;

j++;

printf("%d%d%d=%d\n",i,j,y,i+j+y);

i*=2;

}

voidmain()

{

intx;

for(x=1;x<+3;++x)

f(x);

}

541=10

1042=11

5.阅读下列程序,写出程序运行的输出结果。

#include<>

voidmain()

{chara[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);

}

1

6.阅读下列程序,写出程序的主要功能。

main()

{

intn,I;

printf("\npleaseinputanumber:

\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);

}

将整数n表示为其所有质因子乘积

四、程序设计题(每小题10分,共20分)

1、编写.程序求1、2、3、4个数字能组成多少个互不相同且无重复数字的三位数都是多少。

#include<>

Voidmain()

{

Inti,j,k,m=0;

For(i=1;i<=4;i++)

For(j=1;j<=4;j++)

For(k=1;k<=4;k++)

While(i!

=j&&j!

=k&&k!

=i)

{

Printf(“%5d”,100*i+10*j+k);

m++;

}

Printf(“\n”);

Printf(“所有不重复的三位数个数为:

%d”,m);

Printf(“\n”);

}

2、有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少

#include<>

Intfanio(intn)

{

If(n==1)

Return1;

Elseif(n==2)

Return1;

Else

Returnfanio(n-1)+fanio(n-2);

}

Voidmian()

{

Inti,n;

Printf(“请输入月份上限\n”);

Scanf(“%d”,&n);

Printf(“所有月份的兔子总数\n”);

For(i=1;i<=n;i++)

Printf(“第%d月的兔子总数为:

%d”,i,fanio(i));

Printf(“\n”);

}

 

试卷二参考答案

一、填空题。

1.

2.17

3.x!

=0&&x<100&&x>0

4.k++

5.-3-40443

6.6

7.60

8.s=10

9.int*z

10.*(b++)

11.t>s

12.18

13.95,Li

14.!

feof(fp)

15.29

二、单项选择题。

1、B2、B3、A4、C5、C6、D

7、B8、A9、D10、C11、D12、D

13、A14、D15、A16、A17、B18、A

19、B20、C

三、程序分析题

1、PressAKey!

2、无任何输出结果。

3、1,22,43,6

3,4,5,12,

4、541=10

1042=16

5、1

6、求一个正整数分解质因数。

四、程序设计题

1、

#include""

main()

{

inti,j,k;

printf("\n");

for(i=1;i<5;i++)/*以下为三重循环*/

for(j=1;j<5;j++)

for(k=1;k<5;k++)

{

if(i!

=k&&i!

=j&&j!

=k)/*确保i、j、k三位互不相同*/

printf("%d,%d,%d\n",i,j,k);

}

}

2、

#include""

main()

{

longf1,f2;

intI;

f1=f2=1;

for(i=1;i<=20;i++)

{

printf("%ld%ld",f1,f2);

if(i%2==0)

printf("\n");/*控制输出,每行四个*/

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

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

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 金融投资

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1