【C语言】第二课时:printf()和scanf(),基本运算符号
一个程序想要具有实用性必然离不开输入和输出两个功能
而printf()与scanf()是在C语言中实现这两个功能的函数
输出函数printf()
格式:printf(“输出语句,用%+类型插入变量”,需要插入的变量)
例:
#include "stdafx.h"
#include<stdio.h>
int main(void)
{
int a=3
printf("int整型数据a的数值为%d",a);
return 0
}
输出为“int整型数据a的数值为3"
输入函数scanf()
格式:scanf_s(“数据类型与数量”,输入对象)
例:scanf("%d%d",&a,&b);
scanf()类型输入仅用于输入数据。一定要注意符号,以及数据数量与变量数量的对应
scanf()的规则一定要理解透
数据类型
%d,整型
%f,浮点
%e,科学记数法
%g,%g用来输出实数,它根据数值的大小,自动选f格式或e格式(选择输出时占宽度较小的一种),且不输出无意义的0。
即%g是根据结果自动选择科学记数法还是一般的小数记数法
%i,用于输出时与%d相同,但是用于输入时可以支持多种进制。建议使用%d
printf()函数中的精度的表示方法
%xd 显示该变量时占用x个数位,不足的区域由空格代替
%x.vf 显示该变量时占用x个数位,保留v位小数,其余位置由空格代替
%-x.vf "-"号表示该变量靠左对齐
*注意:保留小数时遵从四舍五入
这里是一段展示各种数据类型的代码
#include "stdafx.h"
#include<stdio.h>
int main(void)
{
int a, b, c;
float d, e;
double f;
a = 1, b = 4, c = 6, d = 6.233, e = 12.90345,f=3.1415926535;
printf("|%-6d|%6d|%-6d|%6.1f|%-9.3e|%-9.5g|",a,b,c,d,e,f);
getchar();
getchar();
return 0;
}
易错点!
自开学以来我碰到的/收集到的错误点如下,按照我个人感觉从上往下需要留意的程度逐渐减少。
全角符号与半角符号输入错误,
如;和;,请注意这两个分号的占位大小,前者为全角,后者为半角。
在逻辑语句中,所有的符号都必须是半角符号,只有输入或者输出函数中带引号内的符号可以是全角符号,因为此时符号不参与逻辑运算,仅当作文本输出。
注意!关于scanf()函数则需要额外注意一点:
#include<stdio.h>
int main(void)
{
int a, b, c;
a = b = c = 0;
printf("请按照(123)4456-7897的格式输入您的电话号码\n");
scanf_s("(%d)%d-%d", &a, &b, &c); //注意:这里的括号是半角括号
printf("%d%d%d\n", a, b, c); //如果你输入了全角括号,那么这里会输出什么呢?
getchar();
getchar();
return 0;
}
win10系统+vs2017的环境下,调试操作打开的新的控制台页面会使用中文输入法。
如果你使用中文输入法输入了全角括号,那么输出会如下图所示:
很明显,第10行代码输出的三个数字是000,说明scanf_s()没有成功读取用户输入的内容
scanf()是一个严格的函数,区分全角与半角符号。在使用的时候务必注意这一点。下图是正常输入半角符号时的结果
符号错打,错位,漏打……
此类型错误嘛,经常有,而且极难检查出来。
依旧是那句话:
如果你的程序出错了,并且你检查不出来问题,再仔细看看,一定是你看漏了那里
我在这里就放一些错误案例,不再详述:
printf("本程序输出的结果为%d,a") //a为变量,位置错误
scanf("%d%d",a,b) //针对一般变量的输入需要&作为指向符号。只有输入指针变量时才可以不用
printf(%d,a) //缺少双引号标记的输出内容
………………………………………………………………
基本运算符号
一元符号:+(正号),-(负号)
二元符号:+,-,*,/,%(求余)
一元符号优先级高于二元
二元符号遵从四则运算优先级(即我们所熟知的数学运算)
特别注意:求余符号%得出的结果的正负数值取决于在它左边的那个数字的正负
以下代码演示了这一特性
#include "stdafx.h"
#include<stdio.h>
int main(void)
{
int a, b, c;
a = -9; b = -8; c = 0;
c = a % b;
printf("被除数:%d,除数:%d,余数:%d\n\n",a,b,c);
a = -9; b = 8; c = 0;
c = a % b;
printf("被除数:%d,除数:%d,余数:%d\n\n", a, b, c);
a = 9; b = -8; c = 0;
c = a % b;
printf("被除数:%d,除数:%d,余数:%d\n\n", a, b, c);
getchar();
getchar();
return 0;
}
效果图: