在变量说明中,不允许连续给多个变量赋初值。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(' ')的作用是输出一个换行符,使输出的当前位置移到下一行开头。
gets 函数
从标准输入读取一行文本并把它存储于作为参数传递给它的数组中。一行输入由一串字符组成,以一个换行符(newline)结尾。gets函数丢弃换行符,并在该行末尾存储一个NUL字节(一个NUL字节是指字节模式为全0的字节,类似' '这样的字符常量)。然后,gets函数返回一个非NULL值,表示该行被成功读取。当gets函数被调用但事实上不存在输入行是它就返回NULL值,表示它到达输入的末尾。
NUL是ASCII字符集中' '字符的名字,它的字节为全0。NULL指一个其值为0的指针。
puts函数
puts()函数用来向标准输出设备(屏幕)输出字符串并换行,具体为:它把指定字符串写到到标准输出设备,并在末尾添上一个' '换行符为回车换行。其调用方式为,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
",&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 %2.4s", p,p); Chi前面4个空格。
Chin后面没有空格
5)%-m.ns指定取字符串前n个字符,输出字符串宽度为m,这n个字符输出在左端,若 m 小于 n,则输出n,若 m 大于 n,则右端补空格。
例如:char *p="China"; printf("%-7.3s。 %-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
");
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 }