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的阶乘。
相关推荐
HW-BASE1 分钟前
C语言的结构体与联合体
c语言·单片机·嵌入式·编程·c
归辞...3 分钟前
「iOS」————单例与代理
开发语言·javascript·ios
设计师小聂!28 分钟前
力扣热题100------136.只出现一次的数字
数据结构·算法·leetcode
崎岖Qiu34 分钟前
leetcode643:子数组最大平均数 I(滑动窗口入门之定长滑动窗口)
java·算法·leetcode·力扣·双指针·滑动窗口
多思考少编码1 小时前
[GESP202309 四级] 2023年9月GESP C++四级上机题题解,附带讲解视频!
开发语言·c++·算法
FightingFreedom1 小时前
GPIO交换矩阵和IO_MUX
单片机·嵌入式硬件·esp32·arduino·esp32s3
TDengine (老段)1 小时前
TDengine IDMP 背后的技术三问:目录、标准与情景
大数据·数据库·物联网·算法·时序数据库·iot·tdengine
Crazy learner2 小时前
C语言fgets函数详解:安全读取字符串的利器
c语言·开发语言·算法
flashlight_hi2 小时前
LeetCode 分类刷题:2824. 统计和小于目标的下标对数目
javascript·数据结构·算法·leetcode
MicroTech20252 小时前
微算法科技(NASDAQ:MLGO)利用鸽群分散算法,提高区块链交易匹配算法效能
算法·区块链·量子计算