| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4810 人关注过本帖
标题:一个随机点名系统
只看楼主 加入收藏
a956545765
Rank: 2
来 自:河南
等 级:论坛游民
帖 子:98
专家分:45
注 册:2016-7-27
结帖率:92.31%
收藏
已结贴  问题点数:20 回复次数:4 
一个随机点名系统
程序代码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<time.h>
#include<conio.h>

struct student
{
    char Name[10];
    char NO[15];
    char Sex[2];
}stu[110];

char hhh[110]={0};
int main()
{
    int i=0,j=0,flag=0,RN,*a;
    FILE *fp;
    char ch,filename[20]={0},line[110]={0};
    printf("请输入保存学生数据的文本:");
    gets(filename);
    fp=fopen(filename,"r");
    printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
    printf("名单如下:\n");
    printf("姓名\t    学号\t性别\n");
    while(fgets(line,sizeof(line)-1,fp))
    {
        if(line[0]!='\0'&&line[0]!=' ')
        {
            sscanf(line,"%s %s %s",stu[i].Name,stu[i].NO,stu[i].Sex);
            printf("%s\t%s\t%s\n",stu[i].Name,stu[i].NO,stu[i].Sex);
            i++;
        }
    }
    printf("三个班共有%d名学生\n",i);
    
    srand((unsigned)time(NULL));
    a=(int*)malloc(sizeof(int)*i);
    memset(a,0,sizeof(a));
    printf("按空格键点名,其他键退出:");
    fflush(stdin);
    while((ch=getch())==' ')
    {
        if(flag==i)
        {
            printf("点名结束");
            break; 
        }
        
        RN=rand()%i;
        while(hhh[RN]==1)
        {
            RN=rand()%i;
            flag++;
            printf("\n~~~~~~~~~~~~~~~~~~~~~~~~~~\n%s\t%s\t%s\n~~~~~~~~~~~~~~~~~~~~~~~~~~\n",\
                    stu[RN].Name,stu[RN].NO,stu[RN].Sex);
            hhh[RN]=1;
        }
    }    
}


我从文本中读入学生数据后,再按空格进行随机挑选时没反应,怎么回事?

[此贴子已经被作者于2017-2-22 09:01编辑过]

2017-02-22 09:00
a956545765
Rank: 2
来 自:河南
等 级:论坛游民
帖 子:98
专家分:45
注 册:2016-7-27
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册
  读入后就这样,按空格没反应

不学好C不换头像!!!!
2017-02-22 09:21
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:20 
因为你的代码涉及到基础数据的录入 所以无法帮你测试

但是 仅仅测试下面代码是没有问题的
程序代码:
int main()
{
    char ch;
    printf("按空格键点名,其他键退出:\n");
    fflush(stdin);
    while((ch=getch())==' ')
    {
        printf("点名结束");
        break;
    }  

    return 0;
}


DO IT YOURSELF !
2017-02-22 09:31
a956545765
Rank: 2
来 自:河南
等 级:论坛游民
帖 子:98
专家分:45
注 册:2016-7-27
收藏
得分:0 
回复 3楼 wp231957
谢谢了,我已经知道错在哪里了

不学好C不换头像!!!!
2017-02-23 09:02
a956545765
Rank: 2
来 自:河南
等 级:论坛游民
帖 子:98
专家分:45
注 册:2016-7-27
收藏
得分:0 
程序代码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<time.h>
#include<conio.h>

struct student
{
    char Name[10];
    char NO[15];
    char Sex[2];
}stu[110];

char hhh[110]={0};
int main()
{
    int i=0,j=0,flag=0,RN,*a;
    FILE *fp;
    char ch,filename[20]={0},line[110]={0};
    printf("请输入保存学生数据的文本:");
    gets(filename);
    fp=fopen(filename,"r");
    printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
    printf("名单如下:\n");
    printf("姓名\t    学号\t性别\n");
    while(fgets(line,sizeof(line)-1,fp))
    {
        if(line[0]!='\0'&&line[0]!=' ')
        {
            sscanf(line,"%s %s %s",stu[i].Name,stu[i].NO,stu[i].Sex);
            printf("%s\t%s\t%s\n",stu[i].Name,stu[i].NO,stu[i].Sex);
            i++;
        }
    }
    printf("三个班共有%d名学生\n",i);
    
    srand((unsigned)time(NULL));
    a=(int*)malloc(sizeof(int)*i);
    memset(a,0,sizeof(a));
    printf("按空格键点名,其他键退出:");
    fflush(stdin);
    while((ch=getch())==' ')
    {
        if(flag==i)
        {
            printf("点名结束");
            break; 
        }
        
        RN=rand()%i;
        while(hhh[RN]==1)
            RN=rand()%i;
        flag++;
        printf("\n~~~~~~~~~~~~~~~~~~~~~~~~~~\n%s\t%s\t%s\n~~~~~~~~~~~~~~~~~~~~~~~~~~\n",\
                stu[RN].Name,stu[RN].NO,stu[RN].Sex);
        hhh[RN]=1;
        
    }    
}
   这样就好了

不学好C不换头像!!!!
2017-02-23 09:03
快速回复:一个随机点名系统
数据加载中...
 
   



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

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