C语言答案.docx

上传人:b****5 文档编号:6469876 上传时间:2023-01-06 格式:DOCX 页数:43 大小:43.11KB
下载 相关 举报
C语言答案.docx_第1页
第1页 / 共43页
C语言答案.docx_第2页
第2页 / 共43页
C语言答案.docx_第3页
第3页 / 共43页
C语言答案.docx_第4页
第4页 / 共43页
C语言答案.docx_第5页
第5页 / 共43页
点击查看更多>>
下载资源
资源描述

C语言答案.docx

《C语言答案.docx》由会员分享,可在线阅读,更多相关《C语言答案.docx(43页珍藏版)》请在冰豆网上搜索。

C语言答案.docx

C语言答案

C语言模拟题答案

一、选择题:

1、下列哪一个选项不是结构化程序三种基本结构的共同特点:

D:

有分支结构

2、设inta,b,c;执行表达式a=b=1,a++,b+1,c=a+b--后,a,b和c的值分别是:

B:

2,0,3

3、若整型变量A、B、C、D中的值依次为:

1、4、3、2。

则条件表达式D

A:

C的值为:

A:

1

4、表示数学中的关系x

B:

(x

5、在C语言中,设x为int型变量,则执行以下语句后,x的值为

x=10;x=x+--x;:

C:

18

6、在C语言中,执行下面语句后,输出的结果是

intx=10,y=3;printf("%d\n",y=x/y);

C:

3

7、在C语言中,假定所有变量均已正确说明,下列程序段运行后x的值是

a=b=c=0;x=99;

if(!

a)x=9;

elsex=3;

B:

9

8、在C语言中,执行语句:

for(i=1;i<4;i++);后,变量i的值是:

B:

4

9、设intk;则语句for(k=0;k=1;k++);和语句for(k=0;k==1;k++);执行的次数分别是:

A:

无限和0

10、执行语句

printf("Hequestionisinc:

\\tools\book.exe");

其输出为:

C:

Hequestionisinc:

\toolook.exe

11、函数floatAAA(floatx,inty)

{floati,fc=1;

while(y>0)

{

fc*=x;y--;}

returnfc;

}

的功能是:

A:

求x的y次方

12、对两个静态字符数组A和B进行如下初始化。

staticcharA[]="ABCDEF";

staticcharB[]={'A','B','C','D','E','F'};

则下列叙述正确的是:

D:

A数组长度比B数组长

13、对于for(表达式1;;表达式3)可理解为:

B:

for(表达式1;1;表达式3)

14、C语言中,FILE结构指针变量名stdin代表哪类文件。

D:

标准输入

15、下列循环体执行()次

k=70;

while(k=0)k-=1;

D:

0次

16、有以下程序

#defineP3

voidF(intx){return(P*x*x);}

main()

{printf("%d\n",F(3+5));}

程序运行后的输出结果是

D:

编译出错

17、在一个源程序文件中定义的全局变量的有效范围为

C:

从定义处开始到该源程序文件结束

18、有以下程序

main()

{

intp[3]={11,12,13},i=0,j=0;

while(i++<2)if(p[i]%2)j+=p[i];

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

}程序运行后的输出结果是

A:

13

19、以下能正确定义一维数组的选项是:

D:

chara[5]="0123";

20、与定义charc[]={"GOD"};不等价的是

D:

charc[3]={"GOD"};

21、对于下面程序段,执行的结果是

charc[5]={‘a’,’b’,’\0’,’c’,’\0’};

printf(“%s”,c);

B:

ab

22、设charQ='a',*p=&Q;下面说法中错误的是

C:

&p=&Q

23、有以下程序

main()

{inta[]={1,2,3,4,5,6,7,8,9,0},*p;

for(p=a;p<=a+9;p++)printf("%d,",*p);

程序运行后的输出结果是

A:

1,2,3,4,5,6,7,8,9,0,

24、若有语句:

inta=4,*p=&a;,下面均代表地址的一组选项是

C:

&a,p,&*p

25、设有语句:

inta[10],*p=a;,则下面的语句中,不正确的是

D:

a=a+1;

26、当int类型长度为2字节时,则类型unsignedint的值域范围为

0至65535

27、有如下程序:

#include

intb;

voidf()

{intt2;t2=b*3;b=100;}

voidmain()

{inta=2;

b=4;f1();

}

叙述正确的是:

D:

a是局部变量,b是全局变量。

28、下面的for循环最多可执行________次。

for(x=0,y=0;(y!

=99)&&(x<4);x++);

A:

4次

29、下列判断char类型变量C1是否为数字的表达式中,哪个表达式最简单且正确。

B:

(C1>='0')&&(C1<='9')

30、若有以下的说明,则对初值中字符'a'的引用方式为________。

staticstruct

{charch;

doublex;

chart;

}c[2][2]={{{'a',35,'b'},{'c',45,'d'},{'a',86,'m'}}};

D:

c[0][0].ch

二、判断题:

1、在C程序中,注释部分从/*开始,到*/结束。

T

2、switch语句中,case后面既可以跟常量,也可以跟已赋值的变量。

F

3、一个C语言程序中包含有多个函数时,按书写顺序从上到下执行各函数。

F

4、若一个函数的返回类型为void,则表示其没有返回值。

T

5、student_name、_name、name8和name_8都是合法标识符。

T

6、不对自动(auto)数组进行初始化,数值型数组隐含初值为0,字符数组隐含初值空字符'\0'。

F

7、假设int型数组a的起始地址为2000,则元素a[3]的地址为:

2000+4×2=2008。

F

8、结构化程序设计认为一个"好"程序主要应该是:

程序短而紧凑。

F

9、如果知道整型变量a的地址是2000,可以直接用int*pa=2000;给指针变量pa赋值,使其指向变量a。

F

10、在C语言的if语句中,用作判断的表达式只能为逻辑表达式和关系表达式。

F

 

三、综合应用题

1、计算下面公式的值。

T=1/1!

+1/2!

+1/3!

+……+1/m!

当m=10时的结果(按四舍五入保留3位小数)。

(注:

所有变量用float数据类型定义!

答案:

1.718

2、求[10,2000]之间能被2或3或5整除的数之和。

改正程序中的错误(共3处错误)。

答案:

1466295

#include

voidmain()

{

intsum;

inti;

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

if(i%2==0&&i%3==0&&i%5==0)

sum=sum+i;

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

}

3、/*下面程序的功能是:

计算并输出500以内的最大的10个能被13或者17整除的自然数之和。

请改正程序中的错误,并运行,最后给出程序运行的正确结果。

(注:

只有一处错误!

)*/

#include

voidmain()

{

inttotal=0,mc=1,k=500;

intpm[10],count=0;

while((k>=2)&&mc<=10)

{

if((k%13==0)||(k%17==0))

{

pm[mc]=k;

mc++;

}

k--;

}

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

total+=pm[k-1];

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

}

 

答案:

4622

4、下列程序的功能是:

求出以下分数序列的前30项之和,

2/1,3/2,5/3,8/5,13/8,21/13,……请改正程序中的错误,并运行修改后程序,给出程序结果(按四舍五入保留6位小数)。

结果:

48.840601。

(有3处错误)

#include

#include

main()

{intk;

doubles;

longa,b,c;

clrscr();

s=0.0;a=2;b=1;

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

s=s+a/b;

c=a;a=a+b;b=c;

printf("\n结果:

%lf\n",s);

}

5、/*求200到1000之间的双胞胎数的对数。

双胞胎数:

两素数差为2称为双胞胎数。

例如227和229是一对双胞胎数,它们都是素数且差为2。

*/

#include

intprime(intx)

{

intk;

for(k=2;k

if(__________)break;

if(k==x)return1;

elsereturn0;

}

voidmain()

{inta,b,n=0;

intprime(intx);

for(a=200;a<=998;a++)

{

if(prime(a)==1)

{b=a+2;

if(__________)n++;

}

}

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

}

答案:

20

C语言程序设计题库及答案

1、计算下面公式的值。

T=1/1!

+1/2!

+1/3!

+……+1/m!

当m=5时的结果(按四舍五入保留3位小数)。

(注:

所有变量用float数据类型定义!

)答案:

1.717

#include

floatjc(floatx)

{

floatjc=1,i;

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

jc=jc*i;

returnjc;

}

voidmain()

{

floatjc(floatx);

floatm,t=0,i;

printf("PleaseInput:

\n");

scanf("%f",&m);

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

t=t+1/jc(i);

printf("t=%.3f\n",t);

}

2、程序填空:

用*号输出字母C的图案。

#include"stdio.h"

#include"conio.h"

main()

{

_printf("***\n");__

  printf("*\n");

printf("*\n");

printf("***\n");

  getch();

}

3、8232和9678,它们的个、十、百、千各位数字之和是15的倍数,8+2+3+2=15,9+6+7+8=30。

编写程序,求四位数的所有奇数中,这样的数(各位数字之和是15的倍数)的总和。

(注:

所有变量用long数据类型定义!

)答案:

1533459

#include

longf(longx)

{

longs=0;

if(x%2!

=0)

{

while(x>0)

{

s=s+x%10;

x=x/10;

}

if(s%15==0)return1;

elsereturn0;

}

elsereturn0;

}

voidmain()

{

longf(longx);

longi,sum=0;

for(i=1000;i<=9999;i++)

if(f(i))

sum=sum+i;

printf("sum=%ld\n",sum);

}

4、下面程序的功能是:

计算并输出700以内的最大的10个能被13或者17整除的自然数之和。

请改正程序中的错误,并运行,最后给出程序运行的正确结果。

(注:

只有一处错误!

)答案:

6591

#include

voidmain()

{

inttotal=0,mc=1,k=700;//改为:

inttotal=0,mc=0,k=700;

intpm[10],count=0;

while((k>=2)&&mc<=10)

{

if((k%13==0)||(k%17==0))

{

pm[mc]=k;

mc++;

}

k--;

}

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

total+=pm[k-1];

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

}

5、求x=1+1/5+1/7+1/9+…的近似值,直到最后一项的绝对值小于10-5为止。

#include

#include

main()

{

inti;

doublex;

x=1;

i=5;

do

{

x=x+1/(double)i;

i=i+2;

}while(fabs(1/(double)i)>1e-5);

printf("%.2lf\n",x);

}

输出:

6.058

6、计算如下公式的A20值。

A1=1,A2=1/(1+A1),A3=1/(1+A2),A4=1/(1+A3),......(按四舍五入保留10位小数)。

答案:

0.6180339850

(1)可用递归:

1n=1

F(n)=

1/(1+f(n-1))n>1

#include

doublef(doublen)

{

doublea;

if(n==1)a=1;

elsea=1.0/(1+f(n-1));

returna;

}

voidmain()

{

doublef(doublen);

printf("f(20)=%.10lf\n",f(20));

}

(2)不用递归:

#include

voidmain()

{

doublei,c,a=1,b=1,x;

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

{

c=a;

a=b;

b=c+b;

}

x=a/b;

printf("x=%.10lf\n",x);

}

7、求[10,1600]之间能被7整除的奇数之和。

答案:

90965

(1)用函数可写成:

#include

intjx(intx)

{

if(x%2!

=0)return1;

elsereturn0;

}

intf(intx)

{

if(jx(x))

if(x%7==0)return1;

elsereturn0;

elsereturn0;

}

voidmain()

{

intjx(intx);

intf(intx);

inti,s=0;

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

if(f(i))s=s+i;

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

}

(2)不用函数可写成:

#include

voidmain()

{

intjx(intx);

intf(intx);

inti,s=0;

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

if(i%2!

=0&&i%7==0)s=s+i;

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

}

8、函数mystrlen(char*s)的功能是求字符串s的长度。

请填空。

intmystrlen(char*s)

{intnum=0;

while(*s++!

='\0'){_num++_;}

return(num);

9、[100,500]之间同时满足除以7余5,除以5余3,除以3余1的整数之和。

答案:

1042

#include

voidmain()

{

inti,sum=0;

for(i=100;i<=500;i++)

{

if(i%7==5&&i%5==3&&i%3==1)

sum=sum+i;

}

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

}

10、求[100,999]之间所有的素数的个数。

答案:

143

#include

intsushu(intx)

{

inti;

for(i=2;i

if(x%i==0)break;

if(i==x)return1;

elsereturn0;

}

voidmain()

{

intsushu(intx);

inti,num=0;

for(i=100;i<=999;i++)

if(sushu(i))

num++;

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

}

11、编写程序,求满足下列条件的所有四位数ABCD的个数,该四位数是8的倍数,且A+B=B+C,即第1位数加上第2位数等于第2位数加上第3位数。

答案:

110

#include

intf(intx)

{

inta,b,c,d;

a=x/1000;

b=x/100%10;

c=x/10%10;

d=x%10;

if(a+b==b+c)return1;

return0;

}

voidmain()

{

inti,num=0;

for(i=1000;i<=9999;i++)

if(i%8==0)

if(f(i))num++;

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

}

12、数列1,2,1,4,7,12,23…具有这样的特征,从第四项(也就是4)开始,每一项是前三项之和,4=1+2+1,7=2+1+4,12=1+4+7….。

下列程序的功能是求出该数列前10项的和。

请改正程序中的错误,并运行修改后的程序,给出程序结果。

(注:

只有一处错误!

答案:

311

#include

voidmain()

{

longsum=0,a[30]={1,2,1};

intk,j;

for(k=3;k<10;k++)

a[k]=a[k-1]+a[k-2]+a[k-3];

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

sum+=a[j];//改为:

sum+=a[j-1];

printf("%ld\n",sum);

}

13、/*求1到2000之间的双胞胎数的对数。

双胞胎数:

两素数差为2称为双胞胎数。

例如227和229是一对双胞胎数,它们都是素数且差为2。

*/答案:

61

#include

intprime(intx)

{

intk;

for(k=2;k

if(_x%k==0_)break;

if(k==x)return1;

elsereturn0;

}

voidmain()

{inta,b,n=0;

intprime(intx);

for(a=2;a<=1998;a++)

{

if(prime(a)==1)

{b=a+2;

if(_prime(b)==1_)n++;

}

}

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

}

14、编写程序,统计200~400之间的所有满足三个数字之积为42,三个数字之和为12的数的个数。

答案:

4

#include

voidmain()

{

inti,num=0;

inta,b,c;

for(i=200;i<=400;i++)

{

a=i/100;

b=i/10%10;

c=i%10;

if(a*b*c==42&&a+b+c==12)

num++;

}

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

}

15、有30个学生一起买小吃,共花钱50元,其中每个大学生花3元,每个中学生花2元,每个小学生花1元,问大、中、小学生的人数分配共有多少种不同的解(去掉某类学生数为0的解)?

答案:

9

#include

voidmain()

{

intnum=0;

inti,j,k;//i为大学生人数,j为中学生人数,k为小学生人数

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

for(j=1;j<=30-i;j++)

for(k=1;k<=30-i-j;k++)

if(i*3+j*2+k*1==50&&i+j+k==30)

{

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

num++;

}

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

}

16、爱因斯坦走台阶:

有一台阶,如果每次走两阶,最后剩一阶;如果每次走三阶,最后剩两阶;如果每次走四阶,最后剩三阶;如果每次走五阶,最后剩四阶;如果每次走六阶,最后剩五阶;如果每次走七阶,刚好走完.求满足上述条件的最小台阶数是多少?

答案:

119

#include

voidmain()

{

intx;

for(x=1;;x++)

if((x%2==1)&&(x%3==2)&&(x%5==4)&&(x%6==5)&&(x%7==0))

{printf("%d\n",x);break;}

}

17、求1000以内最大的10个素数的和。

答案:

9664

#include

intprime(longn)

{

longk;

for(k=2;k<=n-1;k++)

if(__n%k==0__)return0;

return1;

}

voidmain()

{

longt,total=0,num=0;

intprime(longn);

for(t=1000;t>=2;t--)

{

if(_prime(t)__)

{

total=total+t;num++;

}

if(num==10)break;

}

printf("\n%ld",total);

}

18、/*求1!

+2!

+3!

+...+7!

,7!

表示7的阶乘。

*/答案:

5913

#include

longjc(longx)

{

longk,fac=1;

for(k=1;_k<=x__;k++)

fac*=k;

_returnfac__;

}

voidmain()

{

longn,sum=0;

longjc(longx);

for(n=1;n<=7;n++)

_sum=sum+jc(n)_;

printf("\n%ld",sum);

}

19、求10000以内所有完数之和,"完数"是指:

一个数如果刚好与它所有的真因子

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

当前位置:首页 > 工程科技 > 能源化工

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

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