对一个数组中大于指定数据的过滤,并将过滤后的数据存储到另一个数组中,每组第一行先输入两个整数n和x,5<=n<=100,x为500以内的整数;第二行输入n个1000以内的整数。
output对于每组输入的n个整数,保存并输出n个数中不小于x的所有整数
#include
#include
int main( )
{
int n,i,x,j=0;
while(scanf("%d %d",&n,&x)!=EOF)
{
int a[100];
int b[100];
for( i=0;iscanf("%d",&a[i]);
for(i=0;iif(a[i]>=x)
b[j++]=a[i];}
for(i=0;iprintf("%d ",b[i]);
printf("\n");
}
return 0;
}
基于Monster 组和GPT的调写:
潜在的问题:
当处理多组数据时,每次循环开始前,应该将存储结果的数组 b 的索引 j 重置为 0,否则可能会将上一组数据的结果一并输出。
由于指定的数组大小是 100,而题目中规定数组大小范围为 5~100,因此对于 n>100 的情况,该代码可能会发生数组越界的问题。
对于 scanf 函数,当读取到文件结束符 EOF 时,该函数返回 -1,而不是 0。因此,应该使用 while(scanf("%d %d",&n,&x)==2) 来确保每次成功读取了两个整数。
修改:
#include <stdio.h>
#include <stdlib.h>
int main() {
int n, i, x, j;
while (scanf("%d %d", &n, &x) == 2) {
int a[100];
int b[100];
j = 0; // 重置索引
for (i = 0; i < n; i++)
scanf("%d", &a[i]);
for (i = 0; i < n; i++) {
if (a[i] >= x)
b[j++] = a[i];
}
for (i = 0; i < j; i++)
printf("%d ", b[i]);
printf("\n");
}
return 0;
}
不知道你这个问题是否已经解决, 如果还没有解决的话: