前言
这些问题都是围绕C语言的循环结构设计的,可以帮助读者练习和理解for循环和while循环的概念。解决这些问题可以提高读者在循环控制方面的编程技能。如果读者需要更多的练习,建议您查找在线资源或编程书籍,以获得更多的题目和解决方案。
1.题目:数列求和
描述: 编写一个程序,计算从1到n的所有整数的和。
示例代码:
#include <stdio.h>
int main() {
int n, sum = 0;
printf("Enter a number: ");
scanf("%d", &n);
for (int i = 1; i <= n; i++) {
sum += i;
}
printf("The sum is: %d\n", sum);
return 0;
}
2.题目:打印三角形图案
描述: 编写一个程序,打印一个由星号(*)组成的直角三角形。
示例代码:
#include <stdio.h>
void printTriangle(int n) {
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n - i; j++) {
printf(" ");
}
for (int j = 1; j <= 2 * i - 1; j++) {
printf("*");
}
printf("\n");
}
}
int main() {
int n;
printf("Enter the number of rows: ");
scanf("%d", &n);
printTriangle(n);
return 0;
}
3.题目:逆序打印数组
描述: 编写一个程序,使用循环结构逆序打印一个整数数组。
示例代码:
#include <stdio.h>
void reversePrint(int arr[], int size) {
for (int i = size - 1; i >= 0; i--) {
printf("%d ", arr[i]);
}
}
int main() {
int arr[] = {1, 2, 3, 4, 5};
int size = sizeof(arr) / sizeof(arr[0]);
reversePrint(arr, size);
return 0;
}
4.题目:求解阶乘
描述: 编写一个函数,计算给定整数的阶乘。
示例代码:
#include <stdio.h>
long factorial(int n) {
long result = 1;
for (int i = 1; i <= n; i++) {
result *= i;
}
return result;
}
int main() {
int num;
printf("Enter a number: ");
scanf("%d", &num);
printf("Factorial of %d is: %ld\n", num, factorial(num));
return 0;
}
5.题目:寻找最大公约数(GCD)
描述: 编写一个函数,使用辗转相除法(也称为欧几里得算法)来计算两个正整数的最大公约数。
示例代码:
#include <stdio.h>
int gcd(int a, int b) {
while (b != 0) {
int temp = b;
b = a % b;
a = temp;
}
return a;
}
int main() {
int num1, num2;
printf("Enter two numbers: ");
scanf("%d %d", &num1, &num2);
printf("The GCD of %d and %d is %d\n", num1, num2, gcd(num1, num2));
return 0;
}
6.题目:计算水仙花数
描述: 水仙花数是指一个n位数,它的每个位上的数字的n次幂之和等于它本身。例如,153是一个3位数的水仙花数,因为1^3 + 5^3 + 3^3 = 153。编写一个函数来找出所有小于等于n的水仙花数。
示例代码:
#include <stdio.h>
bool isArmstrong(int num) {
int originalNum = num, n = 0, rem;
while (num != 0) {
rem = num % 10;
num /= 10;
n++;
}
num = originalNum;
int sum = 0;
while (num != 0) {
sum += pow(rem, n);
rem = num % 10;
num /= 10;
}
return sum == originalNum;
}
int main() {
int n;
printf("Enter the number of digits: ");
scanf("%d", &n);
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= pow(10, i) - 1; j++) {
if (isArmstrong(j)) {
printf("%d ", j);
}
}
}
return 0;
}
7.题目:递归计算阶乘
描述: 编写一个函数,使用递归方法计算给定整数的阶乘。
示例代码:
#include <stdio.h>
int factorialRecursive(int n) {
if (n == 0) {
return 1;
}
return n * factorialRecursive(n - 1);
}
int main() {
int num;
printf("Enter a number: ");
scanf("%d", &num);
printf("Factorial of %d is: %d\n", num, factorialRecursive(num));
return 0;
}