C语言---程序设计基础练习题目3
对之前的练习和文章进行回顾,并在此文章中解决新问题
如在题目中有看不明白的地方
可跳转我的主页去查看
Wanyu的主页
以下题目是留在文章中的练习:(点击即可查看)
Wanyu C语言—程序设计练习题目及学习方法2
习题1:计算正整数1-100中的奇数之和和偶数之和
#include <stdio.h>
int main() {
int sum_odd = 0, sum_even = 0;
for (int i = 1; i <= 100; i++) {
if (i % 2 == 0) {
sum_even += i;
} else {
sum_odd += i;
}
}
printf("1-100之间奇数之和为:%d\n", sum_odd);
printf("1-100之间偶数之和为:%d\n", sum_even);
return 0;
}
解释:
- 初始化变量: sum_odd 和 sum_even 分别用来存储奇数和偶数的和,初始值为0。
- 循环遍历: 使用 for 循环遍历1到100之间的所有整数。
- 判断奇偶: 使用 % 取余运算符判断当前数字 i 是奇数还是偶数。
- 累加: 如果是偶数,则将 i 加到 sum_even 中;如果是奇数,则将 i 加到 sum_odd 中。
习题2:输入10个数,统计并输出整数、负数和0的个数
#include <stdio.h>
int main() {
int num, positive = 0, negative = 0, zero = 0;
for (int i = 1; i <= 10; i++) {
printf("请输入第%d个数:", i);
scanf("%d", &num);
if (num > 0) {
positive++;
} else if (num < 0) {
negative++;
} else {
zero++;
}
}
printf("正数个数:%d\n", positive);
printf("负数个数:%d\n", negative);
printf("0的个数:%d\n", zero);
return 0;
}
解释:
- 初始化: positive、negative 和 zero 分别用来存储正数、负数和0的个数,初始值为0。
- 输入: 使用 for 循环,提示用户输入10个整数。
- 分类统计: 根据输入的数字是正数、负数还是0,分别将对应的计数器加1。
习题3:打印并输出所有的水仙花数
#include <stdio.h>
int main() {
int i, a, b, c;
for (i = 100; i <= 999; i++) {
a = i / 100;
b = (i % 100) / 10;
c = i % 10;
if (i == a * a * a + b * b * b + c * c * c) {
printf("%d是水仙花数\n", i);
}
}
return 0;
}
解释:
- 循环遍历: 使用 for 循环遍历100到999之间的所有三位数。
- 分解: 将三位数 i 分解成百位数 a、十位数 b 和个位数 c。
- 判断: 判断 i 是否等于 a 的三次方加上 b 的三次方加上 c 的三次方。
习题4:将一个数组中的元素进行逆序存放,9,8,7,6,5,4,3,2,1
思路:利用双指针法,
一个指针从数组开头开始,
另一个从末尾开始,
依次交换这两个指针所指的元素,
直到它们相遇或交错。
#include <stdio.h>
void reverseArray(int arr[], int size) {
int temp;
for (int i = 0; i < size / 2; i++) {
temp = arr[i];
arr[i] = arr[size - i - 1];
arr[size - i - 1] = temp;
}
}
int main() {
int arr[] = {9, 8, 7, 6, 5, 4, 3, 2, 1};
int size = sizeof(arr) / sizeof(arr[0]);
reverseArray(arr, size);
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
return 0;
}
大家需认真去读程序,
去思考此代码中涉及的知识点,
这里帮助大家快速复习
WanyuC语言—函数指针基础总结万字(4)
习题5:在一个升序数组中插入一个数,使数组仍然保持升序排列
思路:找到插入位置,
将后续元素右移一位,
插入新元素。
#include <stdio.h>
void insertAndSort(int arr[], int *size, int num) {
int i;
for (i = *size - 1; (i >= 0 && arr[i] > num); i--) {
arr[i + 1] = arr[i];
}
arr[i + 1] = num;
(*size)++;
}
int main() {
int arr[10] = {1, 3, 5, 7, 9}; // 假设已有 5 个元素
int size = 5;
int num = 6;
insertAndSort(arr, &size, num);
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
return 0;
}
习题6:合并两个降序数组,使合并后的数据仍然保持降序排列
#include <stdio.h>
void mergeArrays(int arr1[], int size1, int arr2[], int size2, int result[]) {
int i = 0, j = 0, k = 0;
while (i < size1 && j < size2) {
if (arr1[i] > arr2[j]) {
result[k++] = arr1[i++];
} else {
result[k++] = arr2[j++];
}
}
while (i < size1) {
result[k++] = arr1[i++];
}
while (j < size2) {
result[k++] = arr2[j++];
}
}
int main() {
int arr1[] = {9, 7, 5, 3, 1};
int arr2[] = {8, 6, 4, 2, 0};
int size1 = sizeof(arr1) / sizeof(arr1[0]);
int size2 = sizeof(arr2) / sizeof(arr2[0]);
int result[size1 + size2];
mergeArrays(arr1, size1, arr2, size2, result);
for (int i = 0; i < size1 + size2; i++) {
printf("%d ", result[i]);
}
return 0;
}
习题7:求一个3x3矩阵主对角线元素之和
#include <stdio.h>
int main() {
int matrix[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
int sum = 0;
for (int i = 0; i < 3; i++) {
sum += matrix[i][i];
}
printf("主对角线元素之和为:%d\n", sum);
return 0;
}
习题8:编写程序,打印10行杨辉三角
思路:用二维数组存储三角形,
每行第一个和最后一个元素为 1,
中间元素是上行两个元素之和。
#include <stdio.h>
void printPascalsTriangle(int rows) {
int arr[rows][rows];
for (int i = 0; i < rows; i++) {
arr[i][0] = arr[i][i] = 1;
for (int j = 1; j < i; j++) {
arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];
}
}
for (int i = 0; i < rows; i++) {
for (int j = 0; j <= i; j++) {
printf("%d ", arr[i][j]);
}
printf("\n");
}
}
int main() {
int rows = 10;
printPascalsTriangle(rows);
return 0;
}
快速回顾:
WanyuC语言—复杂数据类型程序设计(5)
原文地址:https://blog.csdn.net/m0_75089299/article/details/143579720
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!