C语言控制语句练习题1
C语言练习题1
1. 判断奇偶数
题目描述:
编写一个C程序,输入一个整数,判断该数是奇数还是偶数,并输出结果。
解题思路:
要判断一个整数是奇数还是偶数,可以利用取模运算符(%
)。如果一个数对2取余为0,则是偶数;否则是奇数。程序流程如下:
- 提示用户输入一个整数。
- 使用
scanf
函数读取用户输入的整数。 - 使用
if-else
语句判断该整数对2取余的结果。 - 根据判断结果输出相应的消息。
详细代码:
#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
用于存储用户输入。printf
和scanf
:用于提示和读取用户输入。if (num % 2 == 0)
:判断num
对2取余是否等于0,若是,则为偶数。printf
:根据判断结果输出相应的信息。return 0;
:程序结束,返回0表示正常退出。
2. 计算1到N的和
题目描述:
编写一个C程序,输入一个正整数N,使用for
循环计算并输出从1到N的所有整数的和。
解题思路:
要计算从1到N的和,可以使用一个循环变量从1遍历到N,每次将循环变量的值累加到总和中。程序流程如下:
- 提示用户输入一个正整数N。
- 使用
scanf
函数读取N的值。 - 使用
for
循环从1遍历到N,将每个数累加到sum
变量中。 - 输出最终的和。
详细代码:
#include <stdio.h>int main() {int N, sum = 0;// 提示用户输入一个正整数Nprintf("请输入一个正整数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整除。
解题思路:
根据闰年的定义,可以使用条件判断语句来确定输入的年份是否满足闰年的条件。程序流程如下:
- 提示用户输入一个年份。
- 使用
scanf
函数读取年份。 - 使用
if-else
语句判断年份是否满足闰年的条件。 - 输出判断结果。
详细代码:
#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程序,输入三个整数,找出其中最大的数并输出。
解题思路:
要找出三个数中的最大值,可以通过连续比较的方法实现。程序流程如下:
- 提示用户输入三个整数。
- 使用
scanf
函数读取三个数。 - 假设第一个数为最大值。
- 依次将第二个和第三个数与当前最大值比较,并更新最大值。
- 输出最终的最大值。
详细代码:
#include <stdio.h>int main() {int a, b, c, max;// 提示用户输入三个整数printf("请输入三个整数: ");scanf("%d %d %d", &a, &b, &c);// 假设a为最大值max = a;// 比较b和maxif(b > max) {max = b;}// 比较c和maxif(c > max) {max = c;}// 输出最大的数printf("最大的数是 %d。\n", max);return 0;
}
代码注释:
int a, b, c, max;
:声明三个整数变量a
、b
、c
用于存储用户输入,max
用于存储最大值。max = a;
:初始假设a
为最大值。if(b > max)
:如果b
大于当前的max
,则更新max
为b
。if(c > max)
:如果c
大于当前的max
,则更新max
为c
。printf
:输出最终的最大值。
5. 计算阶乘
题目描述:
编写一个C程序,输入一个非负整数N,使用while
循环计算并输出N的阶乘。
解题思路:
阶乘的定义是从1到N所有正整数的乘积。使用while
循环可以逐步计算阶乘。程序流程如下:
- 提示用户输入一个非负整数N。
- 使用
scanf
函数读取N的值。 - 判断N是否为负数,若是,则输出错误信息。
- 初始化阶乘结果为1。
- 使用
while
循环,从1遍历到N,每次将循环变量乘到阶乘结果中。 - 输出最终的阶乘值。
详细代码:
#include <stdio.h>int main() {int N;unsigned long long factorial = 1; // 使用unsigned long long存储大数// 提示用户输入一个非负整数Nprintf("请输入一个非负整数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的阶乘。