#学习笔记 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

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

输出的结果是:5,7

2.3 数据类型的转换
#学习笔记 C语言:运算符与数据转换_第1张图片

  • 如果 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
int main()
{
char c1,c2;
printf(“Please enter a capital letter:”);
scanf("%c",&c1);
c2 = c1 + 32;
printf("\n%c",c2);
return 0;
}

  • 格式字符串

#学习笔记 C语言:运算符与数据转换_第2张图片
例子:
#include
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
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;
}
#学习笔记 C语言:运算符与数据转换_第3张图片
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
#include //程序中要调用求平方根函数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
void main()
{
char a,b,c;
a = ‘O’;b = ‘K’;c = ‘\n’;
putchar(a);
putchar(b);
putchar©;
}
结果为:OK

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

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

漂亮标准的答案:
#include

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

#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;

}

你可能感兴趣的:(学习笔记)