天天看点

【C语言】第二课:printf与scanf,基本运算【C语言】第二课时:printf()和scanf(),基本运算符号

【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;
    }
           
【C语言】第二课:printf与scanf,基本运算【C语言】第二课时:printf()和scanf(),基本运算符号

易错点!

自开学以来我碰到的/收集到的错误点如下,按照我个人感觉从上往下需要留意的程度逐渐减少。

全角符号与半角符号输入错误,

如;和;,请注意这两个分号的占位大小,前者为全角,后者为半角。

在逻辑语句中,所有的符号都必须是半角符号,只有输入或者输出函数中带引号内的符号可以是全角符号,因为此时符号不参与逻辑运算,仅当作文本输出。

注意!关于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()没有成功读取用户输入的内容

【C语言】第二课:printf与scanf,基本运算【C语言】第二课时:printf()和scanf(),基本运算符号

scanf()是一个严格的函数,区分全角与半角符号。在使用的时候务必注意这一点。下图是正常输入半角符号时的结果

【C语言】第二课:printf与scanf,基本运算【C语言】第二课时:printf()和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;
}
           

效果图:

【C语言】第二课:printf与scanf,基本运算【C语言】第二课时:printf()和scanf(),基本运算符号