码迷,mamicode.com
首页 > 其他好文 > 详细

分支循环语句(2)

时间:2020-12-08 12:27:50      阅读:7      评论:0      收藏:0      [点我收藏+]

标签:scanf   str   计算机   不能   scan   %s   退出   --   img   

题1:给三个数字排序
#include<stdio.h>
int main()
{
int a;
int b;
int c;
//a最大,b次之,c最小
if(a<b)
{
int tmp=a;
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;
}
 
题2:打印1-100的3的倍数的数字
#include<stdio.h>
int main()
{
int i=0
for(i=1;i<=100;i++)
{
if(i%3==0)
printf("%d",i);
}
return 0;
}
 
题3:给定两个数,求两个数的最大公因数
辗转相除法
#iinclude<stdio.h>
int main()
{
int m=24;
int n=18;
int r=0;
while(m%n)
{
r=m%n;
m=n;
n=r;
}
printf("%d\n",n);
return 0;
}
 
题4.打印闰年
1000-2000的年份
法一:
#include<stdio.h>
int maini()
{
int year=0;
for(year=1000;year<=2000;year++)
{
//判断year是否为闰年
//1.能被4整除,且不能被100整除
//2.能被400整除
if(year%4==0 && year%100 !=0)
{
printf("%d",year);
}
else if(year%400 == 0)
{
printf("%d",year);
}
}
return 0;
}
 
法二:if(((year%4 == 0)&&(year%100 != 0)) || (year%400 == 0))
{
printf("%d",year);
}
 
 
题5:打印100-200之间的素数
法一:
#include<stdio.h>
int main()
{
int i=0;
int j=0;
for(i=100; i<=200 ; i++)
{
//判断i是否为素数(被1和本身整除)
//判断规则:1.试除法
//产生2--->i-1的数字
for(j=2 ; j<i; j++)
{
if(i%j == 0)
{
break;
}
}
if(j == i)
{
printf("%d",i);
}
}
return 0;
}
 
法二:(优化)
i=a*b
(a和b中至少有一个数字<=开平方i) eg.16=2*8=4*4
#include<stdio.h>
#include<math.h>
int main()
{
int i=0;
int j=0;
for(i=100; i<=200 ; i++)
{
//sqrt----开平方的库函数
for(j=2 ; j<=sqrt(i); j++)
{
if(i%j == 0)
{
break;
}
}
if(j >sqrt(i))
{
printf("%d",i);
}
}
return 0;
}
 
法三:
for(i=101; i<=200 ;i+=2)
//偶数绝对不可能是素数
 
了解更多搜索:
<素数求解的n种境界>
 
题6:
1-100的所有整数中出现了多少个数字9
#include<stdio.h>
int main()
{
int i=0;
int count =0;
for(i=1 ; i<=100;i++)
{
if(i%10 == 9)
count ++;
if(i/10 ==9)
count ++;
}
printf("count =%d\n",count);
return 0;
}
 
题7:
分数求和:计算1/1-1/2+1/3-1/4...-1/100的值
#include<stdio.h>
int main()
{
int i=0;
double sum =0.0;
int flag =1;
for(i=1; i<=100; i++)
{
sum +=flag*1.0/i;
flag =-flag;
}
printf("%lf\n",sum);
return 0;
}
 
题8:
求10个整数的最大值
#include<stdio.h>
int main()
{
int arr[ ]={1,2,3,4,5,6,7,8,9,10}
int max=arr[0];//最大值
int i=0; //max=0时,当存在负数时,存在错误
int sz=sizeof(arr)/sizeof(arr[0]);
for(i=0; i< sz; i++)
{
if(arr[i]>max)
{
max=arr[i];
}
}
printf("max=%d\n",max);
return 0;
}
 
题9:9*9乘法表
#include<stdio.h>
int main()
{
int i=0;
int j=0;
for(i=1 ;i<=9;i++)
{
//打印一行
for(j=1; j<=i;j++)
{
printf("%d*%d=%2d",i,j,i*j);
}
printf("\n");
}
return 0;
}
 
 
题10:猜数字游戏
1.生成一个随机数
2.猜数字
 
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void menu()
{
printf("######################\n");
printf("### 1 play 0 exit ###\n");
printf("######################\n");
}
game()
{//1.生成随机数2.猜数字
int ret=0;
int guess=0;//猜的数字
//当前计算机时间-计算机的起始时间(1970.1.1.0:0:0)=(xxx)秒
int ret =rand()%100+1;//生成1-100随机数
//2.猜数字
while(1)
{
printf("请猜数字:");
scanf("%d",&guess);
if(guess>ret)
{
printf("猜大了\n");
}
else if(guess<ret)
{
printf("猜小了\n");
}
else
{
printf("恭喜你,猜对了!\n");
break;
}
}
}
int main()
srand((unsigned int)time(NULL));//拿时间戳来设置随机数的生成起始点
int input =0;
{
do
{
menu();
printf("请选择:");
scanf("%d",&input);
switch(input)
{
case 1:
game();//猜数字游戏
case 0:
printf("请退出游戏\n");
default:
printf("选择错误\n");
break;
}
}while(input)
return 0;
}
 
goto语句
少于,容易产生bug
#include<stdio.h>
int main()
{
begain:
printf("Hellow\n");
goto begain;
return0;
}
结果:死循环
 
用处:
技术图片
 
关机程序:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
char input[20]={0}
//shutdown -s -t 60(在cmd中输入,则自动关机)
//syetem()--执行系统命令
syetem("shutdown -s -t 60");
again:
printf("请注意,你的电脑在一分钟内关机,如果输入:我是憨批,就取消关机\n");
scanf("%s",input);
if(strcmp(input,"我是憨批") == 0)//比较两个字符串--strcmp
{
syetem("shutdown -a");
}
else
{
goto again;
}
return0;
}
 
或者:
while(1)
{
printf("请注意,你的电脑在一分钟内关机,如果输入:我是憨批,就取消关机\n");
scanf("%s",input);
if(strcmp(input,"我是憨批") == 0)//比较两个字符串--strcmp
{
syetem("shutdown -a");
break;
}
}
 

分支循环语句(2)

标签:scanf   str   计算机   不能   scan   %s   退出   --   img   

原文地址:https://www.cnblogs.com/233haa/p/14082753.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!