首页 > 其他分享 >PTA|C语言|结构体

PTA|C语言|结构体

时间:2023-12-09 17:00:45浏览次数:31  
标签:输出 struct int 样例 PTA C语言 grade complex 结构

PTA|C语言|结构体_Programming

--------------------------------------------------------------------------------

计算两个复数之积

本题要求实现一个计算复数之积的简单函数。

函数接口定义:

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 + 38i
struct 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 B
int 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
30
输出样例:
12: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.0
输出样例:
25.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 13609876543
输出样例:
wang 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 80
输出样例:
zhao 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 60
输出样例:
80.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;
}

标签:输出,struct,int,样例,PTA,C语言,grade,complex,结构
From: https://blog.51cto.com/heliotopekxy/8750709

相关文章

  • 7-8次PTA和期末成绩总结
     (1)前言:总结之前所涉及到的知识点、题量、难度等情况课程成绩统计程序-3在第二次的基础上修改了计算总成绩的方式(修改类结构,将成绩类的继承关系改为组合关系,成绩信息由课程成绩类和分项成绩类组成,课程成绩类组合分项成绩类,分项成绩类由成绩分值和权重两个属性构成)。......
  • 记录issue:iptables (legacy): Couldn't load match `comment':No such file or direct
    用nerdctl起容器碰到如下issue:FATA[0001]failedtocreateshimtask:OCIruntimecreatefailed:runccreatefailed:unabletostartcontainerprocess:errorduringcontainerinit:errorrunninghook#0:errorrunninghook:exitstatus1,stdout:,stderr:tim......
  • Redis数据结构2:REDIS_STRING(SDS)
    REDIS_STRING(SDS)SDS全称SimpleDynamicString(简单动态字符串),是专为Redis设计的简易字符串实现。Redis并未采用C语言传统字符串char*,而是自己设计了一套字符串实现标准。传统字符串的缺陷C语言字符串实际上就是一个以'\0'结尾的字符数组。例如:char*myName="ErickRen";......
  • iptables 学习
    iptables一、图二、规则写法格式:iptables[-ttable]COMMANDchainCRETIRIA-jACTION-ttable:3个filternatmangleCOMMAND:定义如何对规则进行管理chain指定你接下来的规则到底是在哪个链上操作的,当定义策略的时候是可以省略的CRETIRIA:指定匹配标准-jA......
  • PTA-第三次机考题解
    PTA-第三次机考题解7-1玩游戏一典型的二分模版题,之前发的第十一次练习题目中对二分有详细的讲解,这道题就是二分的第二种模版,原封不动。相信认真看过的同学还是有思路的。嘿嘿!给没有看过的同学下面再讲一次二分:直接讲整数二分,浮点数二分只需要修改细节就好(直接讲两种模版,所有......
  • 通过C语言的API预处理管理MySQL
    一、C的API预处理语句MySQL客户端/服务器协议提供了预处理语句。该功能采用了由mysql_stmt_init()初始化函数返回的MYSQL_STMT语句处理程序数据结构。对于多次执行的语句,预处理执行是一种有效的方式。首先对语句进行解析,为执行作好准备。接下来,在以后使用初始化函数返回的语句句柄......
  • Day23 循环结构-while循环
    循环结构-while循环循环结构分为while循环do.....while循环for循环在Java5中引入了一种主要用于数组的增强型for循环while循环while循环是最基本的循环,它的结构为:while(布尔表达式){//循环内容}只要布尔表达式为true,循环就会一直执行下去。我们大多数......
  • 12.9 蓝桥杯 huffuman树c语言
    今天学习了蓝桥杯的huffuman树,总结如下:问题描述Huffman树在编码中有着广泛的应用。在这里,我们只关心Huffman树的构造过程。给出一列数{pi}={p0,p1,…,pn-1},用这列数构造Huffman树的过程如下:1.找到{pi}中最小的两个数,设为pa和pb,将pa和pb从{pi}中删除掉,然后将它们的和加......
  • 数据结构
    数据结构一、STL简介标准模板库,使用时只需要调用别人写好的程序,便能实现相应的功能。需要注意的是,使用STL有时代码的运行效率比较低,在信息学竞赛中使用STL需要关注代码效率问题。STL组件主要包含迭代器,容器和算法三部分。⦁迭代器要访问容器中的元素需要通过迭代器来进行。......
  • PTA-2023第十二次练习题目题解
    PTA-2023第十二次练习题目题解(祝大家机考顺利)以下代码已做防抄袭处理,切勿抄袭。注意:手机端因为屏幕限制,代码会有(不希望的)换行。解决方案:1.建议使用电脑端打开。2.点击代码进入全屏观看。6-24实验8_3_设计函数利用冒泡排序的思想,将每一列的最小值放到每列的最后一个位置。voi......