|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
求教C语言内,我想实现的功能是———
统计候选人得票问题,已知有三个候选人" LI", WANG "," ZHANG "(结构体定义),投票人有100人,写程序完成统计所有投票人完成投票过程后,候选人从高到低排序(起泡法),并将数据保存到磁盘文件 Leader 中
(1)完成投票过程,排序过程;
(2)完成存盘(以二进制方式写到磁盘文件中);
求教为什么得不到正确的结果,能帮我指出来吗?谢谢啦!
#include<stdio.h>
struct student
{
char name[10];
int num;
};
int main()
{ FILE *fp1;
struct student stu[]={{"Li",0},{"Wang",0},{"Zhang",0}};
struct student temp;
int i,j;
char s[10];
for(i=0;i<100;i++)
{
printf("输入你想投票的人的名字");
gets(s);
if(s[0]=='L')
stu[0].num=stu[0].num+1;
if(s[0]=='W')
stu[1].num=stu[1].num+1;
if(s[0]=='Z')
stu[2].num=stu[2].num+1;
}
for(i=0;i<3;i++)
for(j=0;j<3-i;j++)
{
if(stu[j].num>stu[j+1].num)
{
temp=stu[j];
stu[j]=stu[j+1];
stu[j+1]=temp;
}
}
for(i=0;i<3;i++)
{
printf("%s\n%d\n",stu[i].name,stu[i].num);
}
fp1=fopen("leader","w");
fwrite(stu,100,3,fp1);
fclose(fp1);
}
本帖最后由 jackz007 于 2020-12-9 21:18 编辑 #include<stdio.h>
typedef struct student
{
char name[10] ;
int num ;
} LEAD ;
int main()
{
FILE * fp ;
LEAD stu[]={{"Li",0} , {"Wang",0} , {"Zhang",0}} , res[3] ;
int d[3] , i , j , k , m = 100 ;
char fn[] = "lead.dat" ;
for(i = 0 ; i < m ;) {
printf(" 第 [%d] 次投票\n" , i + 1) ;
printf("\t1. --- Li [%d]\n" , stu[0] . num) ;
printf("\t2. --- Wang [%d]\n" , stu[1] . num) ;
printf("\t3. --- Zhang [%d]\n" , stu[2] . num) ;
printf(" 请选择候选人(1 - 3) : ") ;
fflush(stdin) ;
if(scanf("%d" , & k) == 1 && k > 0 && k < 4) {
stu[k - 1] . num ++ ;
i ++ ;
} else printf("\n\t *** 投票无效!***\n") ;
printf("\n") ;
}
for(i = 0 ; i < 3 ; i ++) d[i] = i ;
for(i = 0 ; i < 2 ; i ++) {
for(j = i + 1 ; j < 3 ; j ++) {
if(stu[d[i]] . num < stu[d[j]] . num) {
k = d[i] ;
d[i] = d[j] ;
d[j] = k ;
}
}
}
if((fp = fopen(fn , "wb")) != NULL) {
fwrite(& m , sizeof(int) , 1 , fp) ;
for(i = 0 ; i < 3 ; i ++) fwrite(& stu[d[i]] , sizeof(LEAD) , 1 , fp) ;
fclose(fp) ;
if((fp = fopen(fn , "rb")) != NULL) {
fread(& m , sizeof(int) , 1 , fp) ;
fread(res , sizeof(LEAD) , 3 , fp) ;
fclose(fp) ;
printf("\t 选举计票结果如下 : \n") ;
printf("\t1. --- %-5s --- %d\n" , res[0] . name , res[0] . num) ;
printf("\t2. --- %-5s --- %d\n" , res[1] . name , res[1] . num) ;
printf("\t3. --- %-5s --- %d\n" , res[2] . name , res[2] . num) ;
} else {
fprintf(stderr , "\n") ;
fprintf(stderr , "*** 无法打开输入文件 [%s] ***\n" , fn) ;
fprintf(stderr , "\n") ;
}
} else {
fprintf(stderr , "\n") ;
fprintf(stderr , "*** 无法创建输出文件 [%s] ***\n" , fn) ;
fprintf(stderr , "\n") ;
}
}
|
|