| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1160 人关注过本帖
标题:请教!有关链表结构问题。
只看楼主 加入收藏
邹阳
Rank: 6Rank: 6
等 级:侠之大者
威 望:4
帖 子:124
专家分:402
注 册:2015-10-8
结帖率:73.68%
收藏
已结贴  问题点数:10 回复次数:2 
请教!有关链表结构问题。
  如题,一下代码一个do-while循环的内容,整体代码运行不存在错误,但是在运行当中建立第二个账号、密码时,出现了无法输入账号的问题,请教!


#include<stdlib.h>
#include<stdio.h>
#include<string.h>

void UI_Firstinterface(); //定义登录首界面UI
void UI_Userlogin();//定义用户登录界面UI
void UI_Userregister();//定义用户注册界面UI
void UI_Usersignout();//定义用户登出界面UI

struct USER//定义结构体用户信息
{
    char account[10];
    char password[10];
    int money;
    struct USER*next;
};
main()
{
//////////////////////////////////////////////////////////////////////////////////////////   
    struct USER *head,*p,*q,*t;
    head=(struct USER*)malloc(sizeof(struct USER));
    head->next=NULL;
    p=head;
//////////////////////////////////////////////////////////////////////////////////////////   
    int i;
    long count;//计算字符数量
    char account_1[10];//定义用户账号赋值项,把值赋值给结构体用户信息中的用户账号
    char password_1[10];//定义用户密码赋值项 ,把值赋值给结构体用户信息中的用户账密码
    char a[1]="";//定义数组为空为选择项
    system("COLOR 0E");
    UI_Firstinterface();//调用UI
    printf("请选择(友情提示:请输入有效序号选项):");
    gets(a);
    if(a[0]!='1'&&a[0]!='2'&&a[0]!='3')
    {
        if(a[0]=='4')
        {
            
        }
        system("CLS");
        printf("\a");
        printf("您输入的序号无效!");
        system("PAUSE");
        system("CLS");
        main();
     }
     switch(a[0])
     {
         case '1' :
             system("CLS");
             UI_Userlogin();//调用登录首界面UI
             //==============================================
            
            
            
            
             //==============================================
             system("PAUSE");
             break;
         case '2' :
             system("CLS");
             UI_Userregister();//调用用户注册界面UI
             //==============================================
             printf("是否已经阅读完整条款? 1-阅读   0-返回\n");
            gets(a);
            if(a[0]!='1'&&a[0]!='2'&&a[0]!='3')
            {
                system("CLS");
                printf("\a");
                printf("您输入的序号无效!");
                system("PAUSE");
                system("CLS");
                main();
            }
            if(a[0]=='4')
            {
                main();
            }
            printf("请确保周围安全,防止账号被他人窃取。\n");
            printf("\n");
            do{
             printf("新账号: ");
             gets(account_1);
             printf("设置密码:");
             gets(password_1);
             count=strlen(account_1);
             if(count>10)
             {
                 printf("\a");
                 system("CLS");
                 printf("账号设置不符合要求!\n");
                 system("PAUSE");
                 system("CLS");
                 main();
             }
             count=strlen(password_1);
             if(count>10)
             {
                                  printf("\a");
                 system("CLS");
                 printf("账号设置不符合要求!\n");
                 system("PAUSE");
                 system("CLS");
                 main();
             }
            q=(struct USER*)malloc(sizeof(struct USER));
            p->next=q;
            p=q;
             strcpy(q->account,account_1);
            strcpy(q->password,password_1);
            q->next=NULL;
            for(i=0;i<=10;i++)
            {
                account_1[i]=' ';
                password_1[i]=' ';
            }        
             printf("\n");
             printf("设置成功!  ");
             printf("是否退出? 0-退出\n");
            scanf("%d",&i);
            }while(i);

             //===============================临时验证区
             for(p=head->next;p!=NULL;p=p->next)
             {
                 printf("账号:");
                 puts(q->account);
                 printf("密码:");
                puts(q->password);
                printf("\n");
             }
            
            
            
            
            
             //================================
            
            
            
             //==============================================

             break;
         case '3' :
             system("CLS");
             UI_Usersignout();//调用用户登出界面UI
             //==============================================
            
            
            
            
             //==============================================
             system("PAUSE");
             break;
     }
     system("PAUSE");
return 0;     
}
    void UI_Firstinterface()//登录首界面UI
    {
    printf("===============================================\n");
    printf("==                银行管理系统               ==\n");
    printf("==                        V0.0.1    by zwp   ==\n");
    printf("===============================================\n");   
    printf("==              1.用户登录                   ==\n");
    printf("==              2.用户注册                   ==\n");
    printf("==              3.退出                       ==\n");
    printf("===============================================\n");
    }
void UI_Userlogin()//用户登录界面UI
{
    printf("===============================================\n");
    printf("==                 用户登录                  ==\n");
    printf("==             (输入-1返回主界面)            ==\n");
    printf("===============================================\n");
 }
void UI_Userregister()//用户注册界面UI
{
    printf("===============================================\n");
    printf("==                 用户注册                  ==\n");
    printf("==             (输入-1返回主界面)            ==\n");
    printf("===============================================\n");
    printf("==                                           ==\n");
    printf("==  要求:账号、密码请输入限制于十位字符内。 ==\n");
    printf("==                                           ==\n");
    printf("===============================================\n");
 }
void UI_Usersignout()//用户登出界面UI
{
    printf("===============================================\n");
    printf("==                 用户登出                  ==\n");
    printf("==                 登出成功!!!            ==\n");
    printf("===============================================\n");
}
搜索更多相关主题的帖子: password 用户登录 account include 结构体 
2016-08-17 11:15
ehszt
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:40
帖 子:1745
专家分:3216
注 册:2015-12-2
收藏
得分:10 
在scanf("%d",&i);后加个getchar();吸收回车符。还有输入0就死,程序还有问题。
2016-08-17 11:39
ehszt
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:40
帖 子:1745
专家分:3216
注 册:2015-12-2
收藏
得分:0 
修正了你几处错误,剩余的你自己改吧。
1.
 struct USER//定义结构体用户信息
{
     char account[10];
     char password[10];
     int money;
     struct USER*next;  //这里改成  struct USER *next;应有空格
 };
2.
q=(struct USER*)malloc(sizeof(struct USER));
             p->next=q;
这里加一句改成:
q=(struct USER*)malloc(sizeof(struct USER));
if(head->next==NULL)head->next=q;
             p->next=q;
3.
for(i=0;i<=10;i++)
             {
                 account_1[i]=' ';
                 password_1[i]=' ';
             }     
这里改成:
                  account_1[0]='\0';
                 password_1[0]='\0';  
4.scanf("%d",&i);后加一句getchar();
5.
 for(p=head->next;p!=NULL;p=p->next)
              {
                  printf("账号:");
                  puts(q->account);  //q换成p
                  printf("密码:");
                 puts(q->password);  //q换成p
                 printf("\n");
              }
2016-08-17 11:55
快速回复:请教!有关链表结构问题。
数据加载中...
 
   



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

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