C语言数据类型和变量(二)

在上一篇文章中我们了解了在C语言中要想解决实际问题需要引入数据类型和变量,那么在实际应用中,还涉及到很多计算等一系列操作,下面开始了解C语言中的一部分操作符(运算符)

一.算术操作符

+,-,*(乘),/(除),%(取模)

这些操作符都是双目操作符(有两个操作数),操作数即为操作符两端的数字。这些操作符的功能即为平时最常用的加减乘除以及取余数(%)。其中+,-,* 的使用方法与数学计算一致,例如:

#include<stdio.h>
int main()
{
 int a=10,b=2;
 printf("%d\n%d\n%d\n",a+b,a-b,a*b);//分别计算a和b的和,差,乘积
 return 0;
}

得到结果如下

但是 / 和 % 在C语言中的使用与数学计算略有不同,下面一起来了解一下

1./

在C语言的规定中,两数相除所得的结果需要看两个数的数据类型

#include<stdio.h>
int main()
{
 int a=7,b=2;
 printf("%d",a/b);//两个整数相除
 return 0;
}

所得结果如下: 

由此可见,虽然7÷2的结果是3.5,但是由于除号两边都是整型数据,因此所得的结果也应是一个整型(只取商,丢掉余数)

#include<stdio.h>
int main()
{
 int a=1,b=2;
 printf("%f",a/b);//这里以浮点型打印结果看看会怎样
 return 0;
}

同样,得到的结果0.000000虽然是浮点数,但是只取了商0并以浮点数的形式打印

那么想要保留小数点后的部分,就要使除号两边的数字至少有一个是浮点数

#include<stdio.h>
int main()
{
 printf("%f",1.0/2);//使其中至少一个数是浮点数就可以转化为浮点数运算
 return 0;
}

结果如下

有一种操作符可以强制转化类型,例如

#include<stdio.h>
int main()
{
 printf("%f",(float)1/2);//强制转化类型:(类型)  即可把括号后的操作数转化为括号内的类型
 return 0;
}

得到的结果仍然相同

2.%

求模运算符的作用便是返回两个数相除所得的余数,该运算符只能作用于整型相除

有关于取模正负号:运算所得结果的正负号由第一个操作数的正负决定

#include<stdio.h>
int main()
{
 printf("%d\n",1%2);
 printf("%d",-1%2);
 return 0;
}

所得结果为1,-1

二.赋值运算符

赋值运算符即为 “=”,作用是将等号右边的值赋给左边的值(和初始化略有不同)

注意:在连续赋值时,要从最右边开始

a=100;
b=0;
c=10;
c=b=a;

最终得到的结果c=100.

复合运算符:对于运算过程中对某一个变量自增,自减时的一种简化运算

a=a+3;
a += 3;

此处两个式子是等价的,类似的复合运算符还有 -=,*=,/=,%=等等

三.单目运算符

++,--,-,+

1.前置++与后置++

前置++:先+1,后使用

后置++:先使用,后+1

a=2;
b=a++;
c=++a;

"b=a++" 可以拆成两部分,即先赋值:b=a,再++:a=a+1,这样最终b的值是2,a的值是3

同理,前置加加也可拆成两部分,先++:a=a+1,再赋值:c=a=a+1,最终a和c都等于3

2.前置--和后置--

与前置++和后置++同理

3.+和-

与正负号相同,+为正号,是否写出无影响,-可以改变数据的正负

四.printf和scanf

在解决实际问题时,往往需要用户输入一些数据,在经过处理之后输出,这里就要用到C语言中输入和输出函数:scanf和printf

1.printf

printf函数的作用是将引号内的内容打印到屏幕上,在打印完成后光标边停在结束的位置

1.1占位符
#include<stdio.h>
int main()
{
 printf("%d",1+5);
 returrn 0;
}

这里的%d就是一个占位符,表示这个位置可以用相应的值进行代入,这里的%d代表十进制整数

类似的占位符还有很多,比如

%s:字符串       %c:字符       %f:小数        %hd:十进制short类型   等待

在一条printf语句中可以有多个占位符,且保持一一对应的关系

#include<stdio.h>
int main()
{
 printf("%d %c %f",10,'a',3.14);//一一对应,占位符的个数要小于等于printf参数的个数
 return 0;
}

这里就会依次打印出参数

1.2输出格式的限定
1.2.1限定宽度
#include<stdio.h>
int main()
{
 printf("%3d",1234);
 printf("%-3d",12);
 return 0;
}

这里的%3d表示输出位数至少为三位,如果不足三位,则会在输出数字前空格补齐,而%-3d则是如果位数不足三位,则会在输出数字后用空格补齐

同样可以使用该方法限定小数的输出位数

#include<stdio.h>
int main()
{
 printf("%9f",0.5);
 return 0;
}

这里%9f表示输出小数位数至少为9位,由于小数点也算以为,而且%f默认输出小数点后六位,所以最后输出结果是“ 0.500000”

1.2.2总是显示正负号

如果想要在输出数据时保留正负号,可进行如下操作

printf("%+d",3);

这样输出的结果是+3,保留了正号

1.2.3限制小数输出位数
printf("%.2f",0.5);

这里的%.2f代表是输出的小数保留两位,因此这里的结果是0.50

同样可以将限制宽度和限制小数位数结合起来

printf("%6.2f",0.5);

这里的输出结果是“  0.50”

还有一种方法,利用“*”可以传递宽度和位数两个参数

printf("%*,*f",6,2,0.5);

与上面的结果相同

1.2.4限制输出字符串的长度

这里的用法与限制小数输出位数格式相同,限制了输出字符串的长度

printf("%.3s","hehe");//利用%.nf来进行限制,表示输出前三个字符

这里输出结果是“heh”

2.scanf

利用scanf函数可以获取用户在键盘上输入的内容,与printf函数相结合就可以实现输入与输出

使用格式如下:

int i;
scanf("%d",&i);
//这里调用scanf函数时,%d表示应该输入一个十进制整数,而&i表示输入的数据存放在变量i中

同样可以在scanf函数里使用多个占位符,读取多个变量

int a,b,c;
scanf("%d%d%d",&a,&b,&c);

注意:在输入数据时要与要求输入的格式保持一致

scanf函数的返回值即为成功读取参数的个数,如果读取失败则返回0,读取错误则返回EOF(-1)

赋值忽略符:在读取参数时,可能会因为格式不对导致识别失败,因此就可以用赋值忽略符来忽略掉一些字符,从而识别关键字符

scanf("%d%*c%d%*c%d",a,b,c);

这样就可以忽略掉中间不关键的字符从而正常识别数据了

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值