2.6C语言学习循环练习-创新互联
- 写一个猜数字游戏
①. 自动产生1--100之间的随机数
南澳网站制作公司哪家好,找创新互联!从网页设计、网站建设、微信开发、APP开发、成都响应式网站建设公司等网站项目制作,到程序开发,运营维护。创新互联自2013年创立以来到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联。②.猜数字:猜对了,恭喜就,游戏结束 猜错了,会告诉猜到了,还是猜小了,继续猜,知道猜 对为止
③.游戏一直玩除非退出游戏。
#define _CRT_SECURE_NO_WARNINGS
#include#include//为了使用rand
#include//为了使用time
//解析:上来就要玩游戏,所以采用do while结构直接运行游戏
//首先打印游戏界面菜单
void menu()
{
printf("*************************\n");
printf("***** 1. paly ******\n");
printf("***** 0. exit ******\n");
printf("*************************\n");
}
void game()
{
//猜数字游戏的实现
//1. 生成随机数
//rand函数返回了一个0--32767之间的一个数字 但数字不够随机
//时间 -- 时间戳
int ret = rand()%100+1;//为了产生1--100个随机数,%100,%100的余数为1--99,然后+1范围为1--100
//printf("随机数:%d\n", ret);
//2. 猜数字
int guess = 0;
while (1)
{
printf("请输入所猜数字:");
scanf("%d", &guess);
if (guess< ret)
{
printf("猜小了\n");
}
else if (guess >ret)
{
printf("猜大了\n");
}
else
{
printf("恭喜你,猜对了\n");
break;
}
}
}
int main()
{
int input = 0;
srand((unsigned int)time(NULL));//为了更随机 ()里的数为随机值 才会出来随机数 所以用时间戳
//time函数传空值 time函数的返回值强制类型转化为unsigned int time函数的使用需要引用time.h
//srand在rand之前调用 但随机数起点的设置只需要调用一次
do
{
menu();//打印菜单
printf("请选择:");
scanf("%d", &input);
switch (input)
{
case 1:
//printf("猜数字\n");//测试用
game();
break;
case 0:
printf("退出游戏\n");
break;
default:
printf("选择错误,重新选择\n");
break;
}
}while (input);//input作为判断的依据,当input为0时 为假退出循环 输入其他数为真 持续循环
return 0;
}
- 注意知识点
switch语句中default子句可以放在任意位置
switch语句中case后的表达式只能是整型常量表达式
switch语句中case表达式不要求顺序
F11逐语句
F12逐过程
3. 对三个数从大到小排列//练习 三个数从大到小排列
#define _CRT_SECURE_NO_WARNINGS
#includeint main()
{
int a = 0;
int b = 0;
int c = 0;
//输入
scanf("%d%d%d", &a, &b, &c);
//调整顺序
if (a< b)
{
int tmp = a;//tmp相当于空瓶 用于转接 暂时存放
a = b;
b = tmp;
}
if (a< c)
{
int tmp = a;
a = c;
c = tmp;
}
if (b< c)
{
int tmp = b;
b = c;
c = tmp;
}
//输出大到小
printf("%d %d %d\n", a,b,c);
return 0;
}
4.打印1--100之间3的倍数//写一个代码打印1--100之间所有3的倍数的数字
int main()
{
int i = 0;
//for (i = 1; i<= 100; i++)
//{
// //判断i是否为3的倍数
// if (i % 3 == 0)
// printf("3的倍数有:%d\n", i);
//}
//第二种
for (i = 3; i<= 100; i += 3)
printf("3的倍数有:%d\n", i);
return 0;
}
5.给定2个数,求这两个数的大公约数给定2个数,求这两个数的大公约数
//
//int main()
//{
// int m = 0;
// int n = 0;
// scanf("%d%d", &m, &n);//24 18
// int max = 0;
// //假设大公约数就是m和n的较小值
// if (m >n)
// max = n;
// else
// max = m;
// while (1)
// {
// if (m % max == 0 && n % max == 0)
// {
// printf("大公约数是:%d\n",max);
// break;
// }
// max--;
// }
// return 0;
//}
辗转相除法
eg m:24 n:18 m%n=6 m=18 n=6 此时 m%n=0 t=6
//int main()
//{
// int m = 0;
// int n = 0;
// scanf("%d%d", &m, &n);//24 18
// int t = 0;
// while (t = m%n)
// {
// m = n;
// n = t;
// }
// printf("大公约数:%d\n", n);
//
// return 0;
//}
第一次t=18%24=18 此时m=24 n=18 第二次t=18%24=6 此时m=18 n=6 第三次m%n=18%6=0
6. 打印1000--2000年之间的闰年//打印1000--2000年之间的闰年
int main()
{
int y = 0;
int count = 0;
for (y = 1000; y<= 2000; y++)
{
//判断y是不是闰年
//1.被4整除,不能被100整除是闰年
//2.并且能被400整除为闰年
if (y % 4 == 0)
{
if (y % 100 != 0)
{
printf("%d ",y);
count++;
}
if(y % 400 ==0)
{
printf("%d", y);
count++;
}
}
}
printf("\n count =%d\n", count);
return 0;
}
代码优化
int main()
{
int y = 0;
int count = 0;
for (y = 1000; y<= 2000; y++)
{
//判断y是不是闰年
//1.被4整除,不能被100整除是闰年
//2.被400整除为闰年
if (((y % 4 == 0) && (y % 100 != 0)) || (y % 400 == 0))
{
printf("%d ", y);
count++;
}
}
printf("\n count =%d\n", count);
return 0;
}
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
文章标题:2.6C语言学习循环练习-创新互联
URL标题:http://scyanting.com/article/decpdo.html