算法训练——多点测试输入输出(C)

scanf 函数的返回值为其成功读入的参数的个数,当在读取文件时到达文件末尾导致无法读取,产生读入失败,scanf 函数会返回-1而不是0.

于是,对于多点测试的第一种输入模式就可以使用 while…EOF

while(scanf("%d", &n) != EOF){
...
} 

对于读入字符串

while(scanf("%s",str) != EOF){
...
}

while(gets(str) != NULL){
...
}

当输入要求满足某那种条件时就停止输入,那么可以使用 while…break

while(scanf("%d %d", &a, &b) != EOF){
	if (a==0 || b=0) break;
}

while(scanf("%d %d", &a, &b), a || b){
...
}

第三种情况是如果给出测试数据的组数,那么就可以使用 while(T–)

scanf("%d", &T);
while(T--){
	scanf("%d", &a);
} 

在 while(T–) 类型下,输出可能要求两组输出数据之间有一个空行,最后一组数据后面没有空行

int T, n, a
scanf("%d", &T);
while(T--){
	int sum = 0;
	scanf("%d", &n);
	for(int i = 0; i < n; i++){
		scanf("%d",&a);
		sum = sum + a;
	}
	printf("%d\n", sum);
	if(T > 0) printf("\n);
}

顺便一提的是,与之类似的还有一种要求是:输出一行n个整数,每两个整数之间用空格隔开,最后一个整数后面不允许加上空格。

for(int i = 0; i < n; i++){
	printf("%d", a[i]);
	if( i< n-1) printf(" ");
	else printf("\n");
}
	
发布了55 篇原创文章 · 获赞 17 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_38204302/article/details/103802024