A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© claud0623 中级黑马   /  2014-7-1 09:12  /  2066 人查看  /  12 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 claud0623 于 2014-7-1 22:01 编辑

昨天用C语言敲的一个关于乘法表的代码,我的意思是输入n就生成关于n的乘法表,查了一下代码没什么问题,但就是编译出错。
哪位大神可以帮我看一下改怎么改才能成功编译呢?源码如下:
#include <stdio.h>
int main()
{   
    int n=0;
    printf("请输入一个正整数:");
    scanf("%d",&n);//接收输入的值
    while(n <=0)
    {
        printf("您输入的数字非法");//提醒用户输入正确的数值
    }
    for(int i=1;i<=n;i++)//输入的行数
    {
        for(int j=1,product=1;j<=i;j++)//输入的列数
        {
            product=i*j;
            printf("%dX%d=%d ",i,j,product);
        }
        printf("\n");
    }
    return 0;
}

编译后报如下的错误:
乘法表.c: In function ‘main’:
乘法表.c:11: error: ‘for’ loop initial declaration used outside C99 mode
乘法表.c:13: error: ‘for’ loop initial declaration used outside C99 mode

12 个回复

倒序浏览
⒈心只霸占沵 发表于 2014-7-1 09:48
你提示用于输入正确的数值,是不是应该在while里再使用一次scanf?

确实是,如果编译成功,那么这就是下一个需要改的地方。
回复 使用道具 举报
fantacyleo 发表于 2014-7-1 09:49
你用cc或gcc编译的吧?for中声明变量,这是c99才支持的特性,而cc和gcc默认是c89,要加上-std=c99选项 ...

是用CC编译的,我在百度中也搜到要加-std=c99选项,问题是怎么加呢?
回复 使用道具 举报
rocki 发表于 2014-7-1 10:34
你这代码在X-code中编译通过的。楼上几楼答案正解。问题出在你再FOR中声明变量。并且输入0会进入死循环。
...

确实,我的输入0和负数都会死循环,不过在while循环里加一句scanf就能避免了。
回复 使用道具 举报
fantacyleo 发表于 2014-7-1 10:39
cc -std=c99 程序文件名.c

谢谢,编译成功了!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马