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.