前言
通过业务侧输入需求,使用代码完成。
1.偶数立方和
编写函数求1~100中奇数的平方与偶数的立方的和
1.1代码实现结果
1.2源码示例
#include <stdio.h>// 计算1到100中奇数的平方与偶数的立方的和
int calculateSum() {int sum = 0;// 遍历1到100之间的所有数字for (int i = 1; i <= 100; i++) {// 如果是奇数if (i % 2 == 1) {// 计算奇数的平方并累加到总和中sum += i * i;} else {// 计算偶数的立方并累加到总和中sum += i * i * i;}}// 返回计算结果return sum;
}int main(int argc, const char *argv[])
{// 调用calculateSum函数并将结果存储在result变量中int result = calculateSum();// 输出结果printf("1到100中奇数的平方与偶数的立方的和为: %d\n", result);return 0;
}
2.买衣问钱
买一件上衣59元,买一件裤子70元,如果成套买的话,一套120.假设我买了m个上衣和n个裤子,问:需要花多少钱?
2.1代码实现结果
2.2源码示例
#include <stdio.h>int main(int argc, const char *argv[])
{int m, n; // m表示上衣的数量,n表示裤子的数量int cost = 0; // 初始化总花费为0printf("请输入上衣的数量: ");scanf("%d", &m);printf("请输入裤子的数量: ");scanf("%d", &n);// 计算成套购买的套数int sets = (m < n) ? m : n;// 计算成套购买的花费cost += sets * 120;// 计算单独购买上衣的花费if (m > sets) {cost += (m - sets) * 59;}// 计算单独购买裤子的花费if (n > sets) {cost += (n - sets) * 70;}printf("总共需要花费: %d元\n", cost);return 0;
}
3.打印倒金字塔
终端输入行数,打印倒金字塔
3.1代码实现结果
3.2源码示例
#include <stdio.h>int main(int argc, const char *argv[])
{int rows;// 提示用户输入行数printf("请输入行数: ");// 从用户输入中获取行数scanf("%d", &rows);// 外层循环控制行数for (int i = rows; i >= 1; i--) {// 内层循环控制空格的数量for (int j = 1; j <= rows - i; j++) {// 打印空格printf(" ");}// 内层循环控制星号的数量for (int k = 1; k <= 2 * i - 1; k++) {// 打印星号printf("*");}// 每行结束后换行printf("\n");}return 0;
}
4.异或算术
使用异或和算术求和交换两个数
4.1代码实现结果
4.2源码示例
#include <stdio.h>int main(int argc, const char *argv[])
{int a = 5;int b = 10;printf("B_swap: a = %d, b = %d\n", a, b);// 使用异或运算交换a = a ^ b;b = a ^ b;a = a ^ b;printf("A_swap: a = %d, b = %d\n", a, b);printf("------------------------------\n");// 使用算术求和交换int x = 30;int y = 50;printf("B_swap1: a = %d, b = %d\n", x, y);x = x + y;y = x - y;x = x - y;printf("A_swap1: x = %d, y = %d\n", x, y);return 0;}
5.固定数字不同且无重复
有 1、2、3、4个数字,能组成多少互不相同且无重复的三位?都是多少?
5.1代码实现结果
5.2源码示例
#include <stdio.h>int main(int argc, const char *argv[])
{// 初始化计数器int count = 0;// 定义一个包含4个数字的数组int digits[4] = {1, 2, 3, 4};// 外层循环遍历数组中的每个数字作为百位for (int i = 0; i < 4; i++) {// 中层循环遍历数组中的每个数字作为十位for (int j = 0; j < 4; j++) {// 内层循环遍历数组中的每个数字作为个位for (int k = 0; k < 4; k++) {// 检查百位、十位和个位数字是否不重复if (i != j && i != k && j != k) {// 打印由这三个数字组成的三位数printf("%d%d%d\n", digits[i], digits[j], digits[k]);// 计数器加1count++;}}}}// 打印生成的不重复三位数的总数printf("不重复有: %d\n", count);return 0;
}
6.求最大公约数和最小公倍数
输入两个正整数m和n,求其最大公约数和最小公倍数
6.1代码实现效果
6.2源码示例
#include <stdio.h>// 函数声明
int gcd(int m, int n);
int lcm(int m, int n);int main(int argc, const char *argv[])
{int m, n;// 输入两个正整数printf("请输入两个正整数 m 和 n: ");scanf("%d %d", &m, &n);// 计算并输出最大公约数int gcd_result = gcd(m, n);printf("最大公约数: %d\n", gcd_result);// 计算并输出最小公倍数int lcm_result = lcm(m, n);printf("最小公倍数: %d\n", lcm_result);return 0;
}// 欧几里得算法求最大公约数
int gcd(int m, int n) {// 当n不为0时,继续循环while (n != 0) {// 计算m除以n的余数int temp = m % n;// 将n赋值给mm = n;// 将余数赋值给nn = temp;}// 返回m,此时m为最大公约数return m;
}// 利用最大公约数求最小公倍数
int lcm(int m, int n) {// 计算最小公倍数,公式为 (m * n) / gcd(m, n)return (m / gcd(m, n)) * n;
}
7.冒泡排序算法实例
终端输入10个学生成绩,使用冒泡排序对学生成绩从低到高排序
7.1代码实现结果
7.2源码示例
#include <stdio.h>// 冒泡排序函数
void bubbleSort(int arr[], int n)
{// 外层循环控制排序趟数for (int i = 0; i < n - 1; i++){// 内层循环控制每趟比较次数for (int j = 0; j < n - 1 - i; j++) {// 如果当前元素大于下一个元素,则交换它们if (arr[j] > arr[j + 1]) {// 交换相邻元素int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}
}int main(int argc, const char *argv[])
{int scores[10];printf("请输入10个学生成绩:\n");// 输入10个成绩for (int i = 0; i < 10; i++) {printf("学生 %d 成绩: ", i + 1);scanf("%d", &scores[i]);}// 使用冒泡排序对成绩进行排序bubbleSort(scores, 10);// 输出排序后的成绩printf("排序后的成绩(从低到高):\n");for (int i = 0; i < 10; i++) {printf("学生 %d 成绩: %d\n", i + 1, scores[i]);}return 0;
}
8.实现字符串的整体逆置
8.1代码实现结果
8.2源码示例
#include <stdio.h>
#include <string.h>int main(int argc, const char *argv[])
{char str[100];int i, j;char temp;// 提示用户输入一个字符串printf("请输入一个字符串: ");// 从标准输入读取字符串fgets(str, sizeof(str), stdin);// 去掉输入字符串末尾的换行符if (str[strlen(str) - 1] == '\n') {str[strlen(str) - 1] = '\0';}// 计算字符串长度int len = strlen(str);// 逆置字符串for (i = 0, j = len - 1; i < j; i++, j--) {// 交换字符temp = str[i];str[i] = str[j];str[j] = temp;}// 输出逆置后的字符串printf("逆置后的字符串: %s\n", str);return 0;
}