我的个人主页:☆光之梦☆的博客_CSDN博客-C语言基础语法(超详细)领域博主
欢迎各位 👍点赞 ⭐收藏 📝评论
我的专栏:C语言基础语法(超详细)_☆光之梦☆的博客-CSDN博客(这个专栏里的平均文章质量分是95噢,基本全都是高质量文章,本博主将会长期更新c语言的语法知识,初学c语言的朋友们,可以收藏订阅一下,收藏绝对不亏噢)
目录
下列是:C语言水平测试题(3)
大家冲鸭!
输入一个数,求这个数的前n项和
用户输入一个整数n,请求出这个数从1到n的倒数之和的值,并打印输出
具体要求如下图:
代码实现示例:
- #include
-
- 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;
- }
核心代码块:
用户输入一个整数n,请计算出从1到n的交替和,并将结果输出
注:其中每一项的正负号会交替改变
代码实现示例:
- #include
-
- 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
坏处:效率不高
图例:
辗转相除法
如果 b 等于 0,计算结束,a 就是最大公约数;
否则,计算 a 除以 b 的余数(a % b),让 a 等于 b,而 b 等于那个余数;
回到第一步
a | b | 余数 |
---|---|---|
12 | 18 | 12 |
18 | 12 | 6 |
12 | 6 | 0 |
6 | 0 |
代码实现示例:
- #include
- //辗转相除法
- 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
代码实现示例:
- #include
-
- 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博客
创作不易,👍 +⭐ +📝(一键三连) 是对博主最大的鼓励与支持哦。