C语言经典题目(一)

简介: C语言经典题目(一)

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;
}
相关文章
|
6月前
|
C语言
C语言:数组和指针笔试题解析(包括一些容易混淆的指针题目)
C语言:数组和指针笔试题解析(包括一些容易混淆的指针题目)
|
6月前
|
存储 C语言 C++
C语言------------指针笔试题目深度剖析
C语言------------指针笔试题目深度剖析
47 1
|
11月前
2.C语言题目---字符串左旋
2.C语言题目---字符串左旋
77 1
|
1月前
|
程序员 C语言
【C语言】LeetCode(力扣)上经典题目
【C语言】LeetCode(力扣)上经典题目
|
11月前
|
存储
1.C语言题目---指针类(基础)
1.C语言题目---指针类(基础)
60 1
|
3月前
|
存储 编译器 C语言
【C语言】指针练习题目
【C语言】指针练习题目
|
5月前
|
测试技术 C语言
数据结构学习记录——树习题—Tree Traversals Again(题目描述、输入输出示例、解题思路、解题方法C语言、解析)
数据结构学习记录——树习题—Tree Traversals Again(题目描述、输入输出示例、解题思路、解题方法C语言、解析)
46 1
|
6月前
|
算法 编译器 API
C语言易混淆、简单算法、结构体题目练习、常见关键字总结-1
C语言易混淆、简单算法、结构体题目练习、常见关键字总结
|
5月前
|
C语言
c语言循环题目
c语言循环题目
|
6月前
|
C语言
PTA 浙大版《C语言程序设计(第3版)》题目集 习题8-4 报数 (20分)
PTA 浙大版《C语言程序设计(第3版)》题目集 习题8-4 报数 (20分)