跟郝斌老师复习C语言part2--输入输出用法和运算符

本文详细介绍了C语言的基本输入输出函数printf和scanf的使用方法,包括各种格式控制符的应用,以及如何编写高质量的代码。同时,文章还深入讲解了C语言中的算术、关系、逻辑和赋值运算符,以及三目运算符和逗号表达式的用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

31

一、基本的输入和输出函数的用法

1、printf()

printf()–将变量的内容输出到显示器上
四种用法
1.printf(“字符串\n”);
2.printf(“控制输出符”,使出参数);
3.pringtf(“输出控制符1,输出控制符2…”,输出参数1,输出参数2,…);
输出控制符和输出参数个数必须一一对应
4.printf(“输出控制符 非输出控制符”,输出参数);

  • 输出控制符:
输出控制符表示类型
%dint
%ldlong int
%cchar
%ffloat
%lfdouble
%x(或%X,%0X)int 或long int 或short int的十六进制
%oint 或long int 或short int的八进制
%s字符串

为什么需要输出控制符
1.二进制组成的代码可以表示数据也可以表示指令
2.如果二进制组成的代码表示的是数据的话,那么同样的二进制代码组合以不同的输出格式输出就会有不同的输出结果

  • 非输出控制符:原样输出
	int i=0x10;
	int j=11; 
	int m=011;
	printf("helloword\n");
	printf("%d\t%d\t%d",i,j,m);//16  11  9//i本身是二进制存放的,需要通过%d转换成十进制 

在这里插入图片描述

	int i=47;
	printf("%x\n",i);//2f
	printf("%X\n",i);//2F
	printf("%#X\n",i);//0X2F  推荐使用
 	printf("%#x\n",i);//0x2f

在这里插入图片描述

2、scanf ()

scanf () --通过键盘将数据输入到变量中
用法一:scanf(“输入控制符”,输入参数);
功能:将从键盘输入的字符转化为输入控制符所规定的数据,然后存入以输入参数的值为地址的变量中。

	int i;
	scanf("%d",&i);//输入123,将123(字符1,字符2,字符3)转换为整型123后存入地址是&i的i变量中,&是取地址符
	printf("i=%d",i);//123

用法二: scanf(“非输入控制符 输入控制符”,输入参数);
功能:将从键盘输入的字符转化为输入控制符所规定的数据,然后存入以输入参数的值为地址的变量中。
非输入控制符必须原样输入

如何使用scanf编写出高质量代码
1.使用scanf之前最好先使用printf提示用户以什么样的方式来输入

	int i,j;
	scanf("%d",&i);//输入123m ,若输入m123则i,j输出垃圾数,dev中输出i=0,j=1
	printf("i=%d\n",i);//123 
	scanf("%d",&j);//读取123m中未被读取的m,是垃圾数
	printf("j=%d\n",j);//直接输出1 (dev中的垃圾值)

2.scanf中尽量不要使用非输入控制符,尤其是\n,\t。

int i,j;
	scanf("%d",&i);//输入123m 
	printf("i=%d\n",i);//123 
	scanf("%d",&j);//读取123m中未被读取的m,是垃圾数
	printf("j=%d\n",j);//直接输出1 (dev中的垃圾值)

3.应该编写代码对用户的非法输入做适当的处理

	int i,j;
	char ch;
	scanf("%d",&i); //12mm
	printf("i=%d\n",i);//i=12
	while((ch=getchar())!='\n') 
	continue;
	scanf("%d",&j);//2
	printf("j=%d\n",j);//j=2
	return 0;
	char i;
	scanf("%c",&i);
	printf("%d",i);//65

二、运算符

1.算术运算符:

符号含义
+
-
*
/
%取余

除法的运算结果和运算对象的数据类型有关,两个数都是int,则商就是int,若商有小数,则截去小数部分;被除数和除数中只要有一个或两个都是浮点型数据,则商也是浮点型,不截去小数部分
例:16/5 ==3,16/5.0 ==3.20000 , 3/5 ==0 ,-13/ -3 ==4

取余的运算对象必须是整数,结果是整除后的余数,其余数的符号与被除数相同
例:13%-3 ==1 ,-13%-23 ==-13,3%5 ==0

强制类型转化
格式:(数据类型)(表达式)
功能:把表达式的值强制转化为前面所执行的数据类型
例子:(int)(4.5+2.2)最终值为6
(float)(5)最终值为5.000000
注意:int i=5; sum=sum+(float)(1/i);是不对的,因为此时1/i为0

2.关系运算符

符号含义
>大于
>=大于等于
<小于
<=小于等于
!=不等于
==等于

3.逻辑运算符

!—非
&&–与
||-----或

只有真&&真 == 真
只有假||假 == 假

C语言对真假的处理:非零为真,零为假
&&左边的表达式为假,右边的表达式不执行
||左边表达式为真时,右边表达式不执行

	int i=10;
	int k=20;
	int m;
	m=(3>2)&&(k=8);
	printf("m=%d,k=%d\n",m,k);//m=1,k=8
	m=(3>2)&&(k=0);
	printf("m=%d,k=%d\n",m,k);//m=0,k=0
	m=(1>2)&&(k=8);
	printf("m=%d,k=%d\n",m,k);//m=0,k=0
	m=(1<2)||(k=8);
	printf("m=%d,k=%d\n",m,k);//m=1,k=0
	m=(1>2)||(k=8);
	printf("m=%d,k=%d\n",m,k);//m=1,k=8

4.赋值运算符

=
+=
*=
/=
-=

5.优先级别

算术>关系>逻辑>赋值

6.附录的一些琐碎的运算符知识

  • 自增(或自减):
前自增 ++i后自增 i++
相同点最终都使 i 的值加一
不同点整体表达式的值是 i 加上1之后的值整体表达式的值是 i 加上1之前的值
int i;
	int j;
	int k;
	int m;
	i=j=3;
	k=i++;
	m=++j;
	printf("i=%d,j=%d,k=%d,m=%d",i,j,k,m);//i=4,j=4,k=3,m=4

为什么会出现自增:1.代码更精炼;2.自增的速度更快
学习自增要明白的几个问题:1.编程时应该尽量屏蔽掉前自增和后自增的差别;2.自增表达式最好不要作为一个更大的表达式的一部分来使用(i++ 和 ++i 单独成一个语句,不要把它作为一个完整复合语句的一部分来使用 )例:int m=i++ + ++i +i +i++;这样写不但是不规范的而且是不可移植的(顺序点只有逗号,分号和表达式)

  • 三目运算符
    A ? B : C
    等价于:
    if(A)
    B;
    else
    C;

  • 逗号表达式
    A , B , C , D
    功能:从左到右执行,最终表达式的值是最后一项的值

	i=(3,4,5,2,7,8);
	printf("%d",i);//8
	i=(j++,++j,j+2,j-3);//j=3,j=4,j=4(j+2不影响j的值),j-3=1
	printf("%d",i);//1
	i=(j++,++j,j+=2,j-3);//j=3,j=4,j=6,j-3=3
	printf("%d",i);//3
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值