| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2695 人关注过本帖
标题:为什么我编的这个程序在vc++6.0上一加.c后缀就报错,而变成c++程序就没错
只看楼主 加入收藏
哈利60
Rank: 2
等 级:论坛游民
帖 子:33
专家分:12
注 册:2016-6-3
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:11 
为什么我编的这个程序在vc++6.0上一加.c后缀就报错,而变成c++程序就没错
#include<stdio.h>
#include<string.h>
#define N 20
struct Employee
{
    int num;
    char name[20];
    char sex;
    int age;
    int wage;
    char add[20];
    char tel[20];
}em[20];
void output()//输出职工信息
{
    int i;
    for (i = 0;i < N;i++)
        printf("%d %s %c %d %d %s %s", em[i].num, em[i].name, em[i].sex, em[i].age, em[i].wage, em[i].add, em[i].tel);
}
void del()//删除某个职工信息
{
    int  i;
    int m;
    printf("请输入你要删除职员的职工号");
    scanf("%d", &m);
    for (i = 0;i < N;i++)
    {
        if (em[i].num == m)
        {
            printf("职员信息找到,如下\n");
            printf("%d %s %c %d %d %s %s", em[i].num, em[i].name, em[i].sex, em[i].age,em[i].wage, em[i].add, em[i].tel);
            break;
        }
    }
    em[i].num = 0;
    em[i].name[0] = '\0';
    em[i].sex = '\0';
    em[i].age = 0;
    em[i].wage = 0;
    em[i].add[0] =  '\0';
    em[i].tel[0] = '\0';
    printf("删除成功");
}
void search()//查找某个职工信息
{
    int m, i;
    printf("请输入您要查找职员信息的职工号");
    scanf("%d", &m);
    for (i = 0;i < N;i++)
    {
        if (em[i].num == m)
        {
            printf("您要找的信息找到了,信息如下");
            printf("%d %s %c %d %d %s %s", em[i].num, em[i].name, em[i].sex, em[i].age, em[i].wage, em[i].add, em[i].tel);
        }
    }
}
void sort()//按工资升序排序职工
{
    struct Employee temp;
    int i, j, k;
    printf("按工资升序是如下");
    for (i = 0;i < N-1;i++)
    {
        k = i;
        for (j = i + 1;j < N;j++)
            if (em[j].wage>em[k].wage)
                k = j;
        temp = em[k];em[k] = em[i];em[i] = temp;
    }
    for (i = 0;i < 20;i++)
        printf("%d %s %c %d %d %s %s", &em[i].num, &em[i].name, &em[i].sex, &em[i].age, &em[i].wage, &em[i].add, &em[i].tel);
    printf("\n");
    return;
}
void count()//统计男士或者女生人数
{
    int n = 0,i;
    char m;
    printf("输入学x,统计女生人数,输入y统计男生人数");
    scanf("%c",&m);
    for (i = 0;i < N;i++)
    {
        if (em[i].sex == m) n++;
    }
    printf("男士人数为%d\n", n);
}
void exit()//退出程序
{

}
int main()//主函数
{
    int n;
    int i;
    for (i = 0;i < N;i++)
    {
        printf("请输入职工号");
        scanf("%d", &em[i].num);
        printf("请输入职工姓名");
        scanf("%s", &em[i].name);
        printf("请输入性别(x-女,y-男)");
        scanf("%c", &em[i].sex);
        printf("请输入年龄");
        scanf("%d", &em[i].age);
        printf("请输入工资");
        scanf("%d", &em[i].wage);
        printf("请输入住址");
        scanf("%s", &em[i].add);
        printf("请输入电话");
        scanf("%s", &em[i].tel);
        printf("\n");
    }
    printf("输入完毕");               
    void output();                                      这是报错的地方在.c程序中,提示缺少;
    void del();
    void search();
    void sort();
    void count();
    void exit();
    printf("请输入1-6中任一个数字");

        scanf("%d", &n);
        switch (n)
        {
            case 1:
                printf("***浏览职工信息***");printf("\n");output();break;
            case 2:
                printf("***删除职工信息***");printf("\n");del();break;
            case 3:
                printf("*按职工号查找职工信息");printf("\n");search();break;
            case 4:
                printf("*按工资升排序员工*");printf("\n");sort();break;
            case 5:
                printf("***统计男士人数**");printf("\n");count();break;
            case 6:
                printf("***退出****");printf("\n");exit();break;
            default:
                printf("您输入的有误");
    }
    return 0;
}

搜索更多相关主题的帖子: include 信息 
2016-06-03 18:06
哈利60
Rank: 2
等 级:论坛游民
帖 子:33
专家分:12
注 册:2016-6-3
收藏
得分:0 
大一新手,各位大神多多帮助 万分感谢
2016-06-03 18:15
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:3 
回复 2楼 哈利60
报什么错,贴出来
收到的鲜花
  • 哈利602016-06-04 08:01 送鲜花  3朵   附言:我很赞同
2016-06-03 18:58
随风飘荡
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:3
帖 子:208
专家分:598
注 册:2011-9-9
收藏
得分:10 
vc6.0不能支持C99,所以声明必须位于顶部,尽管它们没有必要,你换个gcc用c99编译是能过的,但是还是有几个问题。

1.main位于底部,所以上面的函数他都能看到,main内的这些声明是没有必要的
2.sort()函数内的printf语句参数取了地址
3.获取性别时用了%c,这样会把空白符留在输入流中,有潜在的风险。
收到的鲜花
  • 哈利602016-06-04 08:02 送鲜花  3朵   附言:我很赞同
2016-06-03 21:48
哈利60
Rank: 2
等 级:论坛游民
帖 子:33
专家分:12
注 册:2016-6-3
收藏
得分:0 
回复 2楼 哈利60
/*void output();                                      这是报错的地方在.c程序中,提示出六个错误,错误原因都是说缺少;在函数前
    void del();
     void search();
     void sort();
     void count();
     void exit();*/
2016-06-04 07:47
哈利60
Rank: 2
等 级:论坛游民
帖 子:33
专家分:12
注 册:2016-6-3
收藏
得分:0 
回复 3楼 rjsp
谢谢你
就是你说的第三条不懂,
我们现在只学了一门谭浩强第四版的c程序设计,请问你对初学者有什么好的建议没有,我的专业是信息管理与信息系统。我以后不想从事单纯的编程,但对具体的职业不太清楚,我们以后要学的课程有数据库,数据结构与算法,网页与网站设计,云计算,计算机与网络技术,还有管理学,会计学,微观经济学 宏观经济学,每一门都学的不深入
2016-06-04 07:59
哈利60
Rank: 2
等 级:论坛游民
帖 子:33
专家分:12
注 册:2016-6-3
收藏
得分:0 
回复 3楼 rjsp
去掉你说的函数定义那几行和把主函数放在开头,还是报错在v++6.0加.c的程序中,而不加.c生产c++文件就没错
2016-06-04 10:59
playmyself
Rank: 5Rank: 5
来 自:第3系4级宇宙空间
等 级:职业侠客
帖 子:76
专家分:399
注 册:2009-7-8
收藏
得分:2 
因为C语言的编译器和C++的不一样。

无聊创造奇迹。
2016-06-04 18:38
随风飘荡
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:3
帖 子:208
专家分:598
注 册:2011-9-9
收藏
得分:5 
回复 7楼 哈利60
不,你需要看清楚。
我说的是因为main在文件尾,所以之前的函数他都“可见”,而不需要利用声明告诉他有这些函数。
你需要知道声明的意义是什么。
而放置在开头指的是在比较老式的编译器里,任何声明都需要位于程序块内的开头(自然包括函数声明)。比如main里的声明就需要按如下排布
main() {
//声明;
//执行语句;
}

而只要支持了C99标准的编译器则无此限制
2016-06-04 23:13
哈利60
Rank: 2
等 级:论坛游民
帖 子:33
专家分:12
注 册:2016-6-3
收藏
得分:0 
回复 9楼 随风飘荡
好的谢谢你
2016-06-05 08:13
快速回复:为什么我编的这个程序在vc++6.0上一加.c后缀就报错,而变成c++程序就没 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018732 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved