1.判断一个整数n是否是闰年
题目分析:解答此题之前,要搞明白什么是闰年。
闰年:能被4整除且不能被100整数,或者能被400整数。
那么我们自然而然的就想起了if分支语句
#include<stdio.h>
int main()
{
int year;
scanf("%d", &year);
if (year % 400 == 0) //能被400整除一定是闰年!
printf("闰年!");
else if (year % 4 == 0 && year % 100 != 0)//能被4整除且不能被100整除才是闰年!
printf("闰年!");
else
printf("非闰年!");
return 0;
}
2.输入4个数,输出其中最大的数
题目分析:判断四个数中的最大整数,
解法一:我们可以假设其中的一个数为最大数,然后不断用分支语句来验证这个数是不是最大数,如果不是最大数,就将比他的的数假设为最大数,直到比对完全结束。
#include<stdio.h>
int main()
{
int a, b, c, d;
int max;
scanf("%d %d %d %d", &a, &b, &c, &d);
max = a;
if (b > max)
max = b;
if (c > max)
max = c;
if (d > max)
max = d;
printf("%d", max);
return 0;
}
解法二:使用三目运算符
#include<stdio.h>
int main()
{
int a, b, c, d, max1,max2;
scanf("%d %d %d %d",&a,&b,&c,&d);
max1 = (a> b) ? a : b;
max2 = (c > d) ? c : d;
if (max1 > max2)
printf("%d", max1);
else
printf("%d", max2);
return 0;
}
解法三:上述代码if语句出现的次数有点多,四个还好,但是要是100个数就显得特别麻烦,这时我们自然想到可以用循环语句来减少这种重复性的操作。
#include<stdio.h>
#define NUMBER 4 //定义NUMBER 为 4
int main()
{
int a;
int i = 0;
int max = 0;
for (i = 0; i < NUMBER; i++)
{
scanf("%d", &a);
if (a > max)
max = a;
}
printf("%d", max);
return 0;
}
3. 二的n次方计算
题目分析:计算2的n次方,我们第一反应就是一直累乘,但是题目要求我们不能累乘。
解法一:利用pow函数。
#include <stdio.h>
#include<math.h>
int main()
{
int a = 0;
scanf("%d", &a);
printf("%.lf\n", pow(2, a));
return 0;
}
解法二:利用题目的提示:左移(<<)运算符
左移(<<)运算符的作用:
将数值转化为二进制数后再左移一位。
移位规则:左边抛弃、右边补0
所以,在数字没有溢出的情况下,左移一位都相当于乘以2的1次方,左移n位就相当于乘以2的n次方。
#include <stdio.h>
int main()
{
int a = 0;
scanf("%d", &a);
printf("%d\n", 1 << a);
return 0;
}
4.判断这个整数能被 2 3 7 中哪几个数整除,并按升序输出
解法一:利用分支语句,直接将所有的情况全部罗列出来
#include<stdio.h>
int main()
{
int n;
scanf("%d", &n);
if (n % 2 == 0 && n % 3 == 0 && n % 7 == 0)
printf("2 3 7\n");
else if (n % 2 == 0 && n % 3 == 0 && n % 7 != 0)
printf("2 3\n");
else if (n % 2 == 0 && n % 3 != 0 && n % 7 == 0)
printf("2 7\n");
else if (n % 2 != 0 && n % 3 == 0 && n % 7 == 0)
printf("3 7\n");
else if (n % 2 == 0 && n % 3 != 0 && n % 7 != 0)
printf("2\n");
else if (n % 2 != 0 && n % 3 == 0 && n % 7 != 0)
printf("3\n");
else if (n % 2 != 0 && n % 3 != 0 && n % 7 == 0)
printf("7\n");
else
printf("n\n");
return 0;
}
解法二:利用循环,减少操作。
#include<stdio.h>
int main()
{
int arr[3] = { 2,3,7 };
int ch, f = 0;
scanf("%d", &ch);
for (int i = 0; i < 3; i++)
{
if (ch % arr[i] == 0)
{
f = 1;
printf("%d ", arr[i]);
}
}
if (f == 0)
printf("n");
return 0;
}