在输入时注意格式对应:
#include <stdio.h> int main() { int a; float x; char c1; scanf("a=%d",&a); scanf("x=%f",&x); scanf("c1=%c",&c1); printf("a=%d,x=%f,c1=%c",a,x,c1); return 0; }
若在输入时用错空格键或者换行符,则会出现错误:
a=1 x=1.2 c1=3
上述输入只能输出 a=1 因为空格键取代了 x 的位置 输入完 x=1.2 后空格键有取代了应该输入 c1 的位置。
正确的输入应为:
a=1x=1.2c1=3
scanf 是有返回值的,例如:
#include <stdio.h> #include <stdlib.h> int main() { int a; int b; int c; printf("请输入三个整数:"); int x=scanf("%d%d%d",&a,&b,&c); printf("d%\n%d\n",a,x); }
测试输出:
$ ./a.out 请输入三个整数:1 2 3 1 3
$ ./a.out 请输入三个整数:5 6 d 5 2
从上边的例子中可以得到验证,这里用变量 x 接收 scanf() 函数的返回值,并输出显示出来。
有关 putchar 的一个程序。
先后输出BOY三个字符。
例子1:
#include<stdio.h> int main() { char a='B',b='O',c='Y'; putchar(a); putchar(b); putchar(c); putchar('\n'); return 0; }
例子2:
#include<stdio.h> int main() { int a=66,b=79,c=89; putchar(a); putchar(b); putchar(c); putchar('\n'); return 0; }
两个运行结果相同,因为将一个字符赋给字符变量和将字符的 ASCII 代码赋给字符变量作用是完全相同的,但要注意其值必须在字符的 ASCII 代码范围内。
在进行输出时,若要用到用来输出实数的 f 格式符(以小数形式输出),有以下几种用法:
1、基本型,用 %f
不指定输出类型的长度,用系统根据情况决定,一般是实数中的整数部分全部输出,小数部分输出六位。例:
#include<stdio.h> int main() { double a=1.0; printf("%f\n",a/3); return 0; }
运行结果:0.333333
2、指定数据宽度和小数位数,用 %m.nf
例:将上个程序的双精度变量 a 输出 15 位小数,用 %20.15f 的格式声明,指定输出的数据占 20 列,其中包括 15 位小数。改动上面程序如下:
#include<stdio.h> int main() { double a=1.0; printf("%20.15f\n",a/3); return 0; }
运行结果: 0.333333333333333
注意在 0 的前面有 3 个空格,且双精度数只保证 15 位有效数字的准确性。
3、输出的数据相左对齐,用 %-m.nf
在 m.n 前加一个负号,其作用与 %m.nf 形式作用基本相同,但当数据长度不长过 m 时,数据向左靠,右端补空格。
学 C 语言的时候,字符输入曾经困扰过我,例如这段代码:
int i; char c; scanf("%d%c", &i,&c);
这时候变量 c 中存储的往往不是你想输入的字符,而是一个空格,然后我们又会这样来写:
int i; char c; scanf("%d", &i); scanf("%c", &c);
这时候,我们发现,根本没有输入字符C的机会,这是为什么?因为输入流是有缓冲区的,我们输入的字符存储在那,然后再赋值给我们的变量。我们可以这样改:
int i; char c; scanf("%d", &i); while((c=getchar())==' ' || c=='\n'); c = getchar();
这个办法是一直读取,读到没有空格和换行就跳出循环,但是有一个更好的解决办法;
int i; char c; scanf("%d%[^' '^'\n']", &i, &c);
这是用正则表达来控制输入格式为非空格非换行。
感谢您的支持,我会继续努力的!
支付宝扫一扫,即可进行扫码打赏哦
1544C 输入 & 输出
在输入时注意格式对应:
若在输入时用错空格键或者换行符,则会出现错误:
上述输入只能输出 a=1 因为空格键取代了 x 的位置 输入完 x=1.2 后空格键有取代了应该输入 c1 的位置。
正确的输入应为:
1543C 输入 & 输出
scanf 是有返回值的,例如:
测试输出:
从上边的例子中可以得到验证,这里用变量 x 接收 scanf() 函数的返回值,并输出显示出来。
1542C 输入 & 输出
有关 putchar 的一个程序。
先后输出BOY三个字符。
例子1:
例子2:
两个运行结果相同,因为将一个字符赋给字符变量和将字符的 ASCII 代码赋给字符变量作用是完全相同的,但要注意其值必须在字符的 ASCII 代码范围内。
1541C 输入 & 输出
在进行输出时,若要用到用来输出实数的 f 格式符(以小数形式输出),有以下几种用法:
1、基本型,用 %f
不指定输出类型的长度,用系统根据情况决定,一般是实数中的整数部分全部输出,小数部分输出六位。例:
运行结果:0.333333
2、指定数据宽度和小数位数,用 %m.nf
例:将上个程序的双精度变量 a 输出 15 位小数,用 %20.15f 的格式声明,指定输出的数据占 20 列,其中包括 15 位小数。改动上面程序如下:
运行结果: 0.333333333333333
注意在 0 的前面有 3 个空格,且双精度数只保证 15 位有效数字的准确性。
3、输出的数据相左对齐,用 %-m.nf
在 m.n 前加一个负号,其作用与 %m.nf 形式作用基本相同,但当数据长度不长过 m 时,数据向左靠,右端补空格。
1540C 输入 & 输出
学 C 语言的时候,字符输入曾经困扰过我,例如这段代码:
这时候变量 c 中存储的往往不是你想输入的字符,而是一个空格,然后我们又会这样来写:
这时候,我们发现,根本没有输入字符C的机会,这是为什么?因为输入流是有缓冲区的,我们输入的字符存储在那,然后再赋值给我们的变量。我们可以这样改:
这个办法是一直读取,读到没有空格和换行就跳出循环,但是有一个更好的解决办法;
这是用正则表达来控制输入格式为非空格非换行。