一、多组数据输入
//循环输入
while(scanf("%d",&n)!=EOF)
//EOF的值为-1,CTRL键+Z终止
//以某一特定结束符作为终止循环的条件,通常是将0作为终止标志
while( scanf("%d",&n) != EOF, n )
//-1作为终止标志
while( scanf("%d",&n) != EOF, n != -1)
//取反写法
while(~scanf("%d",&n),n)
//while(~scanf("%d",&n) != EOF, n)
二、常用输出
(1)printf()内容输出
1.整型格式输出
%d:输出int型(也称long int)
%ld:输出long long int 型
%md:输出长度为m的int型变量
如果数据的位数小于m,则左端补以空格,若大于m,则按实际位数输出。
#include<bits/stdc++.h>
using namespace std;
int main(){
int i;
i=100;
printf("%5d\n",i);
printf("%2d",i);
}
2.按进制形式输出
%o:以无符号八进制形式输出整数。长整型用"%lo"格式输出。指定字段宽度用“%mo”格式输出。
%x: 以无符号十六进制形式输出整数。长整型用"%lx"格式输出。指定字段宽度用"%mx"格式输出。
%u:以无符号十进制形式输出整数。长整型用"%lu"格式输出。指定字段宽度用“%mu”格式输出。
#include<bits/stdc++.h>
using namespace std;
int main(){
int i;
i=17;
printf("%5o\n",i);
printf("%3x\n",i);
printf("%1u",i);
}
3.字符串输出
%ms:输出m列字符串占,字符串本身长度大于m,将字符串全部输出。若小于m,则左补空格。
%-ms:如果串长小于m,则在m列范围内,字符串从左端开始,右补空格。(-的作用)
%m.ns:输出占m列,取字符串中左端n个字符(.的作用),输出在m列的右侧,左补空格。
%-m.ns:其中m、n含义同上,n个字符输出在m列范围的左侧,右补空格。如果n>m,则自动取n值,即保证n个字符正常输出。
#include<bits/stdc++.h>
using namespace std;
int main(){
char str[20]="hello world";
printf("%20s\n",str);
printf("%-20s\n",str);
printf("%20.5s\n",str);
printf("%-20.5s",str);
}
4.浮点数输出
%f:不能指定整体宽度,(默认情况下)整数部分全部输出并输出6位小数。
%m.nf:输出共占m列,其中有n位小数,如数值宽度小于m左端补空格。
%-m.nf:输出共占m列,其中有n位小数,如数值宽度小于m右端补空格。
#include<bits/stdc++.h>
using namespace std;
int main(){
float i=321.0123;
printf("%f\n",i);
printf("%10.2f\n",i);
printf("%-10.2f",i);
}
5.科学计数法:指数形式输出(double类型)
%e:默认小数占6位,整数1位,指数2位
%m.ne:m为科学计数法的整体列数,包括出现的字符,n为小数保留的长度。总长度<m,左补空格
%-m.ne:左对齐,总长度<m,右补空格
#include<bits/stdc++.h>
using namespace std;
int main(){
double i=123456;
printf("%10.3e\n",i);
printf("%-2.3e\n",i);
}