首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

九九乘法表运行时提示应用程序异常,求解

2013-04-02 
九九乘法表运行时提示应用程序错误,求解#includestdio.hint main(){int aint numdo{printf(请输入一

九九乘法表运行时提示应用程序错误,求解

#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的返回值。

热点排行