C语言数据运算

第1关:输入三个整数,求它们的和及平均值。

任务描述

本关任务:设计一个程序,输入三个整数,求它们的和及平均值。

相关知识

为了完成本关任务,你需要掌握:算术运算、域宽控制。

算术运算

C语言的算术运算符有以下几种: ① +——加法运算符,如3+5。 ② -——减法运算符或负值运算符,如5-2,-3。 ③ ——乘法运算符,如35。 ④ /——除法运算符,如5/3,5.0/3。 ⑤ %——模运算符或求余运算符,如7%4的值为3。 ⑥ ++——自增1。 ⑦ --——自减1。 除了负值运算符是单目运算符外,其它都是双目运算符。

两个数相除,如果这两个数都是整数,所得的结果是商的整数部分;如果有一个是实数,结果的类型为实数型。

域宽控制

对于 printf 函数,域宽是通过在格式化字符串中使用 %Nd 的形式指定的,其中 N 是域宽的数值,而 d 表示输出的数据类型(d 表示整数,f 表示浮点数,s 表示字符串等等)。例如,%5d 表示输出一个 5 位的整数,如果输出的整数不足 5 位,则在前面补足空格。同样的,%05d 表示输出一个 5 位的整数,如果输出的整数不足 5 位,则在前面补足 0。 对于 scanf 函数,用十进制整数指定输入的宽度(即字符数)。 例如:scanf("%5d",&a); 输入12345678只把12345赋予变量a,其余部分被截去。 又如:scanf("%4d%4d",&a,&b); 输入12345678将把1234赋予a,而把5678赋予b。

编程要求

根据提示,在右侧编辑器 Begin-End 内补充代码,计算并输出三个数的和用平均值,平均值保留 2 位小数。

测试说明

平台会对你编写的代码进行测试:

测试输入:1 2 3 预期输出: sum=6 avg=2.00


开始你的任务吧,祝你成功!

参考代码:

#include<stdio.h>
int main()
{
	int a,b,c,sum;
//=======begin=======
    float avg;
    scanf("%d%d%d",&a,&b,&c);
    sum=a+b+c;
    avg=sum/3.0;
    printf("sum=%d\navg=%.2f",sum,avg);
    
//========end========
    return 0;
}

第2关:求一元二次方程的根,假定存在实根。

任务描述

本关任务:编写求一元二次方程的根的小程序。

相关知识

为了完成本关任务,你需要掌握:

  1. 表达式的书写;
  2. 数学函数的使用。
表达式的书写

表达式是使用运算符连接起来的式子,C 语言中的表达式有以下几种:

  1. 算数运算符+ - * / %
  2. 赋值运算符+= -= *= /= %=
  3. 自增、自减 ++ -- 
    a++ 为先使用 a,然后在进行 a=a+1 的运算,而 ++a 为先 a=a+1,然后再使用 a,这个时候 a 的值已经不是原来的a了,而是a+1。
    int a=1;(a++)*(a++)*(a++)*(a++) 的结果是 24,在进行完上式之后 a 的值是 5
  4. 关系运算符(比较运算符) < > >= <= == !=  关系运算结果为真(1)或假(0),即成立或不成立,对或者错,开或关
    计算机返回表达式成立与否很标准:1(真);0(假)
  5. 逻辑运算符 && || !  表达式1 逻辑运算符 表达式2 &&表达式1 和 表达式2 同时成立,即同时为 1 时返回值为 1,否则返回 0,也就是假。
    || :表达式1 和表达式2中有一个成立,则返回值为真,返回 1,否则返回 0,即假。
     : !表达式1 如果表达式成立则返回假也就是 0,如果不成立则返回真即 1。  的优先级比较高,仅此于 ()
  6. 位运算符  & | >> << a<<n 相当于给一个变量乘 2 的 n 次方,a>>m 相当于 a 除以 2 的 n 次方。
  7. 三目运算符 表达式1?表达式2:表达式3 c=a>b? a:b 意思是如果 a>b,那么 c=a,否则 c=b。相当于cifc判断。
  8. sizeof(表达式)用来获取表达式结果的类型在内存中存储所占用的字节数,sizeof() 的结果是 unsigned long ,在使用 printf 打印时占位符是 %lu
数学函数的使用

要在 C 语言中使用数学函数,首先需要添加头文件 math.h。 一、基本的数学运算 C 语言中提供了四个基本的数学运算函数,分别是加法函数、减法函数、乘法函数和除法函数。这些函数的使用方法如下:

  1. 加法函数使用“+”符号进行加法运算
  2. 减法函数使用“-”符号进行减法运算
  3. 乘法函数使用“”符号进行乘法运算
  4. 除法函数使用“/”符号进行除法运算

二、其他常见的数学运算 C 语言中提供了:

  1. 幂运算函数 pow,用于计算一个数的幂。其使用方法如下 double pow(double x, double y); 其中,x 表示底数,y 表示指数。函数的返回值为 xy 次幂。

  2. sqrt() 的用法: 计算一个非负实数的平方根

  3. 取整函数 ceil double ceil(double x); 该函数用于向上取整,即将一个浮点数向上舍入为接近的整数

编程要求

根据提示,在右侧编辑器 Begin-End 部分补充代码,输出要求值。

测试说明

平台会对你编写的代码进行测试: 输入三个系数 测试输入:1 -3 2 预期输出: x1=2.00 x2=1.00


开始你的任务吧,祝你成功!

参考代码:

#include<stdio.h>
//=======begin=======
#include<math.h>
int main()
{
	float a,b,c,d,x1,x2;
	scanf("%f%f%f",&a,&b,&c);
    d=b*b-4*a*c;
    if (d>0){
        x1=(-b+sqrt(d))/(2*a);
        x2=(-b-sqrt(d))/(2*a);
    }
    
	printf("x1=%.2f\n",x1);
	printf("x2=%.2f\n",x2);
    //========end========
	return 0;
}

第3关:阅读并运行程序,掌握表达式的用法。

任务描述

本关任务:阅读并运行程序。


开始你的任务吧,祝你成功!

  • 1、阅读并运行程序,掌握算术表达式的用法。

    ,

    运行结果是:▁▁▁▁▁

    填空1答案:72.500000

  • 2、程序

    ,

    运行结果是 log(a)=▁▁▁▁▁ log10(100)=▁▁▁▁▁ exp(1)=▁▁▁▁▁ sin(PI/2)=▁▁▁▁▁

    填空1答案:0.999999

    填空2答案:2.000000

    填空3答案:2.718282

    填空4答案:1.000000

  • 3、完善并运行程序,理解赋值运算。理解程序执行的功能:不借助于中间变量实现交换两个变量的值。 int main() { int a=5, b=3; printf("a=%d, b=%d\n", a, b); a+=b; ▁▁▁▁▁; ▁▁▁▁▁; printf("a=%d, b=%d\n", a, b); return 0; }

    填空1答案:b=a-b

    填空2答案:a=a-b

  • 4、运行程序 #include <stdio.h> #include <math.h> int main(void) {
    printf("%f\n",pow(1.01,365)); printf("%f\n",pow(0.99,365)); return 0; } 输出结果是 ▁▁▁▁▁ ▁▁▁▁▁ 从结果中想到什么?请在评论区发言。

    填空1答案:37.783434

    填空2答案:0.025518

第4关:阅读并运行程序,理解输出、输入函数相关特点。

任务描述

本关任务:阅读并运行程序,理解输出、输入函数相关特点。


开始你的任务吧,祝你成功!

  • 1、

    阅读并运行程序,理解printf()函数输出列表中各输出项的运算顺序是从右到左,进一步理解自增、自减运算,注意VC编译系统的特点。

    ,

    运行结果是: ▁▁▁▁▁ ▁▁▁▁▁ ▁▁▁▁▁

    填空1答案:2,2

    填空2答案:3,0

    填空3答案:1,3

  • 2、

    按要求运行程序,理解使用scanf()时,正确输入与错误输入时,返回值代表的含义。

    ,

    输入12(回车),结果是:▁▁▁▁▁ 再运行一次,输入d(回车),结果是:▁▁▁▁▁

    填空1答案:1

    填空2答案:0

第5关:阅读并运行程序,理解运算符优先级的结合性及运算顺序。

任务描述

本关任务:阅读并运行下述两个程序,理解运算符优先级的结合性及运算顺序。

相关知识

为了完成本关任务,你需要掌握:

  1. 优先级;
  2. 结合性;
  3. 自增、自减运算符。
优先级

在表达式中,优先级较高的先于优先级较低的进行运算。44 个运算符优先级如下,从上到下优先级降低。 ① 初等 4 个:( )[ ]->(指向结构体成员)、.(后跟结构体成员)。 ② 单目 9 个:!~++---(表示负号)、(类型)*(表示指针)、&(表示取地址)、sizeof(表示长度)。上面的“(类型)”表示强制类型转换。 ③ 算术 5 个:*/%+-(表示减号)。 ④ 位移 2 个:<<>>。 ⑤ 关系 6 个:<<=>>===(表示等于)、!=(表示不等于)。 ⑥ 位逻 3 个:&(表示按位与)、^ (表示按位异或) 、| (表示按位或)。 ⑦ 逻辑 2 个:&&(表示逻辑与)、||(表示逻辑或)。 ⑧ 条件 1 个:? :。 ⑨ 赋值 11 个:=+=-=*=/=%=>>=<<=&=、^=|=。 ⑩ 逗号 1 个:,

在编写包含多个运算符的表达式时,应当注意各个运算符的优先级,确保表达式中的运算符能以正确的顺序参与运算。对于复杂表达式,为了清晰起见,可以加圆括号“()”强制规定计算顺序。

结合性

在一个运算量两侧的运算符优先级相同时,则按运算符的结合性所规定的结合方向处理:对于左结合性(结合方向自左向右),运算对象先与左面的运算符结合;对于右结合性(结合方向自右向左),运算对象先与右面的运算符结合。 结合方向自右向左的只有三类:赋值、单目和三目,其他都是自左向右。

自增、自减运算符

作用是使变量的值增 1 或减 1,如:++i(--i)的作用是,在使用 i 之前,先使i的值加 1(减1)i++(i--) 的作用是,在使用 i 之后,使 i 的值加 1(减1)。 粗略地看,++ii++ 的作用相当于 i=i+1。但 ++ii++ 不同之处在于 ++i 是先执行 i=i+1 后,再使用 i 的值;而 i++ 是先使用 i 的值后,再执行 i=i+1。如果i的原值等于 3,则执行下面的赋值语句: j1=++i; j2=i++; 对于前者,i 的值先变成 4,再赋给 j1j1 的值为 4;对于后者,先将 i 的值 3 赋给 j2j2 的值为 3,然后 i 变为 4


开始你的任务吧,祝你成功!

1、

阅读并运行下述两个程序,理解运算符优先级的结合性及运算顺序。

,

运行结果是: b=▁▁▁▁▁ c=▁▁▁▁▁ d=▁▁▁▁▁

,

运行结果是: ▁▁▁▁▁ ▁▁▁▁▁ ▁▁▁▁▁ ▁▁▁▁▁

填空1答案:2

填空2答案:10

填空3答案:0

填空4答案:21

填空5答案:20

填空6答案:24

填空7答案:-1

  • 20
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值