我的个人主页:************☆光之梦☆的博客_CSDN博客-C语言基础语法(超详细)领域博主****************
欢迎各位 👍点赞 ⭐收藏 📝评论
我的专栏: C语言基础语法(超详细)_☆光之梦☆的博客-CSDN博客(这个专栏里的平均文章质量分是95噢,基本全都是高质量文章,本博主将会长期更新c语言的语法知识,初学c语言的朋友们,可以收藏订阅一下,收藏绝对不亏噢)
目录
下列是:C语言水平测试题(3)
大家冲鸭!
一、✨前n项求和✨
输入一个数,求这个数的前n项和
🎇【题型1】 🎇
用户输入一个整数n,请求出这个数从1到n的倒数之和的值,并打印输出
具体要求如下图:
代码实现示例:
cpp
#include <stdio.h>
int main()
{
int n; // n用于存储用户输入的值
int i; // i用于循环计数
double sum = 0.0; // sum用于存储计算的和的结果
// 用户输入
printf("请输入您要计算的前n项和的n:");
scanf("%d",&n);
// 求前n项和
// 从1循环递增到n。在每次循环中,1.0/i的值被加到sum中
for (i = 1; i <= n; i++){
sum += 1.0/i;
}
// 输出结果
printf("f(%d)=%f\n",n,sum);
return 0;
}
核心代码块:
🎇【题型2】 🎇
用户输入一个整数n,请计算出从1到n的交替和,并将结果输出
注:其中每一项的正负号会交替改变
代码实现示例:
cpp
#include <stdio.h>
int main()
{
int n; // n用于存储用户输入的值
int i; // i用于循环计数
double sum = 0.0; // sum用于存储计算的和的结果
int sign = 1; // sign用于标记每一项的正负号,初始值为1 正
// 用户输入
printf("请输入您要计算的前n项和的n:");
scanf("%d",&n);
// 循环计算从1到n的交替和
for (i = 1; i <= n; i++){
// sign用于标记正负号,通过乘以sign实现每一项正负号的交替
sum += sign*1.0/i;
// 在每次循环结束时,sign会取反,使下一次循环的正负号相反
sign = -sign;
}
// 输出
printf("f(%d)=%f\n",n,sum);
return 0;
}
核心代码块:
cpp
double sum = 0.0;
int sign = 1;
for (i = 1; i <= n; i++){
sum += sign*1.0/i;
sign = -sign;
}
二、✨求最大公约数✨
需求:
输入两个数 a 和 b,输出它们的最大公约数
输入:1218
输出:6
🎇方案1------枚举🎇
坏处:效率不高
图例:
🎇 方案2------辗转相除法🎇
辗转相除法
如果 b 等于 0,计算结束,a 就是最大公约数;
否则,计算 a 除以 b 的余数(a % b),让 a 等于 b,而 b 等于那个余数;
回到第一步
a | b | 余数 |
---|---|---|
12 | 18 | 12 |
18 | 12 | 6 |
12 | 6 | 0 |
6 | 0 |
代码实现示例:
cpp
#include <stdio.h>
//辗转相除法
int main()
{
//计算a与b的最大公约数
// 定义两个变量a和b,用来存储输入的两个整数
int a,b;
// 定义一个变量t,用来存储余数
int t;
//scanf("%d %d",&a,&b);
a = 12;b=18;
// 当b不等于0时,将两个数的差值更新为较小的数与余数的差值
// 直到余数为0,此时较小的数即为最大公约数
while (b != 0) {
t = a % b;
a = b;
b = t;
}
printf("最大公约数(gcd)=%d\n",a);// 6
return 0;
}
三、✨正序分解整数✨
正序分解整数
输入一个非负整数,正序输出它的每一位数字输入:13425 输出:1 3 4 2 5
代码实现示例:
cpp
#include <stdio.h>
int main()
{
int x;
//scanf("%d",&x);
x = 13425;
int mask = 1;
int t = x;
while (t > 9) {
t /= 10;
mask *= 10;
}
printf("x=%d,mask=%d\n",x,mask);
do{
int d = x / mask;
printf("%d",d);
if(mask > 9){
printf(" ");
}
x %= mask;
mask /= 10;
}while (mask > 0);
printf("\n");
return 0;
}
各位学习C语言的初学者,如果有问题随时都可以来问我,我会随时为您解答!欢迎大家与我一起学习,互相进步。
我的C语言专栏: C语言基础语法(超详细)_☆光之梦☆的博客-CSDN博客
创作不易,👍 +⭐ +📝(一键三连) 是对博主最大的鼓励与支持哦。