#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放在循环里面即可,望采纳,不懂的可以关注私信我。