标准输出scanf函数

(1) 格式说明符中,可以指定数据的宽度,但不能指定数据的精度。例: 

1
2
3
float a;
scanf(“%10f”,&a);  //正确
scanf(“%10.2f”,&a); //错误

    

(2) 输入long类型数据时必须使用%ld,输入double数据必须使用%lf或%le。 
(3) 附加格式说明符”*”使对应的输入数据不赋给相应的变量。 
scanf()函数所用的转换说明符与printf()所用的几乎完全相同。主要区别在于printf()把%f、%e、%E、%g、%G同时用于float类型和double类型,而scanf()只是把他们用于float类型,而用于double类型时要求使用l(字母l)修饰符。

转换说明符  
%c 把输入解释成一个字符
%d 把输入解释成一个有符号十进制整数
%e,%f,%g,%a 把输入解释成一个浮点数(%a是C99的标准)
%E,%F,%G,%A 把输入解释成一个浮点数(%A是C99的标准)
%i 把输入解释成一个有符号十进制整数
%o 把输入解释成一个有符号的八进制整数
%p 把输入解释成一个指针(一个地址)
%s 把输入解释成一个字符串:输入的内容以第一个非空白字符作为开始,并且包含直到下一个空白字符的全部字符
%u 把输入解释成一个无符号十进制整数
%x,%X 把输入解释称一个有符号十六进制整数

 

*修饰符在scanf中()的用法:

*在scanf()中提供截然不同的服务,当把它放在%和说明符字母之间时,它使函数跳过相应的输入项目

一个容易出错的自由落体计算代码

 1 #include<stdio.h>
 2 
 3 #include<math.h>                    //后面求次方需要用到pow()函数
 4 
 5 int main() {
 6 
 7     double m,n,h,l;                  //pow()函数要求参与数和返回值均为double类型
 8 
 9     while(1) {
10 
11         printf("请输入高度:\n");
12 
13         scanf("%lf",&m);           //必须是lf%,%F会出现逻辑错误,输入要严格区分%lf和%f
14 
15         printf("请输入次数:\n");
16 
17         scanf("%lf",&n);
18 
19         h=m*pow(0.5,n);
20 
21         l=m+m*((1-pow(0.5,n))/0.5);
22 
23         printf("跳起%.2f 米,总运动长度%.2f 米\n-------------------\n",h,l); //输出大多数情况下LF%和F%是等同的
24 
25     }
26 
27     return 0;
28 
29 }

 

posted @ 2019-08-23 17:19  狗狗王  阅读(537)  评论(0编辑  收藏  举报