目录
一、对三个数进行排序
方法一:函数
方法二:依次交换数值
方法三:用if语句判断条件
二、最大公约数和最小公倍数
1.最大公约数
(2)辗转相除法
2.最小公倍数:
三、年份和日期问题
判断是否是闰年:
四、素数
五、几个函数
1.strcmp()
2.rand函数、srand函数和time函数
1.rand函数
2.srand函数
3.time函数和时间戳
六、简单版猜字游戏
一、对三个数进行排序
方法一:函数
#include
int MAX(int a,int b)
{
int max=a>b?a:b;
return max;
}
int MIN(int a,int b)
{
int min=a
方法二:依次交换数值
#include
int main()
{
int a=0,b=0,c=0;
scanf("%d %d %d",&a,&b,&c);
if(a
方法三:用if语句判断条件
#include
int main()
{
int a=0,b=0,c=0;
scanf("%d %d %d",&a,&b,&c);
if(a
二、最大公约数和最小公倍数
1.最大公约数
求出整数a,b两个数的最大公约数
(1)方法一:遍历法
#include
int main()
{
int a=0,b=0;
scanf("%d %d",&a,&b);
int ret=0;
if(a>b)
ret=b;
else
ret=a;
while(1)
{
if(n%ret==0&&m%ret==0)
{
break;
}
else
ret--;
}
prinft("最大公约数是:%d",ret);
return 0;
}
(2)辗转相除法
辗转相除法也叫做欧几里得法,具体的计算过程如下图:
#include
int main()
{
int a=0,b=0;
scanf("%d %d",&a,&b);
if(a
2.最小公倍数:
求两个数的最小公倍数方法比较简单,只需要a*b再除以a,b的最大公约数
#include
int main()
{
int a=0,b=0;
scanf("%d %d",&a,&b);
int num=b;
if(a
三、年份和日期问题
判断是否是闰年:
//求出1000到2000的所有闰年
#include
#include
bool isrun(int n)
{
return (n%4==0&&n%400!=0)||(n%400==0);
}
int main()
{
int i=0;
for(i=1000;i<=2000;i++)
{
if(isrun(i))
{
printf("%d ",i);
}
}
return 0;
}
//思路是使用Kim larsen公式,也可以使用zelle公式
char * dayOfTheWeek(int day, int month, int year)
{
if(month==1||month==2)
{
month+=12;
year--;
}
int w=(day+2*month+3*(month+1)/5+year+year/4-year/100+year/400+1)%7;
char *arr[]={"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};
return arr[w];
}
bool isleapyear(int n)
{
return (n%4==0&&n%400!=0)||(n%400==0);
}
int strtoint(char*str,int len)//len为传递的字符串的长度
{
int i=0;
int sum=0;
for(i=0;i
四、素数
判断一素数的个数
//判断100到200之间素数的个数
#include
#include
int main()
{
int i=0;
int cnt=0;
for(i=100;i<201;i++)
{
int flag=1;
int j=0;
for(j=2;j<=sqrt(i);j++)
{
if(i%j==0)
{
flag=0;
break;
}
}
if(flag==1)
{
printf("%d ", i);
cnt++;
}
}
printf("n");
printf("素数的个数是%d",cnt);
return 0;
}
素数判定 埃氏筛选
int countPrimes(int n)
{
if (n < 2)
{
return 0;
}
int isprime[n];
memset(isprime,0,sizeof(isprime));
int cnt=0;
for(int i=2;i
五、几个函数
1.strcmp()
strcmp函数的作用是比较两个字符串的关系
strcmp函数的返回值有三种情况:大于0,等于0,小于0;
这些函数中的每一个的返回值表示 string1 到 string2 的字典关系。string1 到 string2 的值关系
< 0 string1 小于 string2
0 string1 与 string2 相同
> 0 string1 大于 string2
这里的大小是值字符串的ASCII码值。两个字符串从左到右依次比较每一个字符的ASCII值,直到遇见不同的字符或者' '为止。
#include
int main()
{
int i = 0;
char password[20] = "";
for (i = 0; i < 3; i++)
{
printf("请输入密码:>");
scanf("%s", password);
if (strcmp(password, "123456") == 0)//比较2个字符串是否相等,不能使用==,而应该使用strcmp
{ //这个函数
printf("登陆成功n");
break;
}
else
{
printf("密码错误n");
}
if (i == 3)
{
printf("三次密码均错误,退出程序n");
}
return 0;
}
2.rand函数、srand函数和time函数
1.rand函数
rand 返回一个伪随机数,rand()函数是使用线性同余法做的,它并不是真的随机数,因为其周期特别长,所以在一定范围内可以看成随机的。
rand 函数返回一个范围为 0 到 RAND_MAX 的伪随机整数。 在调用 rand 之前,使用 srand 函数为伪随机数生成器设定种子。
生成[0,1]的随机数
num=rand()/RAND_MAX;
2.srand函数
srand函数的作用是生成随机数的生成种子。种子的任何其他值都将生成器设置为随机起点。 rand 检索生成的伪随机数。 在对 srand 的任何调用之前调用 rand 生成的序列与以 1 传递的种子调用 srand 生成的序列相同。
那我们如何引入一个种子?
3.time函数和时间戳
函数功能: 得到当前日历时间或者设置日历时间。返回值:time 返回以秒为单位的时间。 返回值会转化为一个时间戳。
通俗的讲,时间戳(timestamp)是一份能够表示一份数据在一个特定时间点已经存在的完整的可验证的数据。
一般来说,我们会使用time(NULL)或time(0)来表示变化的种子,为unsigned int类型。当我们在不同时刻运行程序时,就会有不同的随机数种子,因此就可以得到不同的结果。如果我们想要生成随机数我们可以使用以下代码
srand((unsign int) time(NULL))
int num=rand()
六、简单版猜字游戏
#include
#include
#include
void menu()
{
printf("*******************************************n");
printf("*******************************************n");
printf("*******************************************n");
printf("*************** 1.play ***************n");
printf("*************** 0.exit ***************n");
printf("*******************************************n");
printf("*******************************************n");
printf("*******************************************n");
}
void play()
{
int k = rand()%100+1;
int a = 0;
printf("这个数字在1到100之间n");
for (int i = 5;i > 0;i--)
{
printf("请输入你认为正确的数字:n");
scanf("%d", &a);
if (a > k)
{
printf("这个数字大了n");
}
else if (a == k)
{
printf("恭喜你猜对了n");
printf("真厉害n");
break;
}
else
{
printf("这个数字小了n");
}
if (i - 1 > 0)
{
printf("加油!你还有%d次机会n", i - 1);
}
if (i - 1 == 0)
{
printf("很遗憾,机会用光了,请重新开始");
break;
}
}
}
int main()
{
srand((unsigned int)time(NULL));//生成随机时间;
int input = 0;
do
{
printf("---------------猜数字游戏----------------n");
menu();
printf("请选择开始游戏:n");
scanf("%d", &input);
switch(input)
{
case 1:
printf("开始游戏n");
play();
break;
case 2:
printf("退出游戏n");
break;
default :
printf("请输入正确的数字:n");
break;
}
} while (input);
return 0;
}
#includeint MAX(int a,int b) { int max=a>b?a:b; return max; } int MIN(int a,int b) { int min=a 方法二:依次交换数值
#includeint main() { int a=0,b=0,c=0; scanf("%d %d %d",&a,&b,&c); if(a 方法三:用if语句判断条件
#includeint main() { int a=0,b=0,c=0; scanf("%d %d %d",&a,&b,&c); if(a 二、最大公约数和最小公倍数
1.最大公约数
求出整数a,b两个数的最大公约数
(1)方法一:遍历法
#includeint main() { int a=0,b=0; scanf("%d %d",&a,&b); int ret=0; if(a>b) ret=b; else ret=a; while(1) { if(n%ret==0&&m%ret==0) { break; } else ret--; } prinft("最大公约数是:%d",ret); return 0; } (2)辗转相除法
辗转相除法也叫做欧几里得法,具体的计算过程如下图:
#includeint main() { int a=0,b=0; scanf("%d %d",&a,&b); if(a 2.最小公倍数:
求两个数的最小公倍数方法比较简单,只需要a*b再除以a,b的最大公约数
#includeint main() { int a=0,b=0; scanf("%d %d",&a,&b); int num=b; if(a 三、年份和日期问题
判断是否是闰年:
//求出1000到2000的所有闰年 #include#include bool isrun(int n) { return (n%4==0&&n%400!=0)||(n%400==0); } int main() { int i=0; for(i=1000;i<=2000;i++) { if(isrun(i)) { printf("%d ",i); } } return 0; } //思路是使用Kim larsen公式,也可以使用zelle公式 char * dayOfTheWeek(int day, int month, int year) { if(month==1||month==2) { month+=12; year--; } int w=(day+2*month+3*(month+1)/5+year+year/4-year/100+year/400+1)%7; char *arr[]={"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"}; return arr[w]; }bool isleapyear(int n) { return (n%4==0&&n%400!=0)||(n%400==0); } int strtoint(char*str,int len)//len为传递的字符串的长度 { int i=0; int sum=0; for(i=0;i四、素数
判断一素数的个数
//判断100到200之间素数的个数 #include#include int main() { int i=0; int cnt=0; for(i=100;i<201;i++) { int flag=1; int j=0; for(j=2;j<=sqrt(i);j++) { if(i%j==0) { flag=0; break; } } if(flag==1) { printf("%d ", i); cnt++; } } printf("n"); printf("素数的个数是%d",cnt); return 0; } 素数判定 埃氏筛选
int countPrimes(int n) { if (n < 2) { return 0; } int isprime[n]; memset(isprime,0,sizeof(isprime)); int cnt=0; for(int i=2;i五、几个函数
1.strcmp()
strcmp函数的作用是比较两个字符串的关系
strcmp函数的返回值有三种情况:大于0,等于0,小于0;
这些函数中的每一个的返回值表示 string1 到 string2 的字典关系。string1 到 string2 的值关系
< 0 string1 小于 string2
0 string1 与 string2 相同
> 0 string1 大于 string2这里的大小是值字符串的ASCII码值。两个字符串从左到右依次比较每一个字符的ASCII值,直到遇见不同的字符或者' '为止。
#includeint main() { int i = 0; char password[20] = ""; for (i = 0; i < 3; i++) { printf("请输入密码:>"); scanf("%s", password); if (strcmp(password, "123456") == 0)//比较2个字符串是否相等,不能使用==,而应该使用strcmp { //这个函数 printf("登陆成功n"); break; } else { printf("密码错误n"); } if (i == 3) { printf("三次密码均错误,退出程序n"); } return 0; } 2.rand函数、srand函数和time函数
1.rand函数
rand 返回一个伪随机数,rand()函数是使用线性同余法做的,它并不是真的随机数,因为其周期特别长,所以在一定范围内可以看成随机的。
rand 函数返回一个范围为 0 到 RAND_MAX 的伪随机整数。 在调用 rand 之前,使用 srand 函数为伪随机数生成器设定种子。
生成[0,1]的随机数
num=rand()/RAND_MAX;2.srand函数
srand函数的作用是生成随机数的生成种子。种子的任何其他值都将生成器设置为随机起点。 rand 检索生成的伪随机数。 在对 srand 的任何调用之前调用 rand 生成的序列与以 1 传递的种子调用 srand 生成的序列相同。
那我们如何引入一个种子?
3.time函数和时间戳
函数功能: 得到当前日历时间或者设置日历时间。返回值:time 返回以秒为单位的时间。 返回值会转化为一个时间戳。通俗的讲,时间戳(timestamp)是一份能够表示一份数据在一个特定时间点已经存在的完整的可验证的数据。
一般来说,我们会使用time(NULL)或time(0)来表示变化的种子,为unsigned int类型。当我们在不同时刻运行程序时,就会有不同的随机数种子,因此就可以得到不同的结果。如果我们想要生成随机数我们可以使用以下代码
srand((unsign int) time(NULL)) int num=rand()六、简单版猜字游戏
#include#include #include void menu() { printf("*******************************************n"); printf("*******************************************n"); printf("*******************************************n"); printf("*************** 1.play ***************n"); printf("*************** 0.exit ***************n"); printf("*******************************************n"); printf("*******************************************n"); printf("*******************************************n"); } void play() { int k = rand()%100+1; int a = 0; printf("这个数字在1到100之间n"); for (int i = 5;i > 0;i--) { printf("请输入你认为正确的数字:n"); scanf("%d", &a); if (a > k) { printf("这个数字大了n"); } else if (a == k) { printf("恭喜你猜对了n"); printf("真厉害n"); break; } else { printf("这个数字小了n"); } if (i - 1 > 0) { printf("加油!你还有%d次机会n", i - 1); } if (i - 1 == 0) { printf("很遗憾,机会用光了,请重新开始"); break; } } } int main() { srand((unsigned int)time(NULL));//生成随机时间; int input = 0; do { printf("---------------猜数字游戏----------------n"); menu(); printf("请选择开始游戏:n"); scanf("%d", &input); switch(input) { case 1: printf("开始游戏n"); play(); break; case 2: printf("退出游戏n"); break; default : printf("请输入正确的数字:n"); break; } } while (input); return 0; }



