qq_46263796 2021-11-12 14:21 采纳率: 100%
浏览 65
已结题

代码错误怎么修改啊大神们

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<malloc.h>
#define N9//假设选手人数不超过9
typedef struct node
info[N+1]; //就显示这错了
info*p;
{
int num;// 编号
char name[20];// 姓名
int sum;// 票数
}

int numbers;//总共的选手人数
FILEfp;
void tianjia()
{
int i=1,n;
char a[10],b[10];
p=(info
)malloc(sizeof(info));
if((fp=fopen("xuanshou.txt","r"))!=NULL)
{
fscanf(fp,"%d%s\n",&p[i]-> num,p[i]-> name);
i++;
fclose(fp);
printf("读取文件记录成功!\n");
}
else
{
printf("不存在记录文件,请输入选手的数量:\n");
scanf("%d",&n) ;getchar();
numbers=n;
printf("请输入%d名选手的编号的姓名:\n",n)
while(n--)
{
scanf("%d%s",&p[i]->num,p[i]->name);
getchar();
i++;
}
printf("输入完成");
}
printf("选手信息如下:\n");
printf("编号姓名\n");
for(i=1;i<=number;i++)
printf("%d %s\n",p[i]->num,p[i]->name);
}
void toupiao()
{
int i,n;
for(i=1;i<=numbers;i++)
p[i->sum=0]
printf("投票开始啦!n");
printf("请观众通过按键进行投票,按'1为1号选手投票");
printf("按’2”为2号选手投票,以此类推,以按’。作为投票结束标记\n");
printf("投票现在正式开始:n");
while(1)
{
scanf("%d",&n);getchar);
if(n==0)
break;
while(n<1]In>numbers)
{
printf("不存在此号码,请重新输入:");
scanf("%d'",&n);
}
p[n]->sum ++;
}
printf("投票完成!\n");
printf("投票情况如下:\n");
printf("编号 姓名 票数\n");
for(i=1;i<=numbers;i++)
printf("%d %5 %d\n" p[i]->num p[i]->name ,p[i]->sum );
}
//希尔排序
void shellinsert(info *R,int n,int dk)
{
int i,j;
for(i=dk+1-i<=n;i++)
{
if(R[i]->sum >R[i-dk]->sum )
{ //小小于时,需R[i]将插入有序表
*R[0] =*R[i];//存储待插入的记录
for(j=i-dk;j>0&&R[j]->sum <R[0]->sum ;j=j-dk)
*R[j+dk]=*R[j];//记录后移
*R[j+dk]=*R[O];//插入到正确位置
}
}
}
void shellsort(info *R,int n)
{
int i; int mm=1:
inttf10]={21,19,17,13,11,7,5,3,2,1};//步长因子中除1外没有公因子,且最后一 个步长因子必须为1
for(i=0;i<10;i++)
shellinsert(R,n,t[i]);//调用每个步长网子
printf("最终排名如下:\n");
printf("名次 编号 姓名票数\n");
for(i=1;i<=numbers;i++)
{
if(i>=2&&p[i]->sum <p[i-1]->sum )
mm++;
printf("%d %d %s %d\n", mm,p[i]->num ,p[i]->name ,p[i]->sum );
}
}
void menu()
{
printf("电视大赛观众投票及排名系统 \n\n\n");
printf("1添加选手信息\n 2投票\n 3排序\n 4退出\n");
}
void main()
{
char n;
while(1)
{
menu();
printf("\n 请输入您要选择的操作序号,按回车键确认:");
scanf("%c",&n);getchar();
while(n<'1'||n>'4')
{
printf("输入错误,请重新输入:");
scanf("%c",&n);getchar();
}
switch(n-48)
{
case 1: tianjia():break:
case 2: toupiao();break;
case 3: shellsort(p,numbers);system("pause");break;
case 4: printf("谢谢使用,再见!");
exit(0);
}
}
}

  • 写回答

1条回答 默认 最新

  • 关注

    结构体不是这么用的啊,参考如下:

    typedef struct node 
    {
        int num;
        char name[20];
        int sum;
    }info;
    
    info ss[N+1];  //info[N+1]; //就显示这错了
    info* p;
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月20日
  • 已采纳回答 11月12日
  • 创建了问题 11月12日

悬赏问题

  • ¥15 ogg dd trandata 报错
  • ¥15 高缺失率数据如何选择填充方式
  • ¥50 potsgresql15备份问题
  • ¥15 Mac系统vs code使用phpstudy如何配置debug来调试php
  • ¥15 目前主流的音乐软件,像网易云音乐,QQ音乐他们的前端和后台部分是用的什么技术实现的?求解!
  • ¥60 pb数据库修改与连接
  • ¥15 spss统计中二分类变量和有序变量的相关性分析可以用kendall相关分析吗?
  • ¥15 拟通过pc下指令到安卓系统,如果追求响应速度,尽可能无延迟,是不是用安卓模拟器会优于实体的安卓手机?如果是,可以快多少毫秒?
  • ¥20 神经网络Sequential name=sequential, built=False
  • ¥16 Qphython 用xlrd读取excel报错