前言
通过业务侧输入需求,使用代码完成。
1.偶数立方和
编写函数求1~100中奇数的平方与偶数的立方的和
1.1代码实现结果
1.2源码示例
cpp
#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源码示例
cpp
#include <stdio.h>
int main(int argc, const char *argv[])
{
int m, n; // m表示上衣的数量,n表示裤子的数量
int cost = 0; // 初始化总花费为0
printf("请输入上衣的数量: ");
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源码示例
cpp
#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源码示例
cpp
#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源码示例
cpp
#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]);
// 计数器加1
count++;
}
}
}
}
// 打印生成的不重复三位数的总数
printf("不重复有: %d\n", count);
return 0;
}
6.求最大公约数和最小公倍数
输入两个正整数m和n,求其最大公约数和最小公倍数
6.1代码实现效果
6.2源码示例
cpp
#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赋值给m
m = n;
// 将余数赋值给n
n = 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源码示例
cpp
#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源码示例
cpp
#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;
}