嵌入式初学-C语言-练习三

#部分题目可能在之前的博客中有,请谅解,保证常见题型均被发出#

1.计算n以内所有正奇数的和 ? n值通过键盘输入

代码:

cs 复制代码
  1 /*
  2  需求:计算n以内所有正奇数的和 ? n值通过键盘输入
  3 */
  4 #include <stdio.h>
  5 
  6 int main()
  7 {
  8     int sum = 0;
  9     int a = 0;
 10 
 11     printf("请输入一个正值:");
 12     scanf("%d",&sum);
 13 
 14     for(int i = 1;i <= sum;i++)
 15     {
 16         if(i % 2 != 0)
 17         {
 18             a += i;
 19         }
 20     }
 21 
 22     printf("正奇数和为:%d\n",a);
 23 
 24     return 0;
 25 }
复制代码
​结果:

2.计算 1 + 1/(2 * 3) + 1/(3 * 4) + ...+ 1/(n * (n + 1)) = ?直到最后一相值小于0.00001为至。

代码:

cs 复制代码
  1 /*
  2   计算 1+1/(2*3)+1/(3*4)+...+1/(n*(n+1))=?直到最后一相值小于0.00001为至。
  3 */
  4 #include <stdio.h>
  5 
  6 int main()
  7 {
  8     double sum = 1.0;
  9     double i = 1.0;
 10     do
 11     {
 12 
 13        sum = sum + 1.0 / ((i + 1) * (i + 2));
 14        i++;
 15 
 16     }while(1.0 / ((i + 1) * (i + 2)) >= 0.00001);
 17 
 18 
 19     printf("%lf\n",sum);
 20 
 21     return 0;
 22 }
​

结果:

3.计算1+1/2 - 1/3 + 1/4 - 1/5 ...+1/n= ? n通过键盘输入

代码:

cs 复制代码
  1 /*
  2   需求:计算1+1/2 - 1/3 + 1/4 - 1/5 ...+1/n= ? n通过键盘输入
  3 */
  4 #include <stdio.h>
  5 
  6 int main()
  7 {
  8     int a;
  9     int b = 2;
 10     double sum = 1;    //找出题目的关系为1加上n分之1,再减n+1分之1,将算是前1直接赋给sum,利于找出关系表达式
 11     printf("请输入一个数字:\n");
 12     scanf("%d",&a);
 13 
 14     do
 15     {
 16         if(b % 2 == 0)  //题目可知被二整除为加号
 17         {
 18             sum += 1.0 / b;
 19         }
 20         else            //不被二整除为减号
 21         {
 22             sum -= 1.0 / b;
 23         }
 24         b++;
 25     }while(b <= a);   //当b大于输入值时跳出循环
 26 
 27         printf("输出的值为:%f\n",sum);
 28 
 29 
 30 
 31     return 0;
 32 }
​

结果:

4.计算n的阶乘 ? n! = 123.....*n n值通过键盘输入

代码:

cs 复制代码
  1 /*
  2  需求:计算n的阶乘 ? n! = 123.....*n n值通过键盘输入
  3 */
  4 #include <stdio.h>
  5 
  6 int main()
  7 {
  8     int b = 0,sum = 1;   //sum要算乘法所以赋值不能为0
  9     printf("请输入一个整数数值:");
 10     scanf("%d",&b);
 11 
 12     for(int a = 1;a <= b;a++)   //当a循环到大于输入值b时停止循环
 13     {
 14         sum *= a;   //等价于 sum = sum * a
 15     }
 16 
 17     printf("你输入的数值%d的阶乘为%d\n",b,sum);
 18 
 19     return 0;
 20 }
​

结果:

5.输出半径为1~10的圆面积,面积大于100时停止

代码:

cs 复制代码
  1 /*
  2   需求:输出半径为1~10的圆面积,面积大于100时停止
  3 */
  4 #include <stdio.h>
  5 
  6 int main()
  7 {
  8     double s = 1.0;
  9     int r = 1;
 10     double PI = 3.1415926;
 11     while(1)        //当前循环为死循环,但是是可控制死循环
 12     {
 13         s = PI * r * r;   //圆的面积=pi×r×r
 14         r++;
 15         if(s > 100)
 16         {
 17             break;   //面积大于100,提前跳出,不再输出
 18         }
 19         printf("当前圆的面积为:%.3f\n",s);  //每次输出圆的面积
 20     }
 21 
 22     printf("输出结束!\n");
 23 
 24     return 0;
 25 }
复制代码
结果:

6.求输入的十个整数中正数的个数及其平均值

代码:

cs 复制代码
  1 /*
  2   需求:求输入的十个整数中正数的个数及其平均值
  3 */
  4 #include <stdio.h>
  5 
  6 int main()
  7 {
  8     int b;
  9     int d = 0;
 10     double sum = 0.0;
 11     double c = 0.0;
 12 
 13     for(int a = 1;a <= 10;a++)
 14     {
 15         printf("请输入一个数:");
 16         scanf("%d",&b);
 17 
 18         if(b >= 0)
 19         {
 20             sum = sum + b;
 21             d++;
 22         }
 23     }
 24 
 25     c = sum / d;
 26     printf("您输入的正数共%d个\n",d);
 27     printf("输入数的均值为:%.2f\n",c);
 28 
 29     return 0;
 30 }
​

结果:

7.打印出100以内能整除7之外的的自然数

代码:

cs 复制代码
  1 /*
  2   需求:打印出100以内能整除7之外的的自然数
  3 */
  4 #include <stdio.h>
  5 
  6 int main()
  7 {
  8     for(int a = 1;a <= 100;a++)
  9     {
 10         if(a % 7 ==0)   //如果能被7整除则输出
 11         {
 12             printf("%d ",a);  //每满足一个打印一次,并且空格
 13         }
 14     }
 15 
 16     printf("\n");  //回车保证美观性
 17 
 18     return 0;
 19 }
 20 
​

结果:

8.打印乘法表

代码:

cs 复制代码
  1 /**
  2   *嵌套循环案例:九九乘法表
  3 */
  4 #include <stdio.h>
  5 
  6 int main()
  7 {
  8     //九九乘法表,总共9行,列数受行数影响,涉及行列首选双重嵌套for循环。
  9     //for循环,外层循环控制行数,内层控制列数
 10 
 11     //外层控制行:9
 12     for(int i = 1;i <= 9;i++)
 13     {
 14         //内层循环控制列:9,列小于等于当前行
 15         for(int j = 1;j <= i;j++)
 16         {
 17             //生成当前行中所有乘法序列
 18             printf("%d×%d=%d ",j,i,i*j);
 19         }
 20 
 21         printf("\n");//每一行结束需要换行    
 22 
 23     }
 24     printf("\n");
 25 
 26     return 0;
 27 }
​

结果:

作业9

'. 我国古代数学家张丘建在《算经》一书中提出的数学问题:鸡翁一值钱五,鸡母一值钱三,鸡雏三 值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?'

代码:

cs 复制代码
  1 /*
  2   需求:我国古代数学家张丘建在《算经》一书中提出的数学问题:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?
  3 */
  4 #include <stdio.h>
  5 
  6 int main()
  7 {
  8     int man;     //公鸡
  9     int woman;   //母鸡
 10     int son;     //雏鸡
 11 
 12     for(man = 0;man < 20;man++) //公鸡最多买20只,所以买100只鸡不可能大于20只公鸡
 13     {
 14         for(woman = 0;woman < 33;woman++)  //最多33只母鸡,买100只鸡不可能大于33只母鸡
 15         {
 16             for(son = 0;son < 100;son++)//买100只鸡不可能大于100只小鸡
 17             {
 18                 if(man*5 + woman*3 + son/3 ==100 && man + woman + son ==100 && son%3 ==0)
 19                 {
 20                     printf("公鸡:%d只,母鸡:%d只,雏鸡:%d只\n",man,woman,son);
 21                 }
 22             }
 23         }
 24     }
 25 
 26     printf("\n");
 27 
 28     return 0;
 29 }

结果:

10.从键盘上输入多个无符号整型数据,直到 0 结束 ,输出所输入数据中的最大值。

代码:

cs 复制代码
  1 /*
  2   需求:从键盘上输入多个无符号整型数据,直到 0 结束 ,输出所输入数据中的最大值。
  3 */
  4 #include <stdio.h>
  5 
  6 int main()
  7 {
  8     int max = 0;
  9     int i = 1;
 10 
 11     while(1)
 12     {
 13         printf("请输入无符号整型数据:");
 14         scanf("%d",&i);
 15 
 16         if(i == 0)
 17         {
 18             break;      //循环为死循环,当i=0时控制循环结束
 19         }
 20         else if(i <= 0)
 21         {
 22             continue;       //如果输入小于0,跳过本次循环
 23         }
 24         else if(i > max)
 25         {
 26             max = i;    //将输入最大值赋给max
 27         }
 28 
 29     }
 30 
 31     printf("您输入数值中最大值为:%d\n",max);
 32 
 33     return 0;
 34 }

结果:

11.判断一个数是不是回文数。

代码:

cs 复制代码
  1 /*
  2   需求:判断一个数是不是回文数
  3 */
  4 #include <stdio.h>
  5 
  6 int main()
  7 {
  8     int a, b;
  9     int num = 0;
 10     printf("请输入一个整数: ");
 11     scanf("%d", &a);
 12 
 13     b = a;
 14 
 15     while (b!= 0)
 16     {
 17         num = num * 10 + b % 10; //实现反转
 18         b /= 10;
 19     }
 20 
 21     if (a == num) {
 22         printf("%d 是回文数\n", a); //如果输出的和输入的数相同
 23     }
 24     else
 25     {
 26         printf("%d 不是回文数\n", a);
 27     }
 28 
 29     return 0;
 30 }

结果:

相关推荐
地平线开发者5 小时前
profiler debug 工具用法与高一致性策略
算法·自动驾驶
编程大师哥5 小时前
匿名函数 lambda + 高阶函数
java·python·算法
isyangli_blog5 小时前
OpenDayLight (Carbon 版本) 启动与组件安装
开发语言·php
vb2008115 小时前
FastAPI APIRouter
开发语言·python
Benszen5 小时前
KVM虚拟化解决方案
开发语言·perl
会编程的土豆5 小时前
Go 语言反射(Reflection)详解
开发语言·后端·golang
東雪木5 小时前
多线程与并发编程 专属复习笔记
java·开发语言·笔记·java面试
我叫袁小陌5 小时前
算法解题思路指南
算法
MC皮蛋侠客5 小时前
C++17 多线程系列(五):C++17 并行算法——从串行到并行的零成本迁移
c++·多线程
地平线开发者5 小时前
Conv+BN+Add+ReLU 融合机制简介
算法·自动驾驶