C语言控制语句练习题1

C语言练习题1

1. 判断奇偶数

题目描述:

编写一个C程序,输入一个整数,判断该数是奇数还是偶数,并输出结果。

解题思路:

要判断一个整数是奇数还是偶数,可以利用取模运算符(%)。如果一个数对2取余为0,则是偶数;否则是奇数。程序流程如下:

  1. 提示用户输入一个整数。
  2. 使用scanf函数读取用户输入的整数。
  3. 使用if-else语句判断该整数对2取余的结果。
  4. 根据判断结果输出相应的消息。

详细代码:

c 复制代码
#include <stdio.h>

int main() {
    int num;
    
    // 提示用户输入一个整数
    printf("请输入一个整数: ");
    scanf("%d", &num);
    
    // 判断该整数是奇数还是偶数
    if (num % 2 == 0) {
        printf("%d 是偶数。\n", num);
    } else {
        printf("%d 是奇数。\n", num);
    }
    
    return 0;
}

代码注释:

  • #include <stdio.h>:包含标准输入输出库。
  • int main():主函数,程序入口点。
  • int num;:声明一个整数变量num用于存储用户输入。
  • printfscanf:用于提示和读取用户输入。
  • if (num % 2 == 0):判断num对2取余是否等于0,若是,则为偶数。
  • printf:根据判断结果输出相应的信息。
  • return 0;:程序结束,返回0表示正常退出。

2. 计算1到N的和

题目描述:

编写一个C程序,输入一个正整数N,使用for循环计算并输出从1到N的所有整数的和。

解题思路:

要计算从1到N的和,可以使用一个循环变量从1遍历到N,每次将循环变量的值累加到总和中。程序流程如下:

  1. 提示用户输入一个正整数N。
  2. 使用scanf函数读取N的值。
  3. 使用for循环从1遍历到N,将每个数累加到sum变量中。
  4. 输出最终的和。

详细代码:

c 复制代码
#include <stdio.h>

int main() {
    int N, sum = 0;
    
    // 提示用户输入一个正整数N
    printf("请输入一个正整数N: ");
    scanf("%d", &N);
    
    // 使用for循环计算从1到N的和
    for(int i = 1; i <= N; i++) {
        sum += i; // 将当前数累加到sum
    }
    
    // 输出结果
    printf("1到%d的和是 %d。\n", N, sum);
    
    return 0;
}

代码注释:

  • int N, sum = 0;:声明整数变量N用于存储用户输入,sum初始化为0用于累加。
  • for(int i = 1; i <= N; i++):循环变量i从1开始,直到i大于N。
  • sum += i;:将当前循环变量i的值累加到sum中。
  • printf:输出从1到N的和。

3. 判断闰年

题目描述:

编写一个C程序,输入一个年份,判断该年份是否为闰年,并输出结果。闰年的判断规则如下:

  • 能被4整除且不能被100整除,或者能被400整除。

解题思路:

根据闰年的定义,可以使用条件判断语句来确定输入的年份是否满足闰年的条件。程序流程如下:

  1. 提示用户输入一个年份。
  2. 使用scanf函数读取年份。
  3. 使用if-else语句判断年份是否满足闰年的条件。
  4. 输出判断结果。

详细代码:

c 复制代码
#include <stdio.h>

int main() {
    int year;
    
    // 提示用户输入年份
    printf("请输入年份: ");
    scanf("%d", &year);
    
    // 判断是否为闰年
    if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
        printf("%d 是闰年。\n", year);
    } else {
        printf("%d 不是闰年。\n", year);
    }
    
    return 0;
}

代码注释:

  • int year;:声明一个整数变量year用于存储用户输入的年份。
  • if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)):判断年份是否能被4整除且不能被100整除,或者能被400整除。
  • printf:根据判断结果输出是否为闰年的信息。

4. 找出最大数

题目描述:

编写一个C程序,输入三个整数,找出其中最大的数并输出。

解题思路:

要找出三个数中的最大值,可以通过连续比较的方法实现。程序流程如下:

  1. 提示用户输入三个整数。
  2. 使用scanf函数读取三个数。
  3. 假设第一个数为最大值。
  4. 依次将第二个和第三个数与当前最大值比较,并更新最大值。
  5. 输出最终的最大值。

详细代码:

c 复制代码
#include <stdio.h>

int main() {
    int a, b, c, max;
    
    // 提示用户输入三个整数
    printf("请输入三个整数: ");
    scanf("%d %d %d", &a, &b, &c);
    
    // 假设a为最大值
    max = a;
    
    // 比较b和max
    if(b > max) {
        max = b;
    }
    
    // 比较c和max
    if(c > max) {
        max = c;
    }
    
    // 输出最大的数
    printf("最大的数是 %d。\n", max);
    
    return 0;
}

代码注释:

  • int a, b, c, max;:声明三个整数变量abc用于存储用户输入,max用于存储最大值。
  • max = a;:初始假设a为最大值。
  • if(b > max):如果b大于当前的max,则更新maxb
  • if(c > max):如果c大于当前的max,则更新maxc
  • printf:输出最终的最大值。

5. 计算阶乘

题目描述:

编写一个C程序,输入一个非负整数N,使用while循环计算并输出N的阶乘。

解题思路:

阶乘的定义是从1到N所有正整数的乘积。使用while循环可以逐步计算阶乘。程序流程如下:

  1. 提示用户输入一个非负整数N。
  2. 使用scanf函数读取N的值。
  3. 判断N是否为负数,若是,则输出错误信息。
  4. 初始化阶乘结果为1。
  5. 使用while循环,从1遍历到N,每次将循环变量乘到阶乘结果中。
  6. 输出最终的阶乘值。

详细代码:

c 复制代码
#include <stdio.h>

int main() {
    int N;
    unsigned long long factorial = 1; // 使用unsigned long long存储大数
    
    // 提示用户输入一个非负整数N
    printf("请输入一个非负整数N: ");
    scanf("%d", &N);
    
    // 检查N是否为负数
    if(N < 0) {
        printf("阶乘不存在。\n");
        return 1; // 非正常退出
    }
    
    int i = 1;
    // 使用while循环计算阶乘
    while(i <= N) {
        factorial *= i; // 将当前数乘到阶乘结果中
        i++;
    }
    
    // 输出结果
    printf("%d 的阶乘是 %llu。\n", N, factorial);
    
    return 0;
}

代码注释:

  • unsigned long long factorial = 1;:使用unsigned long long类型来存储可能较大的阶乘结果,初始化为1。
  • if(N < 0):判断输入的N是否为负数,若是则输出错误信息并退出程序。
  • int i = 1;:初始化循环变量i为1。
  • while(i <= N):循环从1到N,每次将i乘到factorial中。
  • printf:输出N的阶乘。
相关推荐
NAGNIP18 小时前
Serverless 架构下的大模型框架落地实践
算法·架构
moonlifesudo19 小时前
半开区间和开区间的两个二分模版
算法
moonlifesudo19 小时前
300:最长递增子序列
算法
CoovallyAIHub1 天前
港大&字节重磅发布DanceGRPO:突破视觉生成RLHF瓶颈,多项任务性能提升超180%!
深度学习·算法·计算机视觉
CoovallyAIHub1 天前
英伟达ViPE重磅发布!解决3D感知难题,SLAM+深度学习完美融合(附带数据集下载地址)
深度学习·算法·计算机视觉
聚客AI2 天前
🙋‍♀️Transformer训练与推理全流程:从输入处理到输出生成
人工智能·算法·llm
念风2 天前
[Linux学习笔记]F1C100S的u-boot学习记录
嵌入式
大怪v2 天前
前端:人工智能?我也会啊!来个花活,😎😎😎“自动驾驶”整起!
前端·javascript·算法
惯导马工2 天前
【论文导读】ORB-SLAM3:An Accurate Open-Source Library for Visual, Visual-Inertial and
深度学习·算法
骑自行车的码农2 天前
【React用到的一些算法】游标和栈
算法·react.js