九九乘法表运行时提示应用程序错误,求解
#include<stdio.h>
int main()
{
int a;
int num;
do{
printf("请输入一个1—9的整数:");
num=scanf("%d",a);
scanf("%*[^\n]%*c");
}while(num!=1||a<1||a>9);
for(int i=1;i<=9;i++)
{
for(int j=1;j<=i;j++)
printf("%2d*%d=%2d",j,i,j*i);
printf("\n");
}
return 0;
}
[解决办法]
int main(void)
{
int a;
int num;
do
{
printf("请输入一个1—9的整数:");
num=scanf("%d",&a); // 取地址符
//scanf("%*[^\n]%*c"); // 这行啥意思?
}
while(num!=1
[解决办法]
a<1
[解决办法]
a>9);
for(int i=1;i<=9;i++)
{
for(int j=1;j<=i;j++)
printf("%2d*%d=%2d",j,i,j*i);
printf("\n");
}
system("pause");
return 0;
}
[解决办法]
没看明白你的程序要干什么,如果仅仅打印出九九乘法表,前面的do while语句是可以不要的.
错误
1)看1楼的回复
2)i,j的声明放在函数的开始部分,int i,j;
因为有的编译器不支持函数中间声明变量.
[解决办法]
i,j在函数开始部分声明
[解决办法]
int a = 0;
do
{
while(1 == scanf("%*[^0123456789-+]")); //skip the invalid chars for integer
if(1 != scanf("%d", &a))
{
continue;
}
}while(a<1
[解决办法]
a>9);
[解决办法]
偶去,现在的娃儿都咋了,都赶上留言了啊。。
你先看看scanf返回值的意义,然后想想,你平时是怎么算9*9乘法表的
[解决办法]
在每个最后不带\n的printf后面加fflush(stdout);
在每个不想受接收缓冲区旧内容影响的scanf前面加rewind(stdin);
另外请检查scanf的返回值。