我的个人主页:☆光之梦☆的博客_CSDN博客-C语言基础语法(超详细)领域博主
欢迎各位 👍点赞 ⭐收藏 📝评论
我的专栏:C语言基础语法(超详细)_☆光之梦☆的博客-CSDN博客(这个专栏里的平均文章质量分是95噢,基本全都是高质量文章,本博主将会长期更新c语言的语法知识,初学c语言的朋友们,可以收藏订阅一下,收藏绝对不亏噢)
目录
一、前n项求和
【题型1】
【题型2】
二、求最大公约数
方案1——枚举
方案2——辗转相除法
三、正序分解整数
下列是:C语言水平测试题(3)
大家冲鸭!
一、✨前n项求和✨
输入一个数,求这个数的前n项和
🎇【题型1】 🎇
用户输入一个整数n,请求出这个数从1到n的倒数之和的值,并打印输出
具体要求如下图:
代码实现示例:
#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的交替和,并将结果输出
注:其中每一项的正负号会交替改变
代码实现示例:
#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;
}
核心代码块:
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 |
代码实现示例:
#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);// 6return 0;
}
三、✨正序分解整数✨
正序分解整数
输入一个非负整数,正序输出它的每一位数字输入:13425 输出:1 3 4 2 5
代码实现示例:
#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博客
创作不易,👍 +⭐ +📝(一键三连) 是对博主最大的鼓励与支持哦。