C语言进修教程第三章-C语言措施设计劈头(3)
名目字符串
名目字符串的一般形式为: %[*][输入数据宽度][长度]范例 个中有方括号[]的项为任选项。各项的意义如下:
1.范例
暗示输入数据的范例,其名目符和意义下表所示。
名目 字符意义
d 输入十进制整数
o 输入八进制整数
x 输入十六进制整数
u 输入无标记十进制整数
f或e 输入实型数(用小数形式或指数形式)
c 输入单个字符
s 输入字符串
2.“*”符
用以暗示该输入项读入后不赋予相应的变量,即跳过该输入值。 如 scanf("%d %*d %d",&a,&b);当输入为:1 2 3 时,把1赋予a,2被跳过,3赋予b。
3.宽度
用十进制整数指定输入的宽度(即字符数)。譬喻: scanf("%5d",&a);
输入:
12345678
只把12345赋予变量a,其余部门被截去。又如: scanf("%4d%4d",&a,&b);
输入:
12345678将把1234赋予a,而把5678赋予b。
4.长度
长度名目符为l和h,l暗示输入长整型数据(如%ld) 和双精度浮点数(如%lf)。h暗示输入短整型数据。
利用scanf函数还必需留意以下几点:
a. scanf函数中没有精度节制,如: scanf("%5.2f",&a); 是犯科的。不能诡计用此语句输入小数为2位的实数。
b. scanf中要求给出变量地点,如给出变量名则会堕落。如 scanf("%d",a);是犯科的,应改为scnaf("%d",&a);才是正当的。
c. 在输入多个数值数据时,若名目节制串中没有非名目字符作输入数据之间的隔断则可用空格,TAB或回车作隔断。C编译在遇到空格,TAB,回车或犯科数据(如对“%d”输入“12A”时,A即为犯科数据)时即认为该数据竣事。
d. 在输入字符数据时,若名目节制串中无非名目字符,则认为所有输入的字符均为有效字符。譬喻:
scanf("%c%c%c",&a,&b,&c);
输入为:
d e f
则把’d’赋予a, ‘f’赋予b,’e’赋予c。只有当输入为:
def
时,才气把’d’赋于a,’e’赋予b,’f’赋予c。 假如在名目节制中插手空格作为隔断,如 scanf ("%c %c %c",&a,&b,&c);则输入时各数据之间可加空格。
void main(){
char a,b;
printf("input character a,b\n");
scanf("%c%c",&a,&b);
printf("%c%c\n",a,b);
}
scanf("’C14F14%c%c",&a,&b);
printf("%c%c\n",a,b); 由于scanf函数"%c%c"中没有空格,输入M N,功效输出只有M。
而输入改为MN时则可输出MN两字符,见下面的输入运行环境: input character a,b
MN
MN
void main(){
char a,b;
printf("input character a,b\n");
scanf("%c %c",&a,&b);
printf("\n%c%c\n",a,b);
}
scanf("%c %c",&a,&b); 本例暗示scanf名目节制串"%c %c"之间有空格时, 输入的数据之间可以有空格隔断。e. 假如名目节制串中有非名目字符则输入时也要输入该非名目字符。
譬喻:
scanf("%d,%d,%d",&a,&b,&c); 其顶用非名目符“ , ”作隔断符,故输入时应为: 5,6,7
又如: scanf("a=%d,b=%d,c=%d",&a,&b,&c);
则输入应为
a=5,b=6,c=7g. 如输入的数据与输出的范例纷歧致时,固然编译可以或许通过,但功效将不正确。
void main(){
int a;
printf("input a number\n");
scanf("%d",&a);
printf("%ld",a);
}
由于输入数据范例为整型, 而输出语句的名目串中说明为长整型,因此输出功效和输入数据不符。如窜改措施如下:
void main(){
long a;
printf("input a long integer\n");
scanf("%ld",&a);
printf("%ld",a);
}
运行功效为:
input a long integer
1234567890
1234567890 当输入数据改为长整型后,输入输出数据相等。
键盘输入函数
getchar函数getchar函数的成果是从键盘上输入一个字符。其一般形式为: getchar(); 凡是把输入的字符赋予一个字符变量,组成赋值语句,如:
char c;
c=getchar();
#include<stdio.h>
void main(){
char c;
printf("input a character\n");
c=getchar();
putchar(c);
}
利用getchar函数还应留意几个问题:
1.getchar函数只能接管单个字符,输入数字也按字符处理惩罚。输入多于一个字符时,只吸收第一个字符。
2.利用本函数前必需包括文件“stdio.h”。
3.在TC屏幕下运行含本函数措施时,将退出TC 屏幕进入用户屏幕期待用户输入。输入完毕再返回TC屏幕。
void main(){
char a,b,c;
printf("input character a,b,c\n");
scanf("%c %c %c",&a,&b,&c);
printf("%d,%d,%d\n%c,%c,%c\n",a,b,c,a-32,b-32,c-32);
}
输入三个小写字母
输出其ASCII码和对应的大写字母。
void main(){
int a;
long b;
float f;
double d;
char c;
printf("%d,%d,%d,%d,%d",sizeof(a),sizeof(b),sizeof(f)
,sizeof(d),sizeof(c));
}
输出各类数据范例的字节长度。