@Chobi15
2015-11-04T08:48:28.000000Z
字数 1429
阅读 6555
未分类
读入一个数n,并读入接下来的n个数据
5 1 2 3 4 5
scanf(“%d”, &n);
for (i = 0; i < n; ++i) {
scanf("%d", &arr[i]);
}
按行读入数据,需要能够确定行内数据的个数
1 2 3 4 5
6 7 8
char str[100];
while(gets(str)) {
int i = 0, l, p = 0;
sscanf(str+p, “%d%n”, &arr[i++], &l) != EOF) {
p += l;
}
}
读入文本中所有的以<>括起来的内容
< html>< body>kasjdflkja<1>sdas<2>s
方法1
char ans[]
int cnt = 0;
while (scanf("%c", &ch) != EOF) { //输入不为文件末尾
if (ch == '<') {
while (1) {
scanf("%c", &ch);
if (ch == '>') {break;}
else {ans[cnt++] = ch;}
}
}
} //边读边处理
方法2
char buf[10000];
while (scanf(”%*[^<]<%[^>]>", buf) != EOF) {
...
}
// %*[^<]表示忽略所有不是 '<' 的字符
// %[^>] 表示把所有不是 '>' 的字符读入buf中
依次读入多个字符,字符以空格隔开
a f d
char a[10], b[10], c[10]
scanf("%s%s%s", a, b, c);
//用%s来读入字符可以有效避免空格和回车带来的影响
//调用时直接使用 a[0], b[0], c[0]
根据题目给出的数据判断
1 输入仅有一组数据
例如
scanf(XXX); //直接读入所需要的所有信息
2 输入第一行为k,表示有k组测试数据
例如HDU A+B for Input-Output Practice (II)
int k;
scanf("%d", &k);
while(k--){ //循环k次
scanf(XXX); //每个循环内部读入当前组的信息处理并输出答案
...
}
3 输入包含多组数据, 每数组据包含XXX内容,并给出了结束条件
while(scanf("%d%d", &x, &y), !m && !n)){
...
}
while(scanf(...)!=EOF); //scanf
输出方式必须严格按照题目给的格式输出,多一个回车多一个空格都有可能导致答案错误
样例有多组(单组),每一组占一行
while(scanf("%d%d", &a, &b) != EOF){
printf("%d\n", a + b);
}
样例有多组(单组),每一组占一行,每一组之后空一行
while(scanf("%d%d", &a, &b) != EOF){
printf("%d\n\n", a + b);
}
样例有多组(单组),每一组答案占一行,每两组答案之间空一行
int cas = 1;
while(...){
...
if(cas++ != 1) printf("\n"); //如果不是第一组答案就空一行
printf("%d\n", ans); //输出答案
}