• 头歌平台——C语言之数学运算强化练习题


    第1关:逐一挑出来

    任务描述

    本关需要完成一个输出某个三位数各个位上的数字的小程序

    相关知识
    算数运算符

    %取模运算符,获得整除后的余数。

    /是通过分子除以分母,获得整除后的整数部分。

    floor

    floor()是返回一个浮点型的整数部分,即向下取整。

    语法:

    floor(double x)

    说明:x是需要传入的浮点型数。

    举例如下:

     
    
    1. float val = 1.2
    2. floor(val) = 1
    编程要求

    请仔细阅读右侧代码,根据方法内的提示,在Begin - End区域内进行代码补充,具体任务如下:

    输入一个三位数的整数,分别输出其个位、十位、百位上的数字。

    注意:

    • 输出的各数字间有一个空格。

    举例说明:

    测试输入:345。 预期输出:5 4 3

    提示:方法不唯一,可以尽量尝试多种方式实现。

    测试说明

    平台会对您的代码进行运行测试,如果实际输出与预期输出相同,则算通关。

    1. # include<stdio.h>
    2. # include<math.h>
    3. int main()
    4. {
    5. /*********begin*********/
    6. int n;
    7. scanf("%d",&n);
    8. while(n!=0)
    9. {
    10. printf("%d ",n%10);
    11. n=n/10;
    12. }
    13. printf("\n");
    14. return 0;
    15. /*********end*********/
    16. }

    第2关:我不喜欢4

    任务描述

    本关需要统计出1000099999的整数之中,不包含数值4的整数个数的小程序。

    相关知识

    我不想再啰嗦各种知识点了,而我相信大家经过反复的练习,已经将该记住的都记住了,那么我们直接看代码回顾吧!

    代码片段1

     
    
    1. // 当分数score小于60时,输出"考试不合格!"
    2. int score = 58;
    3. if (score < 60){
    4. System.out.println("考试不合格!");
    5. }

    代码片段2

    输出结果:

     
    
    1. 不及格
    2. 这个月零花钱没啦!
    3. 这个月零花钱没啦

    代码片段3

     
    
    1. // 当分数score大于等于60时输出"考试合格!",否则输出"考试不合格!"
    2. int score = 80;
    3. if (score >= 60)
    4. System.out.println("考试合格!");
    5. else {
    6. System.out.println("考试不合格!");
    7. }

    代码片段4

     
    
    1. #include
    2. int main ()
    3. {
    4. /* 局部变量定义 */
    5. int a = 10;
    6. /* while 循环执行 */
    7. while( a < 20 )
    8. {
    9. printf("a 的值: %d
    10. ", a);
    11. a++;
    12. }
    13. return 0;
    14. }

    输出结果::

     
    
    1. a 的值: 10
    2. a 的值: 11
    3. a 的值: 12
    4. a 的值: 13
    5. a 的值: 14
    6. a 的值: 15
    7. a 的值: 16
    8. a 的值: 17
    9. a 的值: 18
    10. a 的值: 19

    代码片段5

     
    
    1. for(var a=10; a<20 ;i++){
    2. printf("a 的值: %d
    3. ", a);
    4. }

    输出结果:

     
    
    1. a 的值: 10
    2. a 的值: 11
    3. a 的值: 12
    4. a 的值: 13
    5. a 的值: 14
    6. a 的值: 15
    7. a 的值: 16
    8. a 的值: 17
    9. a 的值: 18
    10. a 的值: 19
    编程要求

    请仔细阅读右侧代码,根据方法内的提示,在Begin - End区域内进行代码补充,具体任务如下:

    统计1000099999中,不包含4的数值的个数。

    测试说明:

    预期输入: 预期输出:10000~99999中不包含4的个数为:52488

    测试说明

    平台会对您的代码进行运行测试,如果实际输出与预期输出相同,则算通关。


     

     

    1. #include<stdio.h>
    2. int main()
    3. {
    4. /*********begin*********/
    5. int a,j,i;
    6. int s=0;
    7. for(i=10000;i<=99999;i++)
    8. {
    9. a=i;
    10. j=0;
    11. while(a)
    12. {
    13. j=a%10;
    14. if(j==4)
    15. break;
    16. a/=10;
    17. }
    18. if(j!=4)
    19. s++;
    20. }
    21. printf("10000~99999中不包含4的个数为:%d",s);
    22. /*********end*********/
    23. }

     

    第3关:一元二次方程,其实很简单

    任务描述

    本关需要完成求解指定一元二次方程式的根的小程序。效果如下:

    测试集输入:-2.5 3.8 1.2。 测试集输出:x1=-0.27 x2=1.79

    相关知识
    if-else语句

    if...elseif语句的操作多了一步,当条件成立时,则执行 if 部分的代码块; 条件不成立时,则进入 else 部分。

    例如,如果今天不下雨,就出门逛街,否则就宅在家玩游戏。

    用法如下:

     
    
    1. if (<条件>) {
    2. <条件成立执行的代码>
    3. }else {
    4. <条件不成立执行的代码>
    5. }

    执行过程如下:

    例如:

     
    
    1. // 当分数score大于等于60时输出"考试合格!",否则输出"考试不合格!"
    2. int score = 80;
    3. if (score >= 60)
    4. System.out.println("考试合格!");
    5. else {
    6. System.out.println("考试不合格!");
    7. }
    编程要求

    请仔细阅读右侧代码,根据方法内的提示,在Begin - End区域内进行代码补充,具体任务如下:

    求ax2+bx+c=0方程的根。

    由键盘输入任意值abc,需要在程序中进行判断:

    如果a=0,输出错误提示系数a不能为零; 如果b2−4ac<0,输出方程无实根的信息; 如果b2−4ac>=0,计算并输出方程的两个实根。

    测试说明:

    测试输入:2 3 4。 预期输出:方程无实根

    测试说明

    平台会对您的代码进行运行测试,如果实际输出与预期输出相同,则算通关。

     

    1. #include <stdio.h>
    2. #include<math.h>
    3. int main()
    4. {
    5. /*********begin*********/
    6. float a,b,c,x1,x2,s;
    7. scanf("%f%f%f",&a,&b,&c);
    8. s=b*b-4*a*c;
    9. x1=(-b+sqrt(s))/(2*a);
    10. x2=(-b-sqrt(s))/(2*a);
    11. if(a==0)
    12. printf("系数a不能为零\n");
    13. else
    14. {
    15. if(s<0)
    16. printf("方程无实根\n");
    17. if(s>=0)
    18. printf("x1=%.2f x2=%.2f",x1,x2);
    19. }
    20. return 0;
    21. /*********end*********/
    22. }

     

     

    第4关:复数不再是难题 

    任务描述

    本关需要完成复数运算的小程序。效果如下:

    测试集输入:2.5 3.6 1.5 4.9//依次为a,b,c,d

    测试集输出:1.00+-1.30i //无论ab是否小于等于0都按该a+bi的输出。

    相关知识
    运算公式
     
    
    1. (a+i*b)+(c+i*d) = (a+c)+i*(b+d)
    2. (a+i*b)-(c+i*d) = (a-c)+i*(b-d)
    3. (a+i*b)*(c+i*d) = (ac-bd)+i*(bc+ad)
    编程要求

    请仔细阅读右侧代码,根据方法内的提示,在Begin - End区域内进行代码补充,具体任务如下:

    设有两个复数a+i*bc+i*d,要求:

    • 定义一个结构体类型来描述复数;

    • 复数之间的加法、减法、乘法和除法分别用不用的函数来实现;

    • 必须使用结构体指针的方法把函数的计算结果返回。

    输入格式:

    输入只有一行,其格式为:运算符号(+,-,*)abcd

    输出格式:

    输出:a+bi,输出时不管ab是小于0或等于0都按该格式输出,输出时a,b都保留两位。

    注:

    • 使用scanfprintf输入输出,要输出保留两位小数点,使用%.2lf

    测试举例:

    测试输入:* 2.5 3.6 1.5 4.9。 预期输出:-13.89+17.65i

    测试说明

    平台会对您的代码进行运行测试,如果实际输出与预期输出相同,则算通关。

    1. #include<stdio.h>
    2. #include<malloc.h>
    3. #include<stdlib.h>
    4. typedef struct {
    5. double real;
    6. double i;
    7. }complex;
    8. complex* add(complex a, complex b){
    9. /*********begin*********/
    10. complex *c;
    11. c=(complex*)malloc(sizeof(complex));
    12. c->real=a.real+b.real;
    13. c->i=a.i+b.i;
    14. return c;
    15. /*********end*********/
    16. }
    17. complex* minus(complex a, complex b){
    18. /*********begin*********/
    19. complex *c;
    20. c=(complex*)malloc(sizeof(complex));
    21. c->real=a.real-b.real;
    22. c->i=a.i-b.i;
    23. return c;
    24. /*********end*********/
    25. }
    26. complex* multiply(complex a, complex b){
    27. /*********begin**********/
    28. complex *c;
    29. c=(complex*)malloc(sizeof(complex));
    30. c->real=(a.real*b.real)-(a.i*b.i);
    31. c->i=a.real*b.i+a.i*b.real;
    32. return c;
    33. /*********end*********/
    34. }
    35. int main()
    36. {
    37. /*********begin**********/
    38. char c;
    39. complex a,b;
    40. complex d;
    41. scanf("%c%lf%lf%lf%lf",&c,&a.real,&a.i,&b.real,&b.i);
    42. switch(c){
    43. case '+':
    44. d=*add(a,b);
    45. break;
    46. case '-':
    47. d=*minus(a,b);
    48. break;
    49. case '*':
    50. d=*multiply(a,b);
    51. break;
    52. }
    53. if(d.i<0)
    54. printf("%.2lf+(%.2lf)i",d.real,d.i);
    55. else
    56. printf("%.2lf+%.2lfi",d.real,d.i);
    57. return 0;
    58. /*********end**********/
    59. }

     

  • 相关阅读:
    pjsip-2.9点对点时解决注册慢问题
    OWASP-TOP10漏洞-注入漏洞
    信号量机制实现进程互斥,进程同步,进程的前驱关系
    小米三季报:手机不振,汽车加码
    【ROS2原理4】interface 接口
    想考【软考高级】,但不具备计算机基础?“系规”适合你
    【Spring框架学习2】DI 依赖注入
    【QT基础入门】QT中的容器类:QList
    QCN6274 vs QCA9880: Comparison of SOC and wireless communication chips
    智能名片是如何帮助企业实现从“0”到“1”的流量闭环的?
  • 原文地址:https://blog.csdn.net/qq_65628600/article/details/133923945