一、猜数游戏,让计算机来想一个数,然后让用户来猜,用户每输入一个数,就告诉它是大了还是小了
直到用户猜中为止,最后还要告诉用户它猜了多少次
思路:
核心是循环的条件,人们往往会考虑循环终止的条件
1.计算机随机想一个数,记在变量number里
2.一个负责计数的变量count初始化为0
3.让用户输入一个数字a
4.count递增(加一)
5.判断a和number的大小关系,如果a大,就输出”大“,如果a小,就输出”小“
6.如果a和number是不相等的(无论大还是小),程序转回到第3步
7.否则,程序输出“猜中”和次数,然后结束
因此,循环条件是a和number不相等
int main()
{
//猜数游戏
srand(time(0));
int number=rand()%100+1;
//因为随机数所给的数字非常大,所以要经过一定的处理才可以使用
//x%n的结果是[0,n-1]的一个整数
int count=0;
int a=0;
printf("我已经想好了一个1到100之间的数。");
do{
printf("请猜猜这个1到100之间的数。");
scanf("%d",&a);
count++;
if(a>number){
printf("你猜的输大了。");
}else if(a<number){
printf("你猜的数小了。");
}
}while(a!=number);
printf("太好了,你用了%d次就猜到了答案。\n",count);
return 0;
}
二、随机数
每次召唤rand()就得到一个随机的整数
使用随机数,在前面除了要有#include <stdio.h>还要多有两个东西
即#include <stdlib.h>和#include <time.h>
int main()
{
//随
srand(time(0));//使用随机数要加这句话,目的是让我们的随机数看上去真的像随机数一样
int a=rand();
printf("%d",a);
return 0;
}
三、算平均数
让用户输入一系列的正整数,最后输入-1表示程序结束
然后程序计算出这些数字的平均数,输出输入的数字的个数和平均数
思路:变量,算法,流程图,程序
变量:
一个记录读到的整数的变量
只要每读到一个数,就把它加到一个累加的变量里,到全部数据读完,再拿它去除读到的数的个数就可以了
一个变量记录累加的结果,一个变量记录读到的数的个数
算法:
1.初始化变量sum和count为0;
2.读入number;
3.如果number不是-1,则将number加入sum,并将count加1,回到2
4.如果number是-1,则计算和打印出sum/count(注意换成浮点来计算)
int main()
{
//算平均数
int number;
int sum=0;
int count=0;
scanf("%d",&number);
while(number!=-1){
sum+=number;
count++;
scanf("%d",&number);
}
printf("%f\n",1.0*sum/count);//为了转换成浮点,因此乘了1.0
return 0;
}
四、整数的分解
1.一个整数是由1至多位数字组成的,如何分解出整数的各个位上的数字,然后加以计算
2.对一个整数做%10的操作,就得到它的个位数
3.对一个整数做/10的操作,就去掉了它的个位数
4.然后再对2的结果做%10,就得到原来的十位数了
……
以此类推
数的逆序 :
输入一个正整数,输出逆序的数
结尾的0的处理
int main()
{
//数的逆序
int x;
scanf("%d",&x);
int digit;//取出每一位
int ret=0;//显示结果,显示结果,如700,变为7,是一个新的数,所以应有一个变量保存结果
while(x>0){
digit=x%10;
ret=ret*10+digit;
//printf("x=%d,digit=%d,ret=%d\n",x,digit,ret);调试语句
x/=10;
}
printf("%d",ret);
return 0;
}
int main()
{
//数的逆序并显示每一位
int x;
scanf("%d",&x);
int digit;//取出每一位
while(x>0){
digit=x%10;
printf("%d",digit);
x/=10;
}
return 0;
}