先来复习一下转义字符
\' 输出'
\" 输出
\? 输出
\\ 输出
\a 产生声音或视觉信号
\b 退格
\f 换到下页开头
\n 换行
\r 回车 (本行开头)
\t 水平tab
\v 垂直制表符
\o\oo\ooo 一个o代表一个八进制数,输出对应字符
\x同上 同上
1、printf()输出函数
一般格式printf(“格式控制,字符”,输出表列)
举例
int a=520;
printf("%d",a);
此操作输出数字520。
char a='w';
printf("%c",a);
此操作输出字符w。
char c[]="abc";
printf("%s",c);
输出字符串abc
此外%f输出六位小数的实数
float d = 1.0/3;
printf("%f",d);
可以用%m.nf指定数据宽度和保留小数位数(注意数据本身的有效长度)
请观察一下输出:
float e = 2.0/3;
printf("%5.2f\n",e);
printf("%5.3f\n",e);
printf("%7.2f\n",e);
printf("%8.2f\n",e);
若在前面加-号则左对齐
float e = 2.0/3;
printf("%-5.2f\n",e);
printf("%-5.3f\n",e);
printf("%-7.2f\n",e);
printf("%-8.2f\n",e);
若输出位数不足可以用0补齐:
int f = 520.1;
printf("%5d\n",f);
printf("%05d\n",f);
printf("%7d\n",f);
printf("%07d\n",f);
注意:0前面不能有-号
各位猜一猜输出%怎么写?
1 printf("%\n");
2 printf("\%\n");
3 printf("30%\n"); //会输出30%吗?
巧了,都不是
其实是这样
printf("30%%");
2、输入函数scanf()
格式跟printf()差不多
一般格式scanf(“格式控制、字符”,地址)
举例:
scanf("%d ",&a);
scanf("%c ",&b);
scanf("%f ",&e);
scanf("%s ",&c);
scanf("%s",c);
printf("%d\n",a);
printf("%c\n",b);
printf("%f\n",e);
printf("%s\n",c);
printf("%s\n",c);
这里&是取地址符号,但最后一个可以不要,因为我定义的字符数组,众所周知,数组名是开头第一个地址也是数组的地址。scanf遇到空格会结束,要么会被读进去,所以用scanf一定要保证输入格式一致,并且要与scanf里""保持一致如:
scanf("a=%d ",&a);
scanf("%d",&b);
printf("a=%d\n",a);
printf("b=%d\n",b);
这里b赋值失败了。
可以限制每次读数据的宽度:
for(int i=0;i<10;i++)
{
scanf("%1d",&b[i]);
}
for(int i=0;i<10;i++)
{
printf("%d ",b[i]);
}
for(int i=0;i<10;i++)
{
scanf("%2d",&b[i]);
}
for(int i=0;i<10;i++)
{
printf("%d ",b[i]);
}
3、putchar()可以输出一个字符包括转义字符
char a='A';
putchar(a);
putchar('\n');
putchar(' ');
putchar(65);
4、getchar()输入函数
这个函数没有参数,只能接收一个字符
char a;
char b;
a=getchar();
b=getchar();
printf("%c",a);
printf("%c",b);
此外getchar()的使用还有一些小技巧,如在输入流最后加一个这函数能防止下一个输入流被回车占掉。多说无益,实践出真知😂。