C语言练习题1
1. 判断奇偶数
题目描述:
编写一个C程序,输入一个整数,判断该数是奇数还是偶数,并输出结果。
解题思路:
要判断一个整数是奇数还是偶数,可以利用取模运算符(%
)。如果一个数对2取余为0,则是偶数;否则是奇数。程序流程如下:
- 提示用户输入一个整数。
- 使用
scanf
函数读取用户输入的整数。 - 使用
if-else
语句判断该整数对2取余的结果。 - 根据判断结果输出相应的消息。
详细代码:
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
用于存储用户输入。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
变量中。 - 输出最终的和。
详细代码:
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整除。
解题思路:
根据闰年的定义,可以使用条件判断语句来确定输入的年份是否满足闰年的条件。程序流程如下:
- 提示用户输入一个年份。
- 使用
scanf
函数读取年份。 - 使用
if-else
语句判断年份是否满足闰年的条件。 - 输出判断结果。
详细代码:
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程序,输入三个整数,找出其中最大的数并输出。
解题思路:
要找出三个数中的最大值,可以通过连续比较的方法实现。程序流程如下:
- 提示用户输入三个整数。
- 使用
scanf
函数读取三个数。 - 假设第一个数为最大值。
- 依次将第二个和第三个数与当前最大值比较,并更新最大值。
- 输出最终的最大值。
详细代码:
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;
:声明三个整数变量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,每次将循环变量乘到阶乘结果中。 - 输出最终的阶乘值。
详细代码:
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的阶乘。