分享一下今天的代码,今天都是自己写对的,有时间换算,还有有理数相加,还有结构体的

 

 这是第一题

本题要求编写程序,以hh:mm:ss的格式输出某给定时间再过n秒后的时间值(超过23:59:59就从0点开始计时)。

输入格式:

输入在第一行中以hh:mm:ss的格式给出起始时间,第二行给出整秒数n(<60)。

输出格式:

输出在一行中给出hh:mm:ss格式的结果时间。

#include
int main()
{
    int a,b,c;
    scanf("%d:%d:%d\n",&a,&b,&c);
    int m,f=0,s=0,q=0,l=0;
    scanf("%d",&m);
    f=a*3600+b*60+c+m;  /这个代码的关键就是它,把时间换成秒为单位,然后再重新折合成时,分,秒/
    s=f/3600;
    q=f%3600/60;
    l=f%3600%60;
    if(s>=24)
    {s=s-24;}           /24点就用0点来记,以此类推/
    printf("%02d:%02d:%02d",s,q,l);
}

第二题

本题要求编写程序,计算两个有理数的和。

输入格式:

输入在一行中按照a1/b1 a2/b2的格式给出两个分数形式的有理数,其中分子和分母全是整形范围内的正整数。

输出格式:

在一行中按照a/b的格式输出两个有理数的和。注意必须是该有理数的最简分数形式,若分母为1,则只输出分子。

输入样例1:

1/3 1/6

输出样例1:

1/2
#include
int main()
{
    int a1,b1,a2,b2;
    scanf("%d/%d %d/%d",&a1,&b1,&a2,&b2);
    int f,h,a,b,n;
    f=b1*b2;
    h=a1*b2+a2*b1;  /这里采用通分的办法相加/
    if(h%f==0)
    {printf("%d",h/f);}/这是排除整数的情况/
    else
    {
    b=f%h;
    a=h;
    while(b>0)
    {
    n=b;
    b=a%n;
    a=n;           /这里是找出分子分母的最大公因数,用每次相除的较小数除以余数即可/
    }
    printf("%d/%d",h/n,f/n);
    }
}

下来就是几个关于结构体的,思路不太难

这个是通讯录

输入n个朋友的信息,包括姓名、生日、电话号码,本题要求编写程序,按照年龄从大到小的顺序依次输出通讯录。题目保证所有人的生日均不相同。

输入格式:

输入第一行给出正整数n(<10)。随后n行,每行按照“姓名 生日 电话号码”的格式给出一位朋友的信息,其中“姓名”是长度不超过10的英文字母组成的字符串,“生日”是yyyymmdd格式的日期,“电话号码”是不超过17位的数字及+-组成的字符串。

输出格式:

按照年龄从大到小输出朋友的信息,格式同输出。

输入样例:

3
zhang 19850403 13912345678
wang 19821020 +86-0571-88018448
qian 19840619 13609876543

输出样例:

wang 19821020 +86-0571-88018448
qian 19840619 13609876543
zhang 19850403 13912345678
#include
struct student
{
    char name[100];
    int a;
    char b[100];
};
int main()
{
    struct student s[100];
    int n,i,j=0,l=0;
    scanf("%d\n",&n);
    for(i=0;is[j].a)
        {
        s[n]=s[i];
        s[i]=s[j];
        s[j]=s[n];
        }
        }
    }
    for(i=0;i
 这个一帮一的可能不太好想

“一帮一学习小组”是中小学中常见的学习组织方式,老师把学习成绩靠前的学生跟学习成绩靠后的学生排在一组。本题就请你编写程序帮助老师自动完成这个分配工作,即在得到全班学生的排名后,在当前尚未分组的学生中,将名次最靠前的学生与名次最靠后的异性学生分为一组。

输入格式:

输入第一行给出正偶数N(≤50),即全班学生的人数。此后N行,按照名次从高到低的顺序给出每个学生的性别(0代表女生,1代表男生)和姓名(不超过8个英文字母的非空字符串),其间以1个空格分隔。这里保证本班男女比例是1:1,并且没有并列名次。

输出格式:

每行输出一组两个学生的姓名,其间以1个空格分隔。名次高的学生在前,名次低的学生在后。小组的输出顺序按照前面学生的名次从高到低排列。

输入样例:

8
0 Amy
1 Tom
1 Bill
0 Cindy
0 Maya
1 John
1 Jack
0 Linda

输出样例:

Amy Jack
Tom Linda
Bill Maya
Cindy John
#include
struct student
{
    int sex;
    char name[100];
    int xuhao;
};
int main()
{
    struct student s[100];
    int n,i,f=1,j=0;
    scanf("%d\n",&n);
    int h=n/2;
    for(i=0;i
 这个可以看看

每个 PAT 考生在参加考试时都会被分配两个座位号,一个是试机座位,一个是考试座位。正常情况下,考生在入场时先得到试机座位号码,入座进入试机状态后,系统会显示该考生的考试座位号码,考试时考生需要换到考试座位就座。但有些考生迟到了,试机已经结束,他们只能拿着领到的试机座位号码求助于你,从后台查出他们的考试座位号码。

输入格式:

输入第一行给出一个正整数 N(≤1000),随后 N 行,每行给出一个考生的信息:准考证号 试机座位号 考试座位号。其中准考证号由 16 位数字组成,座位从 1 到 N 编号。输入保证每个人的准考证号都不同,并且任何时候都不会把两个人分配到同一个座位上。

考生信息之后,给出一个正整数 M(≤N),随后一行中给出 M 个待查询的试机座位号码,以空格分隔。

输出格式:

对应每个需要查询的试机座位号码,在一行中输出对应考生的准考证号和考试座位号码,中间用 1 个空格分隔。

输入样例:

4
3310120150912233 2 4
3310120150912119 4 1
3310120150912126 1 3
3310120150912002 3 2
2
3 4

输出样例:

3310120150912002 2
3310120150912119 1
#include
struct student
{
    long int a;/这个注意长整型就好/
    int b;
    int c;
};
int main()
{
    struct student s[1000];
    int n,M,a[1000],i,j;
    scanf("%d\n",&n);
    for(i=0;i

你可能感兴趣的:(算法,数据结构)