| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2001 人关注过本帖
标题:整整一个下午都挣扎在这个程序的编写,可出现的错误让我作死的节奏,望拯救 ...
只看楼主 加入收藏
寒冷枫dl
Rank: 2
等 级:论坛游民
帖 子:23
专家分:18
注 册:2013-11-2
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:5 
整整一个下午都挣扎在这个程序的编写,可出现的错误让我作死的节奏,望拯救于苦海!
#include <iostream>
#include <string>
using namespace std;
int length=0;
struct  TelephoneMessager  //手机联系人信息  
{      
    string name;    // 姓名
    string number;  // 电话         
}tb[100];    // 外部结构体数组tb,可以
void showMessager(TelephoneMessager &t)
{
    int i;
    for(i=0;i<=length-1;i++)
    {
        if(length==0)
            cout<<"号码薄为空白"<<endl;
        else
  cout<<tb[i].name<<" "<<tb[i].number<<endl;
}
    int main()
    {
   
      int n;
      cout<<"欢迎进入号码薄请选择你要进行的操作:"<<endl;
      cout<<"1.显示联系人;2.添加联系人;3.删除联系人;4.查询联系人;5.结束操作"<<endl;
      cin>>n;
      if(n==1)
     {
         showMessager(tb);
         jiemian;
     }

     if(n==5)
     {     cout<<"程序结束,再见"<<endl;
         cout<<"请按任意键继续"<<endl;
     }
     return 0;
}

错误的样子长这样,我就不明白了,为什么main会错的。主要的程序功能是要显示联系人,添加联系人,查询联系人等可我做到第一步就卡住动弹不得。   

    Compiling...
luoulo.cpp
C:\Users\asus\Documents\luoluo\luoulo.cpp(21) : error C2601: 'main' : local function definitions are illegal
C:\Users\asus\Documents\luoluo\luoulo.cpp(45) : fatal error C1004: unexpected end of file found
执行 cl.exe 时出错.

luoulo.obj - 1 error(s), 0 warning(s)
搜索更多相关主题的帖子: include 联系人 number 结构体 
2014-03-28 16:53
天使梦魔
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:37
帖 子:564
专家分:2754
注 册:2007-8-29
收藏
得分:8 
药!药!药! 切克闹~~!!!
程序代码:
// fwefwefewf.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"

#include <iostream>
#include <string>
using namespace std;
int length=0;
struct  TelephoneMessager  //手机联系人信息 
{      
    string name;    // 姓名
    string number;  // 电话         
}tb[100];    // 外部结构体数组tb,可以
void showMessager(TelephoneMessager &t)
{
    int i;
    for(i=0;i<=length-1;i++)
    {
        if(length==0)
            cout<<"号码薄为空白"<<endl;
        else
  cout<<tb[i].name<<" "<<tb[i].number<<endl;
    }//少括号
}
int main()
{
   
      int n;
      cout<<"欢迎进入号码薄请选择你要进行的操作:"<<endl;
      cout<<"1.显示联系人;2.添加联系人;3.删除联系人;4.查询联系人;5.结束操作"<<endl;
      cin>>n;
      if(n==1)
     {
         showMessager(tb);//tb不是数组吗?要么就定义指针吧
         jiemian;//这是什么??????从头到尾没看懂
     }

     if(n==5)
     {     cout<<"程序结束,再见"<<endl;
         cout<<"请按任意键继续"<<endl;
     }
     return 0;
}






1>.\fwefwefewf.cpp(27) : error C2601: “main”: 本地函数定义是非法的
1>        .\fwefwefewf.cpp(16): 此行有一个“{”没有匹配项
1>.\fwefwefewf.cpp(47) : fatal error C1075: 与左侧的 大括号“{”(位于“.\fwefwefewf.cpp(16)”)匹配之前遇到文件结束

错误代码分别是C2601和C1075以后自己查错误代码
2014-03-28 17:53
寒冷枫dl
Rank: 2
等 级:论坛游民
帖 子:23
专家分:18
注 册:2013-11-2
收藏
得分:0 
回复 2楼 天使梦魔
我把你给我的程序用Vc6运行时,发现有个头文件我的库里找不到,所以没有成功,但看了你细心帮我找的错,又去思考了下,用指针传值,但是不是我天生太笨了,总是不行。对于你的帮助真心感到谢谢,谢谢你的耐心指导和交流。如果觉得太麻烦没有时间看的话,我只好去看看有没有其它的办法了,真的是学艺不精,刚开始学问题不断。
#include <iostream>
#include <string>
using namespace std;
#define length 0;//想用它来记录实际的联系人个数,并且控制循环语句的次数
struct  TelephoneMessager  //手机联系人信息  
{      
    string name;    // 姓名
    string number;  // 电话         
}tb[100];    // 外部结构体数组tb,可以可以存放100条 联系人信息

void showMessager(TelephoneMessager *p)
{
    int i;
    for(i=0;i<=length-1;i++)//这里不停的出错
    {
        if(length==0)
            cout<<"号码薄为空白"<<endl;//在没有输入联系人时用它来显示号码为空白,因为我不知道怎么去判断tb如何为空的
        else
         cout<<p[i].name<<" "<<p[i].number<<endl;
    }

}
    int main()
    {
   
      int n;
      cout<<"欢迎进入号码薄请选择你要进行的操作:"<<endl;
      cout<<"1.显示联系人;2.添加联系人;3.删除联系人;4.查询联系人;5.结束操作"<<endl;
      cin>>n;
      TelephoneMessager *p[100]=&tb;//定义P指向TelephoneMessager类型的指针并指向tb数组,不知道有没有错?
      if(n==1)
     {
         showMessager(&tb);//这句传值时对不对?
      }
      return 0;
}
      
      
        // jiemian;//因为程序在执行上面1,2,3,4,5后都需要回到一个界面(jiiemian),来进行重新的选择操作,所以我就定义了一个函数来回到这个界面操作。
     /*我的想法是:
      void jiemian()
      { int m;
      cout<<"1.显示联系人;2.添加联系人;3.删除联系人;4.查询联系人;5.结束操作"<<endl;
      cin>>m;
      if(m==1)
      {
      showMessager();调用函数来显示联系人
      jiemian();回到选项界面
      }
          if(m==2)
          {
          addMessager(tb);添加联系人
          jiemian();
          }
           if(n==5)
           {  cout<<"程序结束,再见"<<endl;
         cout<<"请按任意键继续"<<endl;这里我想让操作者按任意键继续,不按就不继续执行程序怎么破。
          }
        return 0;
        }*/
2014-03-28 19:21
天使梦魔
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:37
帖 子:564
专家分:2754
注 册:2007-8-29
收藏
得分:10 
程序代码:
#include <iostream>
#include <string>
using namespace std;

struct  TelephoneMessager  //手机联系人信息 
{
    int num;//这个值用于控制该结构到底有多少数据
    string name[100];    // 姓名,不如创建100个成员,你先这样吧,后面再学如何根据内容创建动态的
    string number[100];  // 电话
}tb;    // 你真觉得创造100个结构是正确的想法??还是结构内有100个成员??
//上面是你要的结构

void showMessager(TelephoneMessager &p)//启动这个函数就是把参数全部显示一遍对吧???????? 参数改成引用,它对上面结构内存操作,这里没临时变量
{
    if(p.num==0)
        cout<<"没有任何记录"<<endl;
    else
    {
        for(int i=0;i<p.num;i++)
        {
            cout<<p.name[i]<<" : "<<p.number[i]<<endl;
        }
    }
    cout<<"回车后继续";//太猥琐
}

int main()
{
    char n;//用字符来传,想过遇到熊孩子往你整形穿字符没有?
    string intext;//输入的时候要用一个东西去保存它
    tb.num=0;//不初始化死全家,你这个又不是类,没有构造函数
    while(1)//死循环,用来不停的循环,直到菊花开裂
    {
        system("CLS");//该函数调用CMD命令,dos里cls等于清屏
        cout<<"欢迎进入号码薄请选择你要进行的操作:"<<endl;
        cout<<"1.显示联系人;2.添加联系人;3.删除联系人;4.查询联系人;5.结束操作"<<endl;
        cin.get(n);//从输入流获取一个字符,get是cin的成员
        if(n=='1')showMessager(tb);//穿进去的是结构自身内存哦,函数如果有改动整个结构也会改
        if(n=='2')
        {
            cout<<"输入姓名: ";
            cin>>tb.name[tb.num];//string有100个,现在也许从0开始,再说我们也初始化过num了吧
            cout<<"输入电话: ";
            cin>>tb.number[tb.num];
            tb.num++;//增加了一位
            cout<<"回车后继续";//太猥琐
        }
        //if(n=='3')  //不知道你想用如何方法删除,按姓名?按号码? string类里有查询函数,自己写吧
        //if(n=='4')  //查询方法又是什么
        if(n=='5')return 0;//调用return会直接返回给main函数,等于结束
        cin.get();//输入缓冲,要两个,这个不用去理解
        cin.get();
    }
    return 0;
}

2014-03-28 20:17
天使梦魔
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:37
帖 子:564
专家分:2754
注 册:2007-8-29
收藏
得分:2 
void showMessager(TelephoneMessager &p)  注意这个函数,它的参数是引用
这意味着你如果在函数内部尝试去改变p的值,那tb的值也会变动
&p没有自己的空间,这是一个地址标志,指向tb.
不信可以自己在内部调用比如p.sum=19;
然后在外面输出tb.sum的时候它也是19


而且,看你的样子要先学学数据库原理啊~~~~
2014-03-28 20:26
寒冷枫dl
Rank: 2
等 级:论坛游民
帖 子:23
专家分:18
注 册:2013-11-2
收藏
得分:0 
哈哈,这下我是看懂了。好佩服你的//后的解释, tb.num=0;//不初始化死全家,你这个又不是类,没有构造函数
    while(1)//死循环,用来不停的循环,直到菊花开裂,经典啊,好懂。坚持的学下去,c++.给你点32个赞
2014-03-28 20:32
快速回复:整整一个下午都挣扎在这个程序的编写,可出现的错误让我作死的节奏,望 ...
数据加载中...
 
   



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

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