#学习笔记 C语言:运算符与数据转换

https://www.shiyanlou.com/courses/running 在实验楼学习

http://c.biancheng.net/cpp/html/33.html 在这里找资料

2.1

  • x/y 中,两个实数(亲!注意说的是实数)相除的结果是双精度实数;
    两个整数相除的结果为整数。如 5/3 的结果为 1,舍去小数部分。
  • % 运算符要求参加运算的对象为整数,结果也是整数。如 7%3,结果为 1,除了%以外的运算符的操作数都可以是任何算数类型。

2.2

  • i++和++i的区别:i++是先使用i的值,再执行i++;++i是先执行i++,再使用i的值。

include<stdio.h>

int main()
{
int a = 5;
printf("%d\n",a++);
printf("%d\n",++a);
return 0;
}

输出的结果是:5,7

2.3 数据类型的转换
在这里插入图片描述

  • 如果 int 类型的数据和 float 或 double 型数据进行运算时,先把 int 型和 float 型数据转换为 double 型数据,然后进行运算,结果为 double 型。
  • 字符 (char) 型数据和整形数据进行运算,就是把字符的 ASCII 代码与整形运算。如 4+‘B’,由于字符 ‘B’ 的 ASCII 代码是 66,相当于 66+4=70。字符型数据可以直接和整形数据进行运算。如果字符型数据和浮点型数据运算,则将字符的 ASCII 码先转化为 double 型,然后在进行运算。

思考题:
要求给定一个大写字母要求用小写字母输出

提示:
字符数据以 ASCII 码存储在内存中,形式与整数的存储形式相同,所以字符型数据和其他算数型数据之间可以相互赋值和运算。 通过 ASCII 码表我们可以找到同一个字母的大写形式和小写形式之间有什么内在的联系。那就是同一个字母,用小写表示的字符的 ASCII 码比用大写表示的 ASCII 码大 32。

答案:
#include<stdio.h>
int main()
{
char c1,c2;
printf(“Please enter a capital letter:”);
scanf("%c",&c1);
c2 = c1 + 32;
printf("\n%c",c2);
return 0;
}

  • 格式字符串

在这里插入图片描述
例子:
#include <stdio.h>
int main(void){
int a=88,b=89;
3. printf("%d %d\n",a,b);
4. printf("%d,%d\n",a,b);
5. printf("%c,%c\n",a,b);
6. printf(“a=%d,b=%d”,a,b);
return 0;
}
本例中四次输出了a、b的值,但由于格式控制串不同,输出的结果也不相同。第3行的输出语句格式控制串中,两格式串%d 之间加了一个空格(非格式字符),所以输出的a、b值之间有一个空格。第4行的printf语句格式控制串中加入的是非格式字符逗号,因此输出的a、b值之间加了一个逗号。第5行的格式串要求按字符型输出a、b值。第6行中为了提示输出结果又增加了非格式字符串。

例子:
#include <stdio.h>
int main(void){
int a=15;
long float b=123.1234567;
// 原来b的定义为 float b=123.1234567;
// 经读者@邓小良反馈,笔者发现会溢出,在前面加了long
double c=12345678.1234567;
char d=‘p’;
printf(“a=%d\n”, a);
printf(“a(%%d)=%d, a(%%5d)=%5d, a(%%o)=%o, a(%%x)=%x\n\n”,a,a,a,a); // %% 可以输出 %
printf(“a=%f\n”, b);
printf(“b(%%f)=%f, b(%%lf)=%lf, b(%%5.4lf)=%5.4lf, b(%%e)=%e\n\n”,b,b,b,b);
printf(“c=%f\n”, c);
printf(“c(%%lf)=%lf, c(%%f)=%f, c(%%8.4lf)=%8.4lf\n\n”,c,c,c);
printf(“d=%c\n”, d);
printf(“d(%%c)=%c, d(%%8c)=%8c\n”,d,d);
return 0;
}
在这里插入图片描述
2.4

强制类型转换:

  • (double)a // (将a转换成为double型)
  • (int)(x + y) //(将x+y的值转换成为int类型)
    上述例子中如果写成 (int)x + y,则只将 x 转换成为整型在与 y 相加。

2.5 数据的输入和输出

  • 例子:
    求 ax^2+bx+c=0 方程的根。a,b,c 由键盘输入,设 b^2-4ac>0。

在这里插入图片描述
#include<stdio.h>
#include<math.h> //程序中要调用求平方根函数sqrt

int main()
{
double a,b,c,disc,x1,x2,p,q;
scanf("%lf%lf%lf",&a,&b,&c);
disc = b * b - 4 * a * c;
p = -b / (2.0 * a);
q = sqrt(disc) / (2.0 * a);
x1 = p + q,x2 = p - q;
printf(“x1=%7.2f\nx2=%7.2f\n”,x1,x2); //格式符 “f” 的前面加了 “7.2”。表示的意思是在输出 x1,x2 时,指定数据占 7 列,其中小数占 2 列。
return 0;
}
编译的语句:gcc -o 5-5 5-5.c -lm
注意:要加-lm

  • 字符的输入输出

使用putchar()来输出字符
例子:
#include <stdio.h>
void main()
{
char a,b,c;
a = ‘O’;b = ‘K’;c = ‘\n’;
putchar(a);
putchar(b);
putchar©;
}
结果为:OK

使用getchar()来输入字符
例子:
#include <stdio.h>
int main()
{
char c;
printf(“Input an uppercase letter:\n”);
c = getchar();
putchar(c + 32);
return 0;
}

课后作业:
将ShiYanLou全部以下一个字母输出

漂亮标准的答案:
#include <stdio.h>

int main()

{

 //初始化字符
 
 char str[9] ={'S','h','i','Y','a','n','L','o','u'};

 //字符加1
 for(int i=0;i<9;i++)
     str[i] += 1;

 //printf打印
 for(int i=0;i<9;i++)
     printf("%c",str[i]);

 printf("\n");

 //putchar打印
 for(int i=0;i<9;i++)
     putchar(str[i]);
 return 0;

}

计算圆柱的底面周长、底面积、体积
漂亮标准的答案:
#include <stdio.h>

#define PI 3.14159

int main()
{

//初始化数据
float r = 2.5;
int h = 3;
float area,cir,vol;
//计算
cir = PI * r * 2;
area = PI * r * r;
vol = area * h;

printf("cir=%.2f,area=%.2f,vol=%.2f",cir,area,vol);
return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值