第三章 数据的输入与输出

在变量说明中,不允许连续给多个变量赋初值。int a = b = c = 5;错误。必须改写为int a = 5,b = 5,c = 5。

getchar 函数

  getchar 函数是字符输入函数。它的作用是从标准输入设备(一般为键盘)读取一个字符(包括空格、回车和Tab),该字符显示到屏幕上。其一般形式为:

getchar( )

说明:getchar是以行为单位进行存取的。getchar( )必需读到一个换行符或者文件结束符EOF才会停止读取然后进行一次输出。注意:getchar()的返回值一般情况下是字符,但也可能是负值,即返回EOF。getchar函数通常返回终端所输入的字符,这些字符系统中对应的ASCII值都是非负的。

因此,很多时候,我们会写这样的两行代码:char c;c = getchar( );这样就很有可能出现问题。因为getchar函数除了返回终端输入的字符外,在遇到文件结束符EOF (文件结束符EOF,Windows下为组合键Ctrl + Z, Unix/Linux下为组合键Ctrl + D)时,getchar ()返回EOF,这个EOF在函数库里一般定义为-1。因此,在这种情况下,getchar函数返回一个负值,把一个负值赋给一个char型的变量是不正确的。正确的定义方法如下(K&R C中特别提到了这个问题):int c;c = getchar( );

 

 

putchar 函数

  putchar函数是字符输出函数。它的作用是向标准输出设备(一般为显示器)输出一个字符。其一般形式为:

putchar( )

putchar函数可以输出能在屏幕上显示的字符,也可以输出控制字符,如putchar('\n')的作用是输出一个换行符,使输出的当前位置移到下一行开头。

 

gets 函数

从标准输入读取一行文本并把它存储于作为参数传递给它的数组中。一行输入由一串字符组成,以一个换行符(newline)结尾。gets函数丢弃换行符,并在该行末尾存储一个NUL字节(一个NUL字节是指字节模式为全0的字节,类似'\0'这样的字符常量)。然后,gets函数返回一个非NULL值,表示该行被成功读取。当gets函数被调用但事实上不存在输入行是它就返回NULL值,表示它到达输入的末尾。

NUL是ASCII字符集中'\0'字符的名字,它的字节为全0。NULL指一个其值为0的指针。

 

puts函数

puts()函数用来向标准输出设备(屏幕)输出字符串并换行,具体为:它把指定字符串写到到标准输出设备,并在末尾添上一个'\0'换行符为回车换行。其调用方式为,puts(s);其中s为字符串字符(字符串数组名或字符串指针)。

 

scanf 函数

scanf函数是格式输入函数。按用户指定的格式从键盘上把数据输入指定的变量之中。其一般形式为:

scanf(格式控制,地址列表)

1.格式控制

格式控制是由" "括起来的字符串。它主要由格式说明符和普通字符组成,而格式说明符是由 % 和格式字符组成,它的作用是将输入的数据转换成指定的格式。

   scanf格式字符

格式字符 含义 变量类型
d,i 用来输入有符号的十进制整数 int
ld 读取一个长整型值 long
u 用来输入无符号十进制整数 unsigned int
f 读取一个实型值 float
lf 读取一个双精度实型值 double
c 读取一个字符 char
s 从输入中读取一个字符串 char型数组

2.地址列表

  地址列表是由若干个地址组成的表列,可以是变量的地址或字符串的首地址。地址多余一个各地址之间用逗号分隔。在C语言中变量的地址由取地址运算符 & 得到。

scanf("%d%d%d",&a,&b,&c);在输入数据时,两个数据用一个或多个空格间隔也可以用Enter键、Tab键。

 

3.使用scanf函数应注意的问题

  1)scanf函数中 如果%后有一个 * 附加说明符,表示该格式说明要求输入数据,但不赋值,即在地址列表中没有对应地址。

  2) scanf( )的格式控制字符串中没有转义字符。如scanf("%d\n",&a);是错误的。

  3)scanf( )的格式控制字符串中的普通字符不是用来显示的,而是输入时要求按照普通字符输入。

例如:scanf("%d,%d",&a,&b);输入时按3,4

又如:scanf("a = %d,b = %d",&a,&b);输入时按a = 3,b = 4

  4)scanf( )中参数第二部分一定是地址列表,不能是变量或表达式。

  5)是用 %c 格式输入字符时,空格字符和转义字符都属于有效字符。

 scanf("%2d%*2d%ld",&x,&y); %2d 读1个2位整型数存入a。   %*2d -- 跳过输入流中的1个2位整型数。%ld输入长整型。

 

printf 函数

printf函数是格式输出函数,它的作用向输出设备输出若干个任意类型的数据。其一般形式为:

printf(格式控制,输出表列)

1.格式控制

 格式控制是由" "括起来的字符串,它主要由格式说明和普通字符组成,而格式说明符是由 % 和格式字符组成,它的作用是将输出的数据转换成指定的格式。

printf格式字符

格式字符 含义
d,i 以带符号的十进制形式输出一个整数(正数不输出符号)
o 以八进制形式输出一个整数(不输出前导符 0)
X,x 以十六进制形式输出一个整数(不输出前导符 0X)
c 以字符形式输出一个字符
s 输出字符串
f 以小数形式输出单、双精度数,隐含输出6位小数
e,E 以指数形式输出实数,用e时以"e"表示,用E时以“E”表示

普通字符是需要原样输出的字符。如printf函数内双撇号中的逗号、转义字符。

2.输出表列

  输出表列是由需要的数据组成,可以是变量、常量、函数或表达式。数据应与格式字符类型对应。如果输出的表列中有多项数据,则每个数据之间用逗号分隔。

 

3.格式字符的用法说明

  1)整数输出:d格式

    1)%d按十进制整型数据的实际长度输出。

    2)%md右对齐输出,m为指定的输出字段宽度。如果数据的位数小于m,则左端补空格,若大于m,则按实际位数输出。

    3) %-md左对齐输出,m为指定的输出字段宽度。如果数据的位数小于m,则右端补空格,若大于m,则按实际位数输出。

 

  2)实数输出:f格式

    1)%f整数部分按实际长度输出,小数部分保留 6 位输出。

    2)%mf左对齐输出,m为指定的输出字段宽度,小数部分和小数点共占 7 位,整数部分剩 m - 7 位,如果整数部分的位数小于 m - 7 则左端补空格,若大于 m - 7则按实际位数输出。

    3)%-mf右对齐输出,m为指定的输出字段宽度,小数部分和小数点共占 7 位,整数部分剩 m - 7 位,如果整数部分的位数小于 m - 7 则右端补空格,若大于 m - 7则按实际位数输出。

      4)%.nf中n为小数点后要保留的位数,小数位不够时,尾部补0。

    5)%m.nf中指定输出字段宽度为m,n位小数。

  例如:double a = 123.456; printf("%.2f,%10.2f,%-10.3f。",a,a,a);

  输出结果:123.46,    123.46,123.456   。  中间是左端补4个空格,后面是右端补3个空格。

  

 

  3)字符输出:c格式

    1)%c中的c是格式符。在c语言中,一个整数只要值在0 - 255范围内,就可以用字符形式输出。在输出前系统会将该整数作为ASCII码转换成相应的字符,一个字符数据也可以用整数形式输出。

    2)字符数据也可以输出指定宽度。%mc左端补 m - 1 个空格,%-mc右端补 m - 1 个空格。

 

  4)字符串输出:s格式

    1)%s用来输出一个字符串。

    2)%ms右对齐输出,m为指定的输出字符串宽度。如果字符串本身长度小于m,则左端补空格,若串大于m,则将字符串全部输出。

    3)%-ms左对齐输出,m为指定的输出字符串宽度。如果字符串本身长度小于m,则右端补空格,若串大于m,则将字符串全部输出。

    4)%m.ns指定取字符串前n个字符,输出字符串宽度为m,这n个字符输出在右端,若 m 小于 n,则输出n,若 m 大于 n,则左端补空格。

      例如:char *p="China"; printf("%7.3s\n%2.4s", p,p);    Chi前面4个空格。

                                Chin后面没有空格

    5)%-m.ns指定取字符串前n个字符,输出字符串宽度为m,这n个字符输出在左端,若 m 小于 n,则输出n,若 m 大于 n,则右端补空格。

      例如:char *p="China"; printf("%-7.3s。\n%-2.3s。", p,p);Chi    后面4个空格。

                                   Chi后面没有空格。

 

例题怪题解析:% %在C语言中就是输出一个%,而是d就是一个普通字符,所以当% % d在一起时,其含义就是输出“%d”这两个字符。当% % % d一起时,其最终含义就是输出一个字符%号再接着按整型输出变量的值。

 

“弧度”和“度”是度量角大小的两种不同的单位。就像“米”和“市尺”是度量长度大小的两种不同的单位一样。
在数学和物理中,弧度是角的度量单位。它是由国际单位制导出的单位,单位缩写是rad。
定义:弧长等于半径的弧,其所对的圆心角为1弧度。(即两条射线从圆心向圆周射出,形成一个夹角和夹角正对的一段弧。当这段弧长正好等于圆的半径时,两条射线的夹角的弧度为1)
角度定义:两条相交直线中的任何一条与另一条相叠合时必须转动的量的量度,转动在这两条直线的所在平面上并绕交点进行。
角度是用以量度角的单位,符号为°。一周角分为360等份,每份定义为1度(1°)
微积分中所有的三角函数的公式都必须是弧度制。

    θ是弧度sin90是指sin(90弧度)      sin 90o   是指sin(90角度)

    1°=π/180°,1rad=180°/π。

        弧度 = n * 180.0f / π    角度转弧度 π/180×角度

        角度 = n * π / 180.0f    弧度变角度 180/π×弧度

 

 

 

1.输入一个3位整数,求出该数每个位上的数字之和。如123,每个位上的数字和就是1+2+3=6。

 1 #define _CRT_SECURE_NO_WARNINGS
 2 #include<stdio.h>
 3 #include<stdlib.h>
 4 
 5 void main()
 6 {
 7     int num,sum = 0;
 8     printf("please input num\n");
 9     scanf("%d", &num);
10 
11     while (num)
12     {
13         sum += num % 10;
14         num /= 10;
15     }
16 
17     printf("各个位上数字之和为:%d", sum);
18 
19     system("pause");
20 }

 

2.输出一个正整数,将其反序输出。

 1 #define _CRT_SECURE_NO_WARNINGS
 2 #include<stdio.h>
 3 #include<stdlib.h>
 4 
 5 void main()
 6 {
 7     int x, a, b, c, d, e, y;
 8     printf("请输入一个五位正整数"); 9     scanf("%d", &x);
10 
11     a = x / 10000; 
12     b = x / 1000 % 10; 
13     c = x / 100 % 10;
14     d = x % 100 / 10;
15     e = x % 10;
16     y = e * 10000 + d * 1000 + c * 100 + b * 10 + a;
17     
18     printf("%d", y);
19 
20     system("pause");
21 }

 

posted @ 2020-08-13 00:15  YangXinYi  阅读(852)  评论(0编辑  收藏  举报
//color="150,150,150"粒子的颜色设置 opacity="1"粒子的透明度 count="100"粒子的个数