C语言选择与循环控制结构常见习题与答案.docx

上传人:b****5 文档编号:28837207 上传时间:2023-07-20 格式:DOCX 页数:19 大小:17.91KB
下载 相关 举报
C语言选择与循环控制结构常见习题与答案.docx_第1页
第1页 / 共19页
C语言选择与循环控制结构常见习题与答案.docx_第2页
第2页 / 共19页
C语言选择与循环控制结构常见习题与答案.docx_第3页
第3页 / 共19页
C语言选择与循环控制结构常见习题与答案.docx_第4页
第4页 / 共19页
C语言选择与循环控制结构常见习题与答案.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

C语言选择与循环控制结构常见习题与答案.docx

《C语言选择与循环控制结构常见习题与答案.docx》由会员分享,可在线阅读,更多相关《C语言选择与循环控制结构常见习题与答案.docx(19页珍藏版)》请在冰豆网上搜索。

C语言选择与循环控制结构常见习题与答案.docx

C语言选择与循环控制结构常见习题与答案

1.猜数字小游戏:

每次程序随机生成一个数字,用户输入数字进行猜测,十回合内猜出数据则胜利,否则失败,可重复游戏。

代码如下:

#include

#include

#include

intmain()

{

intmagic;

intguess;

intcount;

intret;

charreply;

srand(time(NULL));

do{

magic=rand()%100+1;//产生1到100之间的随机数//

count=0;

do{

do{

printf("Pleaseguessamagicnumber:

");

ret=scanf("%d",&guess);

if(ret!

=1)

{

while(getchar()!

='\n');

}

}while(ret!

=1||guess<1||guess>100);//如果输入不是1到100之间的数字则连续读取//

count=count+1;

if(guess>magic)

printf("Wrong!

Toobig!

\n");

elseif(guess

printf("Wrong!

Toosmall!

\n");

else

{

printf("Right!

\n");

printf("Thenumberis:

%d\n",magic);

}

}while(guess!

=magic&&count<10);

if(magic==guess)

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

if(magic!

=guess)

printf("Youlose!

");

printf("Doyouwanttocontinue(Y/Nory/n)?

\n");

scanf("%c",&reply);

}while((reply=='y')||(reply=='Y'));

return0;

}

2.任意时间时钟时针与分针的夹角:

钟面上的时针和分针之间的夹角总是在0度~359度之间。

举例来说,在十二点的时候两针之间的夹角为0度,而在六点的时候夹角为180度,在三点的时候为90度。

本题要解决的是计算0:

00到12:

00之间任意一个时间的夹角。

输入:

要求输入必须为小时h分钟m的格式,如12h00m,5h43m等,其他形式的输入都不接收,如12,00或5h43等输入都不被接收,而且需要对“小时”和“分钟”进行数值有效判断(小时在[0,12],分钟在[0.60]之间),不满足以上要求时,需要重新输入。

在程序中首先打印:

Pleaseinputtime(e.g:

5h43m),然后输入时间。

格式为:

"Pleaseinputtime(e.g:

5h43m)\n"

"%d%c%d%c"

输出:

对应每组测试数据,用常用格式显示时间以及这个时候时针和分针间的最小夹角,精确到小数点后一位。

格式为:

"At%d:

%02dtheangleis%.1fdegrees.\n"

如:

输入“12h00m”时,输出At12:

00theangleis0.0degrees.

输入“5h43m”时,输出At5:

43theangleis86.5degrees.

输入“5h5m”时,输出At5:

05theangleis122.5degrees.

代码如下:

#include

#include

main()

{

inth,m,i=0;

floatalpha=0;

printf("Pleaseinputtime(e.g:

5h43m)\n");

scanf("%dh%dm",&h,&m);

for(;i==0;)

{

if(h<12&&h>0&&m>0&&m<60)

{i=1;

alpha=fabs(30*h-5.5*m);

if(m<10)

printf("At%d:

0%dtheangleis%.1fdegrees.",h,m,alpha);

else

printf("At%d:

%dtheangleis%.1fdegrees.",h,m,alpha);

}

else

{

printf("Pleaseinputtime(e.g:

5h43m)");

scanf("%dh%dm",&h,&m);

}

}

}

3.十进制数字转二进制数字(二进制数字32位以内)

代码如下:

#include

intmain(void)

{

inti=0,n,a[32];

printf("Inputnumber:

");

scanf("%d",&n);

printf("numberofdecimalform:

%d\n",n);

while(n>0)

{

a[i]=n%2;

i=i+1;

n=n/2;

}

printf("it\'sbinaryform:

");//逆序输出//

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

{

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

}

return0;

}

4.判断是否为C标识:

首字符是否为下划线开头,其余字符是否为下划线或数字或字母

代码如下:

#include

#include

intmain()

{

chara[80];

inti;

gets(a);

if(a[0]=='_'||(a[0]>='a'&&a[0]<='z')||(a[0]>='A'&&a[0]<='Z')){//判断首个字符应是否“下划线”或者“字母”

for(i=1;a[i]!

='\0';i++){

if(a[i]=='_'||(a[i]>='a'&&a[i]<='z')||(a[i]>='A'&&a[i]<='Z')||(a[i]>='0'&&a[i]<='9'))continue;//判断之后字符是否为“下划线”或“字母”或“数字”

else{

printf("isnot\n");

break;

}

}

if(a[i]=='\0')printf("is\n");

}

elseprintf("Thisisnotaidentifier!

\n");

return0;

}

5.指数在2到50之间的梅森素数:

形如2的n次方-1的素数成为梅森素数

代码如下:

#include

#include

#include

intmain()

{

inti,j;

intn=0;

inta,b;

for(i=2;i<=50;i++)

{

a=pow(2,i)-1;

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

{

if(a%j==0)

break;

}

if(j==a)

{

printf("2^%d-1=%.0lf\n",i,(longdouble)a);

n++;

}

else

{

continue;

}

}

printf("指数n于[2,50]中梅森尼数共有%d个.",n);

return0;

}

6.奇偶归一猜想:

对于每一个正整数,如果它是奇数,则对它乘3再加1,如果它是偶数,则对它除以2,如此循环,最终都能够得到1。

输入正整数n,求这个数多少次能归一。

代码如下:

#include

#include

#include

intmain()

{

intn,m=0;

longlonginta=1,b;

printf("Inputn:

");

scanf("%d",&n);

do{

b=a;

do{

if(b%2==1)

b=3*b+1;

else

b=b/2;

m++;

}while(b!

=1);

if(m<=n)

{

m=0;

a++;

}

}while(m<=n);

printf("num=%lld,count=%d\n",a,m);

return0;

}

7.存款利率:

设capital为本金,rate是整存整取的存款年利率,n是储蓄的年份,deposit是第n年年底账户里的存款总额。

已知如下两种本利之和的计算方式:

1按复利方式计算的本利之和计算公式为:

deposit=capital*(1+rate)n

2按普通计息方式计算本利之和的公式为:

deposit=capital*(1+rate*n)

已知银行整存整取不同期限存款的年息利率为:

存期1年,利率为0.0225

存期2年,利率为0.0243

存期3年,利率为0.0270

存器5年,利率为0.0288

存期8年,利率为0.0300

若输入其他年份,则输出“Erroryear!

代码如下:

#include

#include

intmain()

{intyear;

doublecapital,rate;

charchoice;

printf("Inputcapital,year:

");

scanf("%lf,%d",&capital,&year);

printf("Compoundinterest(Y/N)?

");

scanf("%c",&choice);

switch(choice)

{

case'y':

case'Y':

switch(year)

{

case1:

rate=0.0225;printf("rate=%.4f,deposit=%.4f\n",rate,capital*pow((1+rate),year));

break;

case2:

rate=0.0243;printf("rate=%.4f,deposit=%.4f\n",rate,capital*pow((1+rate),year));

break;

case3:

rate=0.0270;

printf("rate=%.4f,deposit=%.4f\n",rate,capital*pow((1+rate),year));

break;

case5:

rate=0.0288;

printf("rate=%.4f,deposit=%.4f\n",rate,capital*pow((1+rate),year));

break;

case8:

rate=0.0300;

printf("rate=%.4f,deposit=%.4f\n",rate,capital*pow((1+rate),year));

break;

default:

printf("Erroryear!

\n");

}

break;

case'n':

case'N':

switch(year)

{

case1:

rate=0.0225;

printf("rate=%.4f,deposit=%.4f\n",rate,capital*(1+rate*year));

break;

case2:

rate=0.0243;printf("rate=%.4f,deposit=%.4f\n",rate,capital*(1+rate*year));

break;

case3:

rate=0.0270;

printf("rate=%.4f,deposit=%.4f\n",rate,capital*(1+rate*year));

break;

case5:

rate=0.0288;

printf("rate=%.4f,deposit=%.4f\n",rate,capital*(1+rate*year));

break;

case8:

rate=0.0300;

printf("rate=%.4f,deposit=%.4f\n",rate,capital*(1+rate*year));

break;

default:

printf("Erroryear!

\n");

}

break;

default:

printf("Invalidchar!

\n");

}

return0;

}

8.求sinx在误差eps内的估算值

代码如下:

#include

#include

#include

intmain()

{

doublex,eps;

doublesinx,j=1;

intn=1,m;

printf("Enterx&eps:

");

scanf("%lf%lf",&x,&eps);

do{

j=1;

for(m=1;m<=2*n-1;m++)

{

j=j*m;

}

sinx=sinx+pow(-1,n-1)*pow(x,2*n-1)/j;

n++;

}while(fabs(sinx-sin(x))>=eps);

printf("sin(%f)=%f\n",x,sin(x));

if(x==0)

n=1;

printf("%d,sin(%f)=%f\n",n,x,sinx);

return0;

}

9.三天打鱼两天晒网:

假设一渔夫从1990年1月1日开始三天打鱼两天晒网,求任意一天,他在打鱼还是在晒网(考虑闰年)

代码如下:

#include

#include

intmain()

{

inty,m,d;

intsum=0;

scanf("%4d-%2d-%2d",&y,&m,&d);

if(y<1990)

{

printf("Invalidinput.");

return0;

}

if((y%100!

=0&&y%4==0)||(y%400==0))

{

switch(m)

{

case1:

case3:

case5:

case7:

case8:

case10:

case12:

if(d>31||d<1)

{

printf("Invalidinput.");

return0;

}

break;

case2:

if(d>29||d<1)

{

printf("Invalidinput.");

return0;

}

break;

case4:

case6:

case9:

case11:

if(d>30||d<1)

{

printf("Invalidinput.");

return0;

}

break;

default:

printf("Invalidinput.");

return0;

break;

}

}

else

{

switch(m)

{

case1:

case3:

case5:

case7:

case8:

case10:

case12:

if(d>31||d<1)

{

printf("Invalidinput.");

return0;

}

break;

case2:

if(d>28||d<1)

{

printf("Invalidinput.");

return0;

}

break;

case4:

case6:

case9:

case11:

if(d>30||d<1)

{

printf("Invalidinput.");

return0;

}

break;

default:

printf("Invalidinput.");

return0;

break;

}

}

inti;

if(y>1990)

{

for(i=1990;i

{

if((i%100!

=0&&i%4==0)||(i%400==0))

{

sum=sum+366;

}

else

{

sum=sum+365;

}

}

}

inti1;

if(m>1)

{

for(i1=1;i1

{

if((y%100!

=0&&y%4==0)||(y%400==0))

{

switch(i1)

{

case1:

case3:

case5:

case7:

case8:

case10:

case12:

sum=sum+31;

break;

case2:

sum=sum+29;

break;

case4:

case6:

case9:

case11:

sum=sum+30;

break;

}

}

else

{

switch(i1)

{

case1:

case3:

case5:

case7:

case8:

case10:

case12:

sum=sum+31;

break;

case2:

sum=sum+28;

break;

case4:

case6:

case9:

case11:

sum=sum+30;

break;

}

}

}

}

sum=sum+d;

sum=sum%5;

if(sum==0||sum==4)

{

printf("Heishavingarest.");

}

else

{

printf("Heisworking.");

}

return0;

}

10.

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

当前位置:首页 > 外语学习 > 日语学习

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

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