1.实验4-1-9 猜数字游戏 (15 分)
猜数字游戏是令游戏机随机产生一个100以内的正整数,用户输入一个数对其进行猜测,需要你编写程序自动对其与随机产生的被猜数进行比较,并提示大了(“Too big”),还是小了(“Too small”),相等表示猜到了。如果猜到,则结束程序。程序还要求统计猜的次数,如果1次猜出该数,提示“Bingo!”;如果3次以内猜到该数,则提示“Lucky You!”;如果超过3次但是在N(>3)次以内(包括第N次)猜到该数,则提示“Good Guess!”;如果超过N次都没有猜到,则提示“Game Over”,并结束程序。如果在到达N次之前,用户输入了一个负数,也输出“Game Over”,并结束程序。
输入格式:
输入第一行中给出两个不超过100的正整数,分别是游戏机产生的随机数、以及猜测的最大次数N。最后每行给出一个用户的输入,直到出现负数为止。
输出格式:
在一行中输出每次猜测相应的结果,直到输出猜对的结果或“Game Over”则结束。
输入样例:
58 4
70
50
56
58
60
-2
输出样例:
Too big
Too small
Too small
Good Guess!
#include<stdio.h>
#include<stdlib.h>
int main()
{
int s,n,count=0,a;
scanf("%d %d",&s,&n);
for(int i=0; ;i++)
{
scanf("%d",&a);//读取一个数字开始证明已经进行了一次循环
count++;
if(count>n)
{
printf("Game Over\n");//当前次数超过给定次数,退出循环
exit(0);
}
if(a<0)
{
printf("Game Over\n");//猜的数字不符合要求,退出循环
exit(0);
}
if(a>s)
printf("Too big\n");
else if(a<s)
printf("Too small\n");
else
break;//找到了这个数字
}
if(count == 1)
printf("Bingo!\n");
else if( count>1&&count<=3)
printf("Lucky You!\n");
else if(count>3&&count<=n)
printf("Good Guess!\n");
return 0;
}
2.
实验4-1-5 韩信点兵 (10 分)
在中国数学史上,广泛流传着一个“韩信点兵”的故事:韩信是汉高祖刘邦手下的大将,他英勇善战,智谋超群,为汉朝建立了卓越的功劳。据说韩信的数学水平也非常高超,他在点兵的时候,为了知道有多少兵,同时又能保住军事机密,便让士兵排队报数:
- 按从1至5报数,记下最末一个士兵报的数为1;
- 再按从1至6报数,记下最末一个士兵报的数为5;
- 再按从1至7报数,记下最末一个士兵报的数为4;
- 最后按从1至11报数,最末一个士兵报的数为10;
请编写程序计算韩信至少有多少兵。
输入格式:
本题无输入
输出格式:
输出韩信至少拥有的士兵人数。(至少二字~不设i的循环终值)
#include<stdio.h>
int main()
{
int i;
for(i=1; ;i++)
{
if((i-1)%5==0)
if((i-5)%6==0)
if((i-4)%7==0)
if((i-10)%11==0)
break;
}
printf("%d",i);
return 0;
}
3.
实验4-1-6 求分数序列前N项和 (15 分)
本题要求编写程序,计算序列 2/1+3/2+5/3+8/5+... 的前N项之和。注意该序列从第2项起,每一项的分子是前一项分子与分母的和,分母是前一项的分子。
输入格式:
输入在一行中给出一个正整数N。
输出格式:
在一行中输出部分和的值,精确到小数点后两位。题目保证计算结果不超过双精度范围。
输入样例:
20
输出样例:
32.66
#include<stdio.h>
int main()
{
int N,i;
double a=2,b=1,t,sum=0;
t=b;
scanf("%d",&N);
for(i=1;i<=N;i++)
{
sum+=a/b;//a只代表分子,b只代表分母
b=a;//原来的分子变为新的分母
a=a+t;//新的分子是原来的分子加上分母
t=b;
}
printf("%.2f",sum);
return 0;
}