1、函数实现打印输出1000-2000之间的闰年
int is_leap_year(int n)
{
/*if ((n % 4 == 0 && n % 100 != 0) || (n % 400 == 0))
return 1;
else
return 0;*/
//简单写法:
return ((n %4== 0 && n % 100 != 0) || (n % 400 == 0));
}
int main()
{
int count = 0;
int y = 0;
for (int y = 1000; y <= 2000; y++)
{
if (is_leap_year(y) == 1)
{
count++;
printf("%d ", y);
}
}
printf("\n1000到2000年之间闰年数为:%d\n", count);
return 0;
}
难点错误:count++放在了printf之前,导致计数不对。
2、函数实现判断一个数是素数()
int is_prime(int n)
{
int j = 0;
for (j = 2; j < n; j++)//2到n-1之间的数字
{
if (n % j == 0)
{
return 0;
}
}
return 1;
}
int main()
{
int i = 0;
int count = 0;
printf("100-200之间的素数为:\n");
for (int i = 100; i <= 200; i++)
{
if (is_prime(i) == 1)
{
count++;
printf("%d ", i);
}
}
printf("\n素数个数为:%d\n", count);
return 0;
}
3、goto语句用法
int main()
{
char s[20] = {0};
system("shutdown -s -t 60");
again:
printf("输入我是猪,否则1分钟内关机!\n");
scanf(" %s", s);
if (strcmp(s, "我是猪") == 0)
{
system("shutdown -a");
}
else
{
goto again;
}
return 0;
}
4、求最大公约数-辗转相除法
int main()
{
int m = 0, n = 0,t=0;
printf("请输入要求最大公约数的两个数:\n");
scanf("%d %d",&m,&n);
while (t=m%n)//当t不等于0时进入循环
{
m = n;
n = t;
}
printf("最大公约数是:%d\n", n);
printf("最小公倍数是:%d\n",m*n/n);//顺便判断最小公倍数
return 0;
}
int main()//求最大公约数方法一(假设n为最大公约数)
{
int m = 0, n = 0;
printf("请输入要求最大公约数的两个数:\n");
scanf("%d%d",&n,&m);
int max = 0;
//假设max就是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;
}
5、调用一个函数,每调用一次,num增加1
#include<stdlib.h>
#include<string.h>
//通过访问地址
void Add(int *p)
{
(*p)++;
}
int main()
{
int num = 0;
Add(&num);
printf("%d\n", num);
Add(&num);
printf("%d\n", num);
Add(&num);
printf("%d\n",num);
return 0;
}
运行结果: