2、使用scanf、printf、getchar、putchar输入输出
1)scanf函数
格式:scanf(“格式控制符”,变量地址);
如scanf(“%d”,&n);
scanf是输入函数,其中%d,表示通过这个scanf函数用户需要输入一个int型变量,那这个变量输入后存在哪里呢?就是给后面的n。即通过scanf将int型数据存放在n中。&是取地址运算符,变量在定义之后,就会在内存中分配一块空间给这个变量,该空间在内存中的地址称为变量的地址,为了得到变量的地址,需要在变量前面加&。
如果有类似13:10:02这种类型的数据需要输入,怎么办呢?scanf(”%d:%d:%d“,&hh,&mm,&ss);即scanf双引号中的内容其实就是整个输入。
注意:如果要输入”3 4“这种空格隔开的数字,两个%d间可以不加空格。这是因为scanf对格式控制符(%c)的输入是以空白符(如空格、换行等)为结束判断标志的,所以会自动跳过空格,不作为输入。
%c可以把空格和换行符作为字符读入;
%s以空格跟换行作为读入结束的标志;
常见数据类型变量的scanf格式符:
数据类型 | 格式符 | 举例 |
---|---|---|
int | %d | scanf(”%d“,&n); |
long long | %lld | scanf(”%lld“,&n); |
float | %f | scanf(”%f“,&fl); |
double | %lf | scanf(”%lf“,&db); |
char | %c | scanf(”%c“,&c); |
字符串(char数组) | %s | scanf(”%s“,str); |
注意:输入字符数组不用加&,因为数组名已经代表了第一个数组元素的地址;
double类型的变量,输出格式中为%lf,而在输出格式中为%f
#include<stdio.h>
int main(){
int hh,mm,ss;
scanf("%d:%d:%d",&hh,&mm,&ss);
printf("%d:%d:%d",hh,mm,ss);
int n;
char c;
char str[10];
scanf("%d%c%s",&n,&c,str);//若输入5 c abc
printf("n=%d,c=%c,str=%s",n,c,str);//n=5,c= ,str=c
}
2)printf函数:printf(“格式控制符”,变量名称);
常见数据类型变量的printf格式符:
数据类型 | 格式符 | 举例 |
---|---|---|
int | %d | printf(”%d“,n); |
long long | %lld | printf(”%lld“,n); |
float | %f | printf(”%f“,fl); |
double | %f | printf(”%f“,db); |
char | %c | printf(”%c“,c); |
字符串(char数组) | %s | printf(”%s“,str); |
三种实用的输出格式:
输出格式 | 描述 |
---|---|
%md | 可以使不足m位的int型变量以m位右对齐输出,其中高位用空格补齐;如果变量本身超过m位,则不变 |
%0md | 同%md,只是不是用空格补齐,而是0补齐 |
%.md | 使浮点型小数保留m位小数输出 ,这里的保留使用的是”四舍六入五成双“规则 |
注:printf中可以使用转义字符(scanf也可以,只是不常用)
通过printf(”%%“);或printf(”\\“);输出%或;
#include<stdio.h>
int main()
{
//注:两个float类型的浮点数相乘,结果在整数部分就不精确了
float f1=8765.123,f2=8765.123;
double d1=8765.123,d2=8765.123;
printf("%f\n%f\n",f1*f2,d1*d2);
printf("-------------------------------\n");
//%md,%0md,%.mf的使用
int a1=123,a2=12345;
printf("%5d\n",a1);
printf("%05d\n",a1);
printf("%5d\n",a2);
printf("-------------------------------\n");
double d=12.3456;
printf("%.0f\n",d);
printf("%.1f\n",d);
printf("%.2f\n",d);
printf("%.3f\n",d);
printf("%.4f\n",d);
}
3、使用getchar/putchar输入/输出字符
注:getchar、putchar用来输入输出单个字符,且getchar可以识别空白符。
#include<stdio.h>
int main(){
char c1,c2,c3;
c1=getchar();
getchar();
c2=getchar();
c3=getchar();
putchar(c1);
putchar(c2);
putchar(c3);
return 0;
}
输入为:a<空格>bcd
输入为:ab<enter键>cd时