笔记5:
#include <stdio.h>
#include <windows.h>//使用Sleep函数时
#include <stdlib.h>//使用system函数--执行系统指令
#include <string.h>//使用strlen函数,求字符串的长度
#define _CRT_SECURE_NO_WARNINGS//忽略scanf函数的不安全性
比较三个数的大小,并从大到小排列
#include <stdio.h>
int main()
{int a,b,c;//a中放最大值,b次之,c最小;
int t=0,p=0,m=0;
scanf("%d %d %d",&a,&b,&c);
if(a<b)
{ t=b;
b=a;
a=t;}
if(a<c)
{ p=a;
a=c;
c=p;}
if(b<c)
{ m=b;
b=c;
c=m;}
printf("%d %d %d\n",a,b,c);
return 0;
}
求两个数的最小公倍数
#include <stdio.h>
int main()
{
int x,y;
int i=100;//i可以设置成更大的数
int gy=0;
scanf("%d %d",&x,&y);
while(i>=1)
{if(x%i==0&&y%i==0)
{gy=(x/i)*(y/i);
printf("%d\n",gy);
break;}
i--;}
return 0;
}
求两个数的最大公约数(辗转相除法)
#include <stdio.h>
int main()
{
int x,y,t;
scanf("%d %d",&x,&y);
while(t=x%y)//判断t是不是等于0,不等于0才进入循环
{
x=y;
y=t;}
printf("%d\n",y);
return 0;
}
//当x<y时,x%y=x;
打印1000到2000之间的闰年
//能被4整除但不能被100整除的数
//能被400整除的数
#include <stdio.h>
int main()
{
int x=0;
int i=0;
for(x=1000;x<=2000;x++)
{if(x%4==0&& x%100!=0)
{printf("%d ",x);
i++;}
else if(x%400==0)
{printf("%d ",x);
i++;}}
printf("总共有 %d 个闰年\n",i);
return 0;
}
找到100到200内的素数(试除法)
法1:int main()
{
int i;
int j;
int count=0;
for(j=100;j<=200;j++)
{
for(i=2;i<j;i++)
{if(j%i==0)
break;}
if(j==i)
{printf("%d\n",j);
count++;}
}
printf("总共找到%d个素数\n",count);
return 0;
}
法2:
如果一个数i不是素数,那么一定会有i=a*b,并且a和b中一定有一个数小于或等于i开方;
#include <stdio.h>
#include <math.h>
int main()
{
int i;
int j;
int count=0;
for(j=100;j<=200;j++)
{
for(i=101;i<=sqrt(j);i+=2)//跳过所有偶数
{if(j%i==0)
break;}
if(j>sqrt(j))
{printf("%d\n",j);
count++;}
}
printf("总共找到%d个素数\n",count);
return 0;
}
判断1到100之间9的个数
int main()
{
int i;
int count=0;
for(i=1;i<=100;i+=1)
{if(i%10==9)
{printf("%d\n",i);
count++;}
if(i/10==9)
{printf("%d\n",i);
count++;}}
printf("%d\n",count);
return 0;
}
计算1/1-1/2+1/3-1/4+....+1/99-1/100;
int main()
{
int i=1;
double sum=0.0;
double t=0.0;
int flag=1;
for(i=1;i<=100;i+=1)
{t=flag*(1.0/i);
flag=-flag;//运算一次变次符号
sum=sum+t;}
printf("sum=%lf\n",sum);
return 0;
求十个数中的最大值
int main()
{
int i=0;
char arr[]={3,7,4,8,2,0,4,2,5,28};
int max=arr[0];
int sz=sizeof(arr)/sizeof(arr[0]);
for(i=0;i<sz;i++)
{if(arr[i]>max)
max=arr[i];}
printf("%d\n",max);
return 0;
}
乘法口诀表的打印
int main()
{
int i=0;
int j=0;
int t=0;
for(i=1;i<10;i++)
{for(j=1;j<=i;j++)
{
printf("%d*%d=%-2d ",j,i,j*i);}//列*行=结果
printf("\n");}
return 0;
}
//i来控制行数(9行),j来控制列数(9列);
//%-2d--表示两位左对齐
goto语句---尽量少使用goto语句,否则可能会打乱逻辑;
eg:
int main()
{
again:
printf("you are beautiful\n");
goto again;
return 0;}
//again:是个函数,again在哪,goto就跳到哪里;
//进入死循环,一直打印you are beautiful;
goto真正适合的场景如下:跳出嵌套的深层次的结构;
for(....)
{for(...)
{ for(...)
{for(....)
{if(disaster)
goto error;}
}}
.....
error:}
if(disaster)//处理错误情况;