
--------------------------------------------------------------------------------
计算两个复数之积
本题要求实现一个计算复数之积的简单函数。
函数接口定义:
struct complex multiply(struct complex x, struct complex y);其中struct complex是复数结构体,其定义如下:
struct complex{
    int real;
    int imag;
};裁判测试程序样例:
#include <stdio.h>
struct complex{
    int real;
    int imag;
};
struct complex multiply(struct complex x, struct complex y);
int main()
{
    struct complex product, x, y;
    scanf("%d%d%d%d", &x.real, &x.imag, &y.real, &y.imag);
    product = multiply(x, y);
    printf("(%d+%di) * (%d+%di) = %d + %di\n", 
            x.real, x.imag, y.real, y.imag, product.real, product.imag);
    
    return 0;
}
/* 你的代码将被嵌在这里 */输入样例:
3 4 5 6输出样例:
(3+4i) * (5+6i) = -9 + 38istruct complex multiply(struct complex x, struct complex y)
{
    struct complex multiply;
    multiply.real=x.real*y.real-x.imag*y.imag;
    multiply.imag=x.real*y.imag+x.imag*y.real;
    return multiply;
}按等级统计学生成绩
本题要求实现一个根据学生成绩设置其等级,并统计不及格人数的简单函数。
函数接口定义:
int set_grade( struct student *p, int n );其中p是指向学生信息的结构体数组的指针,该结构体的定义为:
struct student{
    int num;
    char name[20];
    int score;
    char grade;
};n是数组元素个数。学号num、姓名name和成绩score均是已经存储好的。set_grade函数需要根据学生的成绩score设置其等级grade。等级设置:85-100为A,70-84为B,60-69为C,0-59为D。同时,set_grade还需要返回不及格的人数。
裁判测试程序样例:
#include <stdio.h>
#define MAXN 10
struct student{
    int num;
    char name[20];
    int score;
    char grade;
};
int set_grade( struct student *p, int n );
int main()
{   struct student stu[MAXN], *ptr;
    int n, i, count;
    
    ptr = stu;
    scanf("%d\n", &n);
    for(i = 0; i < n; i++){
       scanf("%d%s%d", &stu[i].num, stu[i].name, &stu[i].score);
    } 
   count = set_grade(ptr, n);
   printf("The count for failed (<60): %d\n", count);
   printf("The grades:\n"); 
   for(i = 0; i < n; i++)
       printf("%d %s %c\n", stu[i].num, stu[i].name, stu[i].grade);
    return 0;
}
/* 你的代码将被嵌在这里 */输入样例:
10
31001 annie 85
31002 bonny 75
31003 carol 70
31004 dan 84
31005 susan 90
31006 paul 69
31007 pam 60
31008 apple 50
31009 nancy 100
31010 bob 78输出样例:
The count for failed (<60): 1
The grades:
31001 annie A
31002 bonny B
31003 carol B
31004 dan B
31005 susan A
31006 paul C
31007 pam C
31008 apple D
31009 nancy A
31010 bob Bint set_grade( struct student *p, int n ){
    int i,count=0;
    for(i=0;i<n;i++){
        if(p->score>=85)p->grade='A';
        else if(p->score<85&&p->score>=70)p->grade='B';
        else if(p->score<70&&p->score>=60)p->grade='C';
        else {
            p->grade='D';
            count++;
        }
        p++;
    }
    return count;
}时间换算
本题要求编写程序,以hh:mm:ss的格式输出某给定时间再过n秒后的时间值(超过23:59:59就从0点开始计时)。
输入在第一行中以hh:mm:ss的格式给出起始时间,第二行给出整秒数n(<60)。
输出在一行中给出hh:mm:ss格式的结果时间。
11:59:40
3012:00:10#include<stdio.h>
struct time 
{
    int hour;
    int minute;
    int second;
};
int main(void)
{
    struct time t;
    int n;
    scanf("%d:%d:%d", &t.hour, &t.minute, &t.second); 
    scanf("%d", &n); 
    if (n < 60 && n>=0) 
    {
        if ((t.second + n)>=60) 
        { 
            t.second = t.second + n - 60;
            if (t.minute == 59) 
            { 
                t.minute = 00;
                if (t.hour == 23) 
                {
                    t.hour = 00;
                }
                else 
                {
                    t.hour++;
                }
            }
            else 
            {
                t.minute++;
            }
        }else 
        {
            t.second = t.second + n;
        }
        printf("%02d:%02d:%02d", t.hour, t.minute, t.second);
}
return 0;
}
查找书籍
给定n本书的名称和定价,本题要求编写程序,查找并输出其中定价最高和最低的书的名称和定价。
输入第一行给出正整数n(<10),随后给出n本书的信息。每本书在一行中给出书名,即长度不超过30的字符串,随后一行中给出正实数价格。题目保证没有同样价格的书。
在一行中按照“价格, 书名”的格式先后输出价格最高和最低的书。价格保留2位小数。
3
Programming in C
21.5
Programming in VB
18.5
Programming in Delphi
25.025.00, Programming in Delphi
18.50, Programming in VB#include<stdio.h>
#include<string.h>
struct book
{
    double price;
    char name[50];
};
int main()
{
    int n;
    scanf("%d",&n);
    struct book book[100];
    int i=0;
    int max=0;
    int min=0;
    for(i=0;i<n;i++)
    {
        getchar();
        gets(book[i].name);
        scanf("%lf",&book[i].price);
            if(book[i].price>book[max].price)
            {
                max=i;
            }
        if(book[i].price<book[min].price)
        {
            min=i;
        }
    }
    printf("%.2lf, %s\n", book[max].price, book[max].name);
    printf("%.2lf, %s\n", book[min].price, book[min].name);
}
通讯录排序
输入n个朋友的信息,包括姓名、生日、电话号码,本题要求编写程序,按照年龄从大到小的顺序依次输出通讯录。题目保证所有人的生日均不相同。
输入第一行给出正整数n(<10)。随后n行,每行按照“姓名 生日 电话号码”的格式给出一位朋友的信息,其中“姓名”是长度不超过10的英文字母组成的字符串,“生日”是yyyymmdd格式的日期,“电话号码”是不超过17位的数字及+、-组成的字符串。
按照年龄从大到小输出朋友的信息,格式同输出。
3
zhang 19850403 13912345678
wang 19821020 +86-0571-88018448
qian 19840619 13609876543wang 19821020 +86-0571-88018448
qian 19840619 13609876543
zhang 19850403 13912345678#include<stdio.h>
int main()
{
    int n;
    scanf("%d",&n);
    struct friend{
    char a[11];
    int date;
    char b[20];
}c[9],p;
    int i;
    for(i=0;i<n;i++)
    {
        scanf("%s%d%s",&c[i].a,&c[i].date,&c[i].b);
    }
    for(i=0;i<n-1;i++)
    {
        int j=0;
        for(;j<n-1;j++)
        {
            if(c[j].date>c[j+1].date){
                p=c[j];c[j]=c[j+1];c[j+1]=p;
            }
        }
    }
    for(i=0;i<n;i++)
    {
        printf("%s %d %s\n",c[i].a,c[i].date,c[i].b);
    }
    return 0;
}
计算职工工资
给定N个职员的信息,包括姓名、基本工资、浮动工资和支出,要求编写程序顺序输出每位职员的姓名和实发工资(实发工资=基本工资+浮动工资-支出)。
输入在一行中给出正整数N。随后N行,每行给出一位职员的信息,格式为“姓名 基本工资 浮动工资 支出”,中间以空格分隔。其中“姓名”为长度小于10的不包含空白字符的非空字符串,其他输入、输出保证在单精度范围内。
按照输入顺序,每行输出一位职员的姓名和实发工资,间隔一个空格,工资保留2位小数。
3
zhao 240 400 75
qian 360 120 50
zhou 560 150 80zhao 565.00
qian 430.00
zhou 630.00#include<stdio.h>
int main()
{
    int i,n;
    scanf("%d",&n);
    struct information
{
    char name[10];
    float jbgz;
    float fdgz;
    float exp;
}information[n];
    
    for(i=0;i<n;i++)
    {
        scanf("%s%f%f%f",information[i].name,&information[i].jbgz,&information[i].fdgz,&information[i].exp);;
    }
    for(i=0;i<n;i++)
    {
        printf("%s %.2f\n",information[i].name,information[i].jbgz+information[i].fdgz-information[i].exp);
    }
    return 0;
}计算平均成绩
给定N个学生的基本信息,包括学号(由5个数字组成的字符串)、姓名(长度小于10的不包含空白字符的非空字符串)和成绩([0,100]区间内的整数),要求计算他们的平均成绩,并顺序输出平均线以下的学生名单。
输入在一行中给出正整数N(≤10)。随后N行,每行给出一位学生的信息,格式为“学号 姓名 成绩”,中间以空格分隔。
首先在一行中输出平均成绩,保留2位小数。然后按照输入顺序,每行输出一位平均线以下的学生的姓名和学号,间隔一个空格。
5
00001 zhang 70
00002 wang 80
00003 qian 90
10001 li 100
21987 chen 6080.00
zhang 00001
chen 21987#include <stdio.h>
struct stdent
{
    int id[5];
    char name[10];
    int grade;
}stu[10];
int main()
{
    int i, j, N, sum;
    double average;
    
    scanf("%d", &N);
    for (sum = i = 0; i < N; i++)
    {
        scanf("%s %s %d", stu[i].id, stu[i].name, &stu[i].grade);
        sum += stu[i].grade;
    }
    average = sum/N;
    printf("%.2lf\n", average);
    for (i = 0; i < N; i++)
    {
        if (stu[i].grade < average)
            printf("%s %s\n", stu[i].name, stu[i].id);
    }
    
    return 0;
}










