大家能帮忙看一下我的代码吗,该怎么改,为什么不能多组输入,谢谢大家了

#include<stdio.h>
int main() {
    int i,n;
    scanf("%d",&n);
    for(i=1; i<=n; i++)
        if(i*i<=n)
            printf("%d\n",i*i);
        else
            break;
    return 0;

} 

想输入:

15
20

输出:

1 4 9
1 4 9 16

scanf函数遇到空格就认为是一次输入,敲击回车后结束输入,所以你输入15(空格) 20(回车)后,需要用两次scanf才能把数据读完。修改后的代码如下:(如有帮助,请采纳一下,谢谢)

#include <cstdio>

int main()
{
	int i,n;
	while(1)
	{
		scanf("%d",&n);
		for(i=1; i<=n; i++)
		{
			if(i*i<=n)
				printf("%d ",i*i);
			else
				break;
		}
		printf("\n");
	}
	
	return 0;

}


那你就定义一个数组,决定要一次输入几组

#include <stdio.h>

int main(){

int n,i,j;

scanf("%d",&n);

int *m = new int[n];

for(i=0; i<n;i++)
{ 

    scanf("%d",&m[i]);

}

for(i=0;i<n;i++)

{

for(j=1; j<=m[i]; j++)



if(j*j<=n)



printf("%d\n",j*j);



else



break;

}

}

 

你的scanf就执行一次,只会接收一次输入,你可以把scanf放到一个循环里,就可以多次输入。类似这样

//n是输入次数
int n = 2;
for(int k = 0; k < n; k++)
{
    //scanf语句
    //你的for循环
}

scanf放在循环里面即可,望采纳,不懂的可以关注私信我。