永发信息网

生日相同问题 程序无法正常运行,求指教

答案:2  悬赏:0  手机版
解决时间 2021-04-08 20:07
  • 提问者网友:箛茗
  • 2021-04-08 13:06
在一个有180人的大班级中,存在两个人生日相同的概率非常大,现给出每个学生的学号,出生月日。试找出所有生日相同的学生。
5
00508192 3 2
00508153 4 5
00508172 3 2
00508023 4 5
00509122 4 5

样例输出
3 2 00508192 00508172
4 5 00508153 00508023 00509122
下面是我的程序,编的两个viod函数无法正常运行
#include
#include
#include
#define Null 0
typedef struct{
char num[8];
int mon;
int day;
}DicStu;
struct Dic{
int n;
DicStu *element;
};
typedef struct Dic* PDic;
PDic creatDic(int m){
PDic stu=(PDic)malloc(sizeof(struct Dic));
if(stu!=Null){
stu->element=(DicStu*)malloc(sizeof(DicStu)*m);
stu->n=m;
return stu;
}
}

void insert(PDic stu,int p,char a[],int b,int c){
strcpy(stu->element[p].num,a);
stu->element[p].mon=b;
stu->element[p].day=c;
}

void Search(PDic stu,int a,int b){
int i;
printf("%d %d ",a,b);
while(in){
if(stu->element[i].mon==a&&stu->element[i].day==b)
printf("%s ",stu->element[i].num);
}
printf("\n");
}

void main(){
int n,i,j;
int b[12][31];

for(i=0;i<12;i++){
for(j=0;j<31;j++) b[i][j]=0;
}

scanf("%d",&n);

DicStu a[101];
PDic stu=creatDic(n);

for(i=0;i scanf("%s %d %d\n",a[i].num,&a[i].mon,&a[i].day);
insert(stu,i,a[i].num,a[i].mon,a[i].day);
}

for(i=0;i b[stu->element[i].mon][stu->element[i].day]++;
}

for(i=0;i<12;i++){
for(j=0;j<31;j++){
if(b[i][j]>1)
Search(stu,i,j);
}
}
}
最佳答案
  • 五星知识达人网友:空山清雨
  • 2021-04-08 13:26
如下函数i既没有初始值,又没有改变,那么while循环就是死循环了。
void Search(PDic stu,int a,int b){
int i;
printf("%d %d ",a,b);
while(in){
if(stu->element[i].mon==a&&stu->element[i].day==b)
printf("%s ",stu->element[i].num);
}
printf("\n");
}
修改后,但是不一定符合结果,自己再调试一下。
void Search(PDic stu,int a,int b){
int i = 0;
printf("%d %d ",a,b);
while((i++)n){
if(stu->element[i].mon==a&&stu->element[i].day==b)
printf("%s ",stu->element[i].num);
}
printf("\n");
}
全部回答
  • 1楼网友:一叶十三刺
  • 2021-04-08 14:36
任务占坑
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯