版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_21926717/article/details/79058798
一、输入输出格式
1)整型
scanf("%d",&m); //int
scanf("%ld",&m); //long int
scanf("%lld",&m); //long long int
2)浮点型
1、基本格式
scanf("%f",&m); //float
scanf("%lf",&m); //double
2、加域宽
#include<stdio.h>
int main(){
double m;
while(scanf("%lf",&m)!=EOF){
printf("%.2lf\n",m); //保留两位小数,整数部分不限制
printf("%5.2lf",m); //保留两位小数,两位整数。若整数小于两位则右对齐(若%后面加‘-’,则左对齐);若整数部分大于2位则该限制失效(小数点算一位)
}
return 0;
}
3)字符和字符串(c语言里面没有string类型)
//关于字符数组是否要加&,可参见https://zhidao.baidu.com/question/523623586.html
1、输入输出格式
#include<stdio.h>
int main() {
char ch1[10]; //作为字符串,但不能带空格
char ch2; //单个字符
scanf("%s %c",ch1,&ch2);
printf("%s %c",ch1,ch2);
return 0;
}
2、字符数组赋初值方式
#include <stdio.h>
#include <string.h>
int main(){
//前两种定义时赋初值
char m0[10]="abcdefg";
char m1[10]={'a','b','c','d','e','f','g'};
//第三种先定义后,若要直接一次性赋初值就用strcpy(数组名,字符串),当然对下标用循环一一赋初值也行。
char m2[10];
strcpy(m2,"fdafafads");
printf("%s\n%s\n%s\n",m0,m1,m2);
return 0;
}
3、带空格的字符串输入方式
-
char data[100]; gets(data);
-
char data[100]; scanf("%[^\n]", &data); //使用正则表达式,读到换行符结束
注:c++输入方式
对于字符数组:
cin.getline(str, len) cin.get(str, len)
两者都是读取一行输入,直至换行符。
getline()将换行符丢弃,而get()将换行符保留在输入序列里
对于string类:
getline(cin, str)
4、多个字符输入
如:若要输入以下数据并对每组数据进行相应处理,则要注意,详见注释。
4
C J
J B
C B
B B
scanf("%d",&m);
getchar(); //必须要吃掉回车,会被读取,因为这也是一个字符
for(i=0; i<m; i++){
scanf("%c %c",&a,&b); //中间必须加上空格,因为给出的数据中间有空格
getchar(); //同样道理,要吃掉回车
//do something.......
}
5、使用正则表达式限制输入
char a[100];
scanf("%[0-9]",a); //输入字符串,但每个字符都只能为数字,当然也可限制字母即:%[a-z]
puts(a);