c语言编程 同一天生日:在一个有200人的大班级中,存在两个人生日相同的概率非常大。。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言编程 同一天生日:在一个有200人的大班级中,存在两个人生日相同的概率非常大。。相关的知识,希望对你有一定的参考价值。

c语言编程 同一天生日:在一个有200人的大班级中,存在两个人生日相同的概率非常大,现给出每个同学的学号,出生年月。是找出所有生日相同的学生。
Input
第一行为整数n,表示有n个学生,n<=200。
此后每行包含一个字符串和两个整数,分别表示学生的学号(字符串长度为11位)和出生月(1<=m<=12)
日(1<=d<=31)。
学号、月、日之间用一个空格分隔。
Output
对每组生日相同的学生,输出一行,其中前两个数字表示月和日,后面跟着所有在当天出生的学生的学号,数字、学号之间都用一个空格分隔。
对所有的输出,要求按日期从前到后的顺序输出。
对生日相同的学号,按输入的顺序输出。
Sample Input
6
07101020105 3 15
07101020115 4 5
07101020118 3 15
07101020108 4 5
07101020111 4 5
07101020121 8 10
Sample Output
3 15 07101020105 07101020118
4 5 07101020115 07101020108 07101020111
8 10 07101020121
看了您的回答很感谢。。不过 我还是个编程新手。。希望哪位高人 能写出程序源代码 谢谢啦。

创建数组:char[11][200],存储学号;
int m[200],d[200],存储生日的月日;
int n,记录学生的个数;
int i[200],用作记录排序的顺序;
按规定输入信息后,按月,日排序(先按月排好,再分别排日,可能需要很多临时变量哦),
把排序的顺序记录到i的数组中,i中存储的是生日由小到大的数字,
最后,根据i中的顺序,对比前后的生日,再输出吧。。。

当然,你也可以建个结构体来实现,有了结构体的指针,就不用i这个数组啦~

新手同学,学习编程就是要自己动手啊!
等你自己写的差不多了,我想老师还有知道高手都会乐意帮你改进滴~~
参考技术A 水题??
一个简单的办法是:开辟一个二维的vector数组,vec[12][31],用于记录输入的这些月日是否在对应的出现过.
就是说假设是3月15号,那么向vec[2][14]中push_back()这个人的学号.
输入完毕后,整体搜索这个vec,如果它的大小不是0,就输出下标,也就是日期,然后输出里面的内容就行了.

呵呵,就是新手才要练习啦.估计是做哪个OJ上的题目吧,在google上搜索OJ的名字+题号,一般都会有人写blog的,参考他们的就好.OJ的名字最好用常用的简称,例如北大的oj就是简称poj.自己再想想,多思考才会有益处嘛.直接代码并不是件好事,呵呵.

怎样用c语言编写以年月日的格式输入一个人的生日和当前日期,来计算这个人的年龄

参考技术A 我给你写的不仅能显示年龄而且能显示距现在的天数。当前日期无需输入,程序自动调取系统日期。。运行过了没有任何问题。有什么问题可以交流下。

#include <stdio.h>
#include<time.h>
//计算给定的日期是本年的第几天
int count(int year,int month,int day)
int i,sum=0,flag=0;
int a[13]=0,31,28,31,30,31,30,31,31,30,31,30,31;
for(i=1;i<month;i++)
sum=a[i]+sum;
if(year%400==0||year%100!=0&&year%4==0)
flag=1;
if(flag==1&&month>2) sum++;
sum=sum+day;

return sum;



int main()

int year,month,day;
time_t t;
struct tm *local;
int sum=0,i;
t=time(NULL);
local=localtime(&t);
printf("今天的日期:%d年%d月%d日\n",local->tm_year+1900,local->tm_mon+1,local->tm_mday);
printf("输入生日:");
scanf("%d%d%d",&year,&month,&day);
for(i=year+1;i<local->tm_year+1900;i++)

if(i%400==0||i%100!=0&&i%4==0)
sum+=366;
else sum+=365;

if((year%400==0||year%100!=0&&year%4==0))
sum+=366-count(year,month,day);
else sum+=365-count(year,month,day);
sum+=count(local->tm_year+1900,local->tm_mon+1,local->tm_mday);
printf("%d年%d月%d日距今天有%d天\n",year,month,day,sum);
printf("\n你的年龄为%d\n",local->tm_year+1900-year);



c编程高手团队正在招新,有意者速速行动,一起学习,一起努力!

以上是关于c语言编程 同一天生日:在一个有200人的大班级中,存在两个人生日相同的概率非常大。。的主要内容,如果未能解决你的问题,请参考以下文章

生日相同 2.0

生日悖论是什么?我用它省了上百G的内存

怎样用c语言编写以年月日的格式输入一个人的生日和当前日期,来计算这个人的年龄

Python 排列组合

生日悖论是啥?我用它省了上百G的内存

生日快乐c语言