初学者在C程序设计现代方法中遇到题目。请各位看下哪里的问题

要求在输入一个整数n后,显示出从1-n所有整数,以及他们的平方。
要求是每隔24个数暂停一下,屏幕输出“press enter to continue ”----用户输入内容----程序判断用户输入的字符是否是换行,如果是,继续循环(即从25开始输出)。
#include
int main(void)
{
int i,n;
printf("This program prints a table of squares.\n");
printf("Enter a number of entries in table:");
scanf("%d",&n);
for(i=1;i<=n;i++){
printf("%10d%10d\n",i,i*i);
if(i%24==0){
printf("press enter to continue...\n");
while(getchar()!='\n')
;
}
}
return 0;
}
我运行了我的程序,第一个空格按下后,直接输出了两段,即1-24,25-48。后面的正常。应该是第一次按回车被getchar()读取了,所以输出了25-48。但是怎么改呢?谢谢各位!

printf("press enter to continue...\n");
while(getchar()!='\n')
;
->
system("pause");

图片说明

 #include<stdio.h>
int main(void)
{
int i,n;
printf("This program prints a table of squares.\n");
printf("Enter a number of entries in table:");
scanf("%d",&n);
getchar();加上这个
for(i=1;i<=n;i++){
printf("%10d%10d\n",i,i*i);
if(i%24==0){
printf("press enter to continue...\n");
while(getchar()!='\n')
;
}
}
return 0;
}


#include
int main(void)
{
int i,n;
printf("This program prints a table of squares.\n");
printf("Enter a number of entries in table:");
scanf("%d",&n);
getchar();加上这个
for(i=1;i<=n;i++){
printf("%10d%10d\n",i,i*i);
if(i%24==0){
printf("press enter to continue...\n");
while(getchar()!='\n')
;
}
}
return 0;
}


也可以使用scanf自带的格式控制符来解决:scanf("%*d%*[^\n]",&n); 告诉scanf空格和换行符一律不读进去。

scanf会把换行读入到stdin输入缓冲区里,你可以使用fflush(stdin) 将其给刷新出来!这样就避免了下一次scanf读取输入缓冲区时将换行直接给读进去的问题了。