PTA OJ 合集 C语言

news2024/11/26 4:23:22

目录

7-1 查找整数

7-2 大笨钟的心情

7-3 将数组中的数逆序存放

7-6 矩阵运算

7-7 求矩阵的局部极大值

7-8 矩阵A乘以B

7-9 找鞍点

6-1 查找数组元素最大值

6-2 在数组中查找指定元素

7-5 求数列之和[A]

6-3 使用函数的选择法排序

6-5 计算天数[2]

6-4 求矩阵不靠边元素之和

7-4 二分查找法之过程

6-6 数组循环右移

7-11 查找指定字符

7-12 凯撒密码

7-14 字符串排序

6-8 歌唱比赛打分

7-1 找最长的字符串

7-4 输出学生成绩

7-3 矩阵边界和

7-5 查找奥运五环色的位置

6-1 计算两数的和与差

6-2 使用函数找出数组中的最大值

6-3 在数组中查找指定元素

6-4 查找星期

6-5 字符串的连接

6-6 分类统计字符个数

6-7 移动字母

6-8 利用指针找最大值

7-1 平面向量加法

7-2 计算平均成绩

7-3 计算职工工资

7-6 有理数比较

7-7 通讯录排序

7-5 时间换算

6-1 计算两个复数之积

6-2 按等级统计学生成绩

6-3 Add Two Complex Numbers by Passing Structure to a Function

6-4 学生成绩比高低

6-5 修改学生成绩

7-1 学生信息的那些操作

7-2 学生信息的那些操作

7-3 学生信息的那些操作

7-4 学生信息的那些操作

7-7 学生信息的那些操作

7-6 寻找250

7-5 求整数段和

7-4 谁是赢家

6-1 使用递归函数计算1到n之和

6-2 递归实现指数函数

6-3 递归计算Ackermenn函数

6-4 递归求Fabonacci数列

6-8 递归计算P函数

6-1 两整数排序(降序)

6-2 计算两数的和与差

6-3 使用函数找出数组中的最大值

6-4 在数组中查找指定元素

6-5 查找星期

6-6 字符串的连接

7-1 输出平均分最高的学生信息


7-1 查找整数

分数 10

本题要求从输入的N个整数中查找给定的X。如果找到,输出X的位置(从0开始数);如果没有找到,输出“Not Found”。


输入格式

输入在第一行中给出两个正整数N(≤20)和X,第二行给出N个整数。数字均不超过长整型,其间以空格分隔。

输出格式

在一行中输出X的位置,或者“Not Found”。


输入样例1

5 7
3 5 7 1 9

输出样例1

2

输入样例2

5 7
3 5 8 1 9

输出样例2

Not Found

代码长度限制16 KB

时间限制400 ms

内存限制64 MB


代码内容

#include <stdio.h>

int main()
{
    int N,X;
    scanf("%d %d",&N,&X);
    int arr[N];
    int i=0;
    for(i=0;i<N;i++)
    {
        scanf("%d",&arr[i]);
    }
    for(i=0;i<N;i++)
    {
        if(arr[i]==X)
        {
            printf("%d",i);
            break;
        }
    }
    if(arr[i]!=X)
    {
        printf("Not Found");
    }
    
    return 0;
}

7-2 大笨钟的心情

分数 15

有网友问:未来还会有更多大笨钟题吗?笨钟回复说:看心情……

本题就请你替大笨钟写一个程序,根据心情自动输出回答。

输入格式

输入在一行中给出 24 个 [0, 100] 区间内的整数,依次代表大笨钟在一天 24 小时中,每个小时的心情指数。

随后若干行,每行给出一个 [0, 23] 之间的整数,代表网友询问笨钟这个问题的时间点。当出现非法的时间点时,表示输入结束,这个非法输入不要处理。题目保证至少有 1 次询问。

输出格式

对每一次提问,如果当时笨钟的心情指数大于 50,就在一行中输出 心情指数 Yes,否则输出 心情指数 No。

输入样例

80 75 60 50 20 20 20 20 55 62 66 51 42 33 47 58 67 52 41 20 35 49 50 63
17
7
3
15
-1

输出样例

52 Yes
20 No
50 No
58 Yes

代码长度限制16 KB

Java (javac)

时间限制600 ms

内存限制64 MB

其他编译器

时间限制400 ms

内存限制64 MB

代码内容

#include <stdio.h>

int main()
{
    int arr[24];
    int i,n;
    for(i=0;i<24;i++){
        scanf("%d",&arr[i]);
    }
    while(1){
        scanf("%d",&n);
        if(n<0||n>23){
            break;
        }
        if(arr[n]>50){
            printf("%d Yes\n",arr[n]);
        }else{
            printf("%d No\n",arr[n]);
        }
    }
    return 0;
}

7-3 将数组中的数逆序存放

分数 20

本题要求编写程序,将给定的n个整数存入数组中,将数组中的这n个数逆序存放,再按顺序输出数组中的元素。

输入格式

输入在第一行中给出一个正整数n(1≤n≤10)。第二行输入n个整数,用空格分开。

输出格式

在一行中输出这n个整数的处理结果,相邻数字中间用一个空格分开,行末不得有多余空格。

输入样例

4
10 8 1 2

输出样例

2 1 8 10

代码长度限制16 KB

时间限制400 ms

内存限制64 MB

代码内容

#include <stdio.h>

int main()
{
    int n=0;
    scanf("%d",&n);
    int arr[10];
    int i=0;
    for(i=0;i<n;i++)
    {
        scanf("%d",&arr[i]);
    }
    int tmp=0;
    for(i=0;i<n/2;i++)
    {
        tmp=arr[i];
        arr[i]=arr[n-1-i];
        arr[n-1-i]=tmp;
    }
   for(i=0;i<n;i++)
   {
       printf("%d",arr[i]);
       if(i!=n-1)
       {
           printf(" ");
       }
   }
    return 0;
}

7-6 矩阵运算

分数 20

给定一个n×n的方阵,本题要求计算该矩阵除副对角线、最后一列和最后一行以外的所有元素之和。副对角线为从矩阵的右上角至左下角的连线。

输入格式

输入第一行给出正整数n(1<n≤10);随后n行,每行给出n个整数,其间以空格分隔。

输出格式

在一行中给出该矩阵除副对角线、最后一列和最后一行以外的所有元素之和。

输入样例

4
2 3 4 1
5 6 1 1
7 1 8 1
1 1 1 1

输出样例

35

代码长度限制16 KB

时间限制400 ms

内存限制64 MB

代码内容

#include <stdio.h>

int main()
{
    int n=0;
    scanf("%d\n",&n);
    int sum=0;
    int arr[n][n];
    int i=0;
    int j=0;
    for(i=0;i<n;i++)
    {
        for(j=0;j<n;j++)
        {
            scanf("%d",&arr[i][j]);
        }
    }
    for(i=0;i<n;i++)
    {
        for(j=0;j<n;j++)
        {
            if(i==n-1||j==n-1||i+j==n-1)
            continue;
            else
            sum+=arr[i][j];
        }
    }
    printf("%d",sum);
    return 0;
}

7-7 求矩阵的局部极大值

分数 15

给定MN列的整数矩阵A,如果A的非边界元素A[i][j]大于相邻的上下左右4个元素,那么就称元素A[i][j]是矩阵的局部极大值。本题要求给定矩阵的全部局部极大值及其所在的位置。

输入格式

输入在第一行中给出矩阵A的行数M和列数N(3≤M,N≤20);最后M行,每行给出A在该行的N个元素的值。数字间以空格分隔。

输出格式

每行按照“元素值 行号 列号”的格式输出一个局部极大值,其中行、列编号从1开始。要求按照行号递增输出;若同行有超过1个局部极大值,则该行按列号递增输出。若没有局部极大值,则输出“None 总行数 总列数”。

输入样例1

4 5
1 1 1 1 1
1 3 9 3 1
1 5 3 5 1
1 1 1 1 1

输出样例1

9 2 3
5 3 2
5 3 4

输入样例2

3 5
1 1 1 1 1
9 3 9 9 1
1 5 3 5 1

输出样例2

None 3 5

代码长度限制16 KB

时间限制400 ms

内存限制64 MB

代码内容

#include <stdio.h>

int main()
{
    int m,n;
    scanf("%d %d\n",&m,&n);
    int arr[m][n];
    int count=0;
    int i=0;
    int j=0;
    for(i=0;i<m;i++)
    {
        for(j=0;j<n;j++)
        {
            scanf("%d",&arr[i][j]);
        }
    }
    for(i=1;i<m-1;i++)
    {
        for(j=1;j<n-1;j++)
        {
                if(arr[i][j]>arr[i-1][j]&&arr[i][j]>arr[i+1][j]&&arr[i][j]>arr[i][j-1]&&arr[i][j]>arr[i][j+1])
                {
                    printf("%d %d %d\n",arr[i][j],i+1,j+1);
                    count++;
                }
        }
    }
    if(count==0)
    {
        printf("None %d %d",m,n);
    }
    return 0;
}

7-8 矩阵A乘以B

分数 15

给定两个矩阵AB,要求你计算它们的乘积矩阵AB。需要注意的是,只有规模匹配的矩阵才可以相乘。即若ARa行、Ca列,BRb行、Cb列,则只有CaRb相等时,两个矩阵才能相乘。

输入格式

输入先后给出两个矩阵AB。对于每个矩阵,首先在一行中给出其行数R和列数C,随后R行,每行给出C个整数,以1个空格分隔,且行首尾没有多余的空格。输入保证两个矩阵的RC都是正数,并且所有整数的绝对值不超过100。

输出格式

若输入的两个矩阵的规模是匹配的,则按照输入的格式输出乘积矩阵AB,否则输出Error: Ca != Rb,其中Ca是A的列数,Rb是B的行数。

输入样例1

2 3
1 2 3
4 5 6
3 4
7 8 9 0
-1 -2 -3 -4
5 6 7 8

输出样例1

2 4
20 22 24 16
53 58 63 28

输入样例2

3 2
38 26
43 -5
0 17
3 2
-11 57
99 68
81 72

输出样例2

Error: 2 != 3

代码长度限制16 KB

时间限制400 ms

内存限制64 MB

代码内容

#include <stdio.h>

int main()
{
    int m1,n1,m2,n2;
    scanf("%d %d",&m1,&n1);
    int arr[100][100];
    int arr1[100][100];
    int i=0;
    int j=0;
    int k=0;
    for(i=0;i<m1;i++)
    {
        for(j=0;j<n1;j++)
        {
            scanf("%d",&arr1[i][j]);
        }
    }
    scanf("%d %d",&m2,&n2);
    int arr2[100][100];
    for(i=0;i<m2;i++)
    {
        for(j=0;j<n2;j++)
        {
            scanf("%d",&arr2[i][j]);
        }
    }
    
    if(n1!=m2)
    {
        printf("Error: %d != %d",n1,m2);
    }
    else
    {
        printf("%d %d\n",m1,n2);
        for(i=0;i<m1;i++)
        {
            for(j=0;j<n2;j++)
            {
                for(k=0;k<n1;k++)
                {
                    arr[i][j]+=arr1[i][k]*arr2[k][j];
                }
                printf("%d",arr[i][j]);
                if(j<n2-1)
                {
                    printf(" ");
                }
                else{
                    printf("\n");
                }     
            }
        }
    }
    return 0;
}

7-9 找鞍点

分数 20

一个矩阵元素的“鞍点”是指该位置上的元素值在该行上最大、在该列上最小。

本题要求编写程序,求一个给定的n阶方阵的鞍点。

输入格式

输入第一行给出一个正整数n(1≤n≤6)。随后n行,每行给出n个整数,其间以空格分隔。

输出格式

输出在一行中按照“行下标 列下标”(下标从0开始)的格式输出鞍点的位置。如果鞍点不存在,则输出“NONE”。题目保证给出的矩阵至多存在一个鞍点。

输入样例1

4
1 7 4 1
4 8 3 6
1 6 1 2
0 7 8 9

输出样例1

2 1

输入样例2

2
1 7
4 1

输出样例2

NONE

代码长度限制16 KB

时间限制400 ms

内存限制64 MB

代码内容

#include<stdio.h>

int main()
{
    int arr[6][6];
    int n;
    int test = 0;
    scanf("%d", &n);
    int i=0;
    int j=0;
    int k=0;
    int max1=0;
    int index=0;
    int flag=1;
    for (i = 0; i < n; i++)
    {
        for (j = 0; j < n; j++)
        {
            scanf("%d", &arr[i][j]);
        }
    }

    for (int i = 0; i < n; i++)   
    {  
    max1 = arr[i][0];  
    index = 0;   
    flag = 1;  

        for (int j = 1; j < n; j++)   
        {
             if (arr[i][j] >= max1)
            {
                max1 = arr[i][j];
                index = j;
            }
         }
    for (int k = 0; k < n; k++)
    {
        if (arr[k][index] < max1)  
        {
            flag = 0;
            break;
        }
    }

    if (flag == 1)
    {
        test = 1;  
        printf("%d %d", i, index);
        break;
    }
    }
    if (test == 0)
    {
        printf("NONE");
    }

 return 0;
}

6-1 查找数组元素最大值

分数 10

本题要求实现一个函数,查找数组中最大元素的下标。例如数组为{1,3,5,7,9},则该函数应该返回4。题目输入保证数组元素各不相同。

函数接口定义

intindexOfMax(int *array, int size);

其中 array 和 size 是用户传入的参数。 array 是数组首地址; size 是数组元素的个数。函数须返回数组中最大元素的下标(从0开始)。

裁判测试程序样例

/* 此测试程序仅为示例,实际的测试程序可能不同 */
#include<stdio.h>
#define MAXSIZE 100
int indexOfMax(int *array, int size);
int main()
{
int num[MAXSIZE];
int total;
scanf("%d",&total);
for(int i=0; i<total; i++)
 scanf("%d",&num[i]);
printf("%d\n",num[indexOfMax(num,total)]);
return0;
}
/* 你所编写的函数代码将被嵌在这里 */

输入样例

4 2016 2017 1999 1998

输出样例

2017

代码长度限制16 KB

时间限制400 ms

内存限制64 MB

代码内容

int indexOfMax(int *array, int size)
{
    int i=0;
    int max=array[0];
    int count=0;
    for(i=0;i<size;i++)
    {
        if(max<array[i])
        {
            max=array[i];
            count++;
        }
    }
    return count;
}

6-2 在数组中查找指定元素

分数 10

本题要求实现一个在数组中查找指定元素的简单函数。

函数接口定义

intsearch( intlist[], int n, int x );

其中list[]是用户传入的数组;n(≥0)是list[]中元素的个数;x是待查找的元素。如果找到

则函数search返回相应元素的最小下标(下标从0开始),否则返回−1。

裁判测试程序样例

#include<stdio.h>
#define MAXN 10
int search( int list[], int n, int x );
int main(){
int i, index, n, x;
int a[MAXN];
scanf("%d", &n);
for( i = 0; i < n; i++ )
scanf("%d", &a[i]);
scanf("%d", &x);
    index = search( a, n, x );
if( index != -1 )
printf("index = %d\n", index);
else printf("Not found\n");
return0;
}
/* 你的代码将被嵌在这里 */

输入样例1

5
1 2 2 5 4
2

输出样例1

index = 1

输入样例2

5
1 2 2 5 4
0

输出样例2

Not found

代码长度限制16 KB

时间限制400 ms

内存限制64 MB

代码内容

int search( int list[], int n, int x )
{
    int i=0;
    for(i=0;i<n;i++)
    {
        if(list[i]==x)
        {
            return i;
            break;
        }
    }
    return -1;
}

7-5 求数列之和[A]

分数 10

给定一个数字A (1⩽A⩽9)以及一个非负整数N (0⩽N⩽15),编程计算sum=A+AA+AAA+⋯+AAA(NA), 例如当A=2,N=3时,S=2+22+222=246。

输入格式

在一行内输入数字A与非负整数N。数与数之间用空格间隔。

输出格式

按照S = xxx的格式输出其N项之和S的值。

输入样例

2  3

输出样例

在这里给出相应的输出。例如:

S = 246

说明

本题是在浙江大学DS课程组《求数列和-加强版》的基础上降低了N的取值范围,使得数列各项及其总和能在整数的取值范围内表示。

代码长度限制16 KB

时间限制400 ms

内存限制64 MB

Solution

#include <stdio.h>

int main()
{
    int A=0;
    int N=0;
    scanf("%d %d",&A,&N);
    int i=0;
    int sum=0;
    int ret=0;//第一项
    for(i=0;i<N;i++)
    {
        ret=ret*10+A;
        sum+=ret;
    }
    printf("S = %d",sum);
    return 0;
}

6-3 使用函数的选择法排序

分数 15

本题要求实现一个用选择法对整数数组进行简单排序的函数。

函数接口定义

voidsort( int a[], int n );

其中a是待排序的数组,n是数组a中元素的个数。该函数用选择法将数组a中的元素按升序排列,结果仍然在数组a中。

裁判测试程序样例

#include<stdio.h>#define MAXN 10voidsort( int a[], int n );
intmain(){
int i, n;
int a[MAXN];
scanf("%d", &n);
for( i=0; i<n; i++ )
scanf("%d", &a[i]);
    sort(a, n);
printf("After sorted the array is:");
for( i = 0; i < n; i++ )
printf(" %d", a[i]);
printf("\n");
return0;
}
/* 你的代码将被嵌在这里 */

输入样例

4
5 1 7 6

输出样例

After sorted the array is: 1 5 6 7

代码长度限制16 KB

时间限制400 ms

内存限制64 MB

Solution

void sort(int a[],int n)
{
    int i=0;
    int tmp=0;
    for(i=0;i<n-1;i++)
    {
        int j=0;
        for(j=0;j<n-1-i;j++)
        {
            if(a[j]>a[j+1])
            {
                tmp=a[j];
                a[j]=a[j+1];
                a[j+1]=tmp;
            }
        }
    }
}

6-5 计算天数[2]

分数 15

本题要求实现一个简单函数,计算年year、月month和日day对应的是该年的第几天。其中1、3、5、7、8、10、12月有31天,4、6、9、11月有30天,2月平年有28天,闰年有29天。判断闰年的条件是:能被 4 整除但不能被 100 整除,或者能被 400 整除。

函数接口定义

在这里描述函数接口。例如:
intday_of_year(int year, int month);

其中year、month和day是用户传入的参数。函数返回年year、月month和日day对应的是该年的第几天。

裁判测试程序样例

# include<stdio.h>intday_of_year(int year, int month, int day);
intmain(void){
int day, month, year;
scanf("%d%d%d", &year, &month, &day);
printf("%d\n", day_of_year(year, month, day));
return0;
}
/* 请在这里填写答案 */

输入样例1

2000 3 1

输出样例1

61

输入样例2

1981 3 1

输出样例2

60

代码长度限制16 KB

时间限制400 ms

内存限制64 MB

Solution

int day_of_year(int year, int month,int day)
{
    int sum1=0;
    int sum=0;
    int i=0;
    if((year%4==0&&year%100!=0)||year%400==0)
    {
        int arr1[]={31,29,31,30,31,30,31,31,30,31,30,31};
        for(i=0;i<month-1;i++)
        {
            sum1=sum1+arr1[i];
        }
        sum=sum1+day;
    }
    else
    {
        int arr2[13]={31,28,31,30,31,30,31,31,30,31,30,31};
        for(i=0;i<month-1;i++)
        {
            sum1=sum1+arr2[i];
        }
        sum=sum1+day;
    }
    return sum;
}

6-4 求矩阵不靠边元素之和

分数 10

求矩阵的所有不靠边元素之和,矩阵行的值m从键盘读入(2<=m<=10),调用自定义函数Input实现矩阵元素从键盘输入,调用Sum函数实现求和。(只考虑float型,且不需考虑求和的结果可能超出float型能表示的范围)。

函数接口定义

void Input(float a[][N], int m );
float Sum( float a[][N], int m ); 

Input函数完成从键盘矩阵元素的功能,

Sum函数完成求和并将结果返回。

m 代表矩阵的行。

裁判测试程序样例

#include<stdio.h>
#define M 10
#define N 4
void Input(float a[][N],int m);
float Sum(float a[][N],int m);
int main(void){
float num[M][N],sum;
int m;
scanf("%d", &m);
        Input(num,m); 
        sum = Sum(num,m);
printf("sum = %.2f\n", sum);
return 0;
}
/* 请在这里填写答案 */

输入样例

4
18 29.5 45  33 
66 3.4 11.5 57 
70 100  2 16.9 
15 25.8 4.5 36

输出样例

sum = 116.90

代码长度限制16 KB

时间限制400 ms

内存限制64 MB

Solution

void Input (float a[][N], int m )
{
    int i=0;
    int j=0;
    for(i=0;i<m;i++)
    {
        
        for(j=0;j<N;j++)
        {
            scanf("%f",&a[i][j]);
        }
    }
}

float Sum ( float a[][N], int m )
{
    int i=0;
    float sum1=0;
    int j=0;
    for(i=1;i<m-1;i++)
    {
        for(j=1;j<N-1;j++)
        {
            sum1+=a[i][j];
        }
    }
    return sum1;
}

7-4 二分查找法之过程

分数 15

本题要求使用二分查找法,在给定的n个升序排列的整数中查找x,并输出查找过程中每一步的中间结果。如果数组a中的元素与x的值相同,输出相应的下标(下标从0开始);如果没有找到,输出“Not Found”。如果输入的n个整数没有按照从小到大的顺序排列,或者出现了相同的数,则输出“Invalid Value”。

二分查找法的算法步骤描述如下:

n个元素的数组a已升序排列,用left和right两个变量来表示查找的区间,即在a[left] 〜 a[right]区间去查找x。初始状态为left = 0,right = n-1。首先用要查找的x与查找区间的中间位置元素a[mid](mid = (left + right) / 2)比较,如果相等则找到;如果x < a[mid],由于数组是升序排列的,则只要在a[left] 〜 a[mid-1]区间继续查找;如果x > a[mid],则只要在a[mid+1] 〜 a[right]区间继续查找。也就是根据与中间元素比较的情况产生了新的区间值left、right值,当出现left > right时,说明不存在值为x的元素。

输入格式

输入在第1行中给出一个正整数n(1≤n≤10)和一个整数x,第2行输入n个整数,其间以空格分隔。题目保证数据不超过长整型整数的范围。

输出格式

在每一行中输出查找过程中对应步骤的中间结果,按照“[left,right][mid]”的格式输出。提示:相邻数字、符号之间没有空格。

如果找到,输出相应的下标(下标从0开始);如果没有找到,在一行中输出“Not Found”。

如果输入的n个整数没有按照从小到大的顺序排列,或者出现了相同的数,则输出“Invalid Value”。

输入样例1

10 2
1 2 3 4 5 6 7 8 9 10

输出样例1

[0,9][4]
[0,3][1]
1

输入样例2

4 5
71 74 78 100

输出样例2

[0,3][1]
[0,0][0]
Not Found

输入样例3

5 5
39 60 80 80 100

输出样例3

Invalid Value

代码长度限制16 KB

时间限制400 ms

内存限制64 MB

Solution

#include <stdio.h>


void Binary(int arr[],int n,int x)
{
    int left=0;
    int right=n-1;
    while(left<=right)
    {
        int mid=0;
        mid=(left+right)/2;
         printf("[%d,%d][%d]\n",left,right,mid);
        if(arr[mid]>x)
        {
            right=mid-1;
        }
         if(arr[mid]<x)
        {
            left=mid+1;
        }
         if(arr[mid]==x)
        {
            printf("%d\n",mid);
            break;
        }
    }
    if(left>right)
    {
        printf("Not Found\n");
    }
}


int main()
{
    int n=0;
    int x=0;
    int i=0;
    int j=0;
    int flag=0;
    int arr[10]={0};
    scanf("%d %d\n",&n,&x);
    for(i=0;i<n;i++)
    {
        scanf("%d",&arr[i]);
    }
    for(j=0;j<n-1;j++)
    {
        if(arr[j]<arr[j+1])
        {
            flag=0;
        }
        if(arr[j]>=arr[j+1])
        {
            flag=1;
            break;
        }
    }
    if(flag==0)
    {
        Binary(arr,n,x); 
    }
    else if(flag==1)
    {
        printf("Invalid Value\n");
    }
    return 0;
}

6-6 数组循环右移

分数 15

本题要求实现一个对数组进行循环右移的简单函数:一个数组a中存有n(>0)个整数,将每个整数循环向右移m(≥0)个位置,即将a中的数据由(a0a1⋯an−1)变换为(anman−1a0a1⋯anm−1)(最后m个数循环移至最前面的m个位置)。

函数接口定义

voidArrayShift( int a[], int n, int m );

其中a[]是用户传入的数组;n是数组的大小;m是右移的位数。函数ArrayShift须将循环右移后的数组仍然存在a[]中。

裁判测试程序样例

#include<stdio.h>#define MAXN 10voidArrayShift( int a[], int n, int m );
intmain(){
int a[MAXN], n, m;
int i;
scanf("%d %d", &n, &m);
for ( i = 0; i < n; i++ ) scanf("%d", &a[i]);
    ArrayShift(a, n, m);
for ( i = 0; i < n; i++ ) {
if (i != 0) printf(" ");
printf("%d", a[i]);
    }
printf("\n");
return0;
}
/* 你的代码将被嵌在这里 */

输入样例

6 2
1 2 3 4 5 6

输出样例

5 6 1 2 3 4

代码长度限制16 KB

时间限制400 ms

内存限制64 MB

Solution

void ArrayShift( int a[], int n, int m )
{
    int i=0;
    int j=0;
    int b[n-1];
    if(m>n)
    {
        m=m%n;
    }
    //先把a中的前(n-m)个数存放到b的后(n-m)个位置
    for(i=m;i<n;i++)
    {
        b[i]=a[j];
        j++;
    }
    //再把a中剩下的数放到b的前面
    for(i=0;i<m;i++)
    {
        b[i]=a[j];
        j++;
    }
    //再把b拷贝给a
    for(i=0;i<n;i++)
      {
          a[i]=b[i];
      }
}

7-11 查找指定字符

分数 15

本题要求编写程序,从给定字符串中查找某指定的字符。

输入格式

输入的第一行是一个待查找的字符。第二行是一个以回车结束的非空字符串(不超过80个字符)。

输出格式

如果找到,在一行内按照格式“index = 下标”输出该字符在字符串中所对应的最大下标(下标从0开始);否则输出"Not Found"。

输入样例1

m
programming

输出样例1

index = 7

输入样例2

a
1234

输出样例2

Not Found

代码长度限制16 KB

时间限制400 ms

内存限制64 MB

Solution 1

#include <stdio.h>
#include <string.h>

int main()
{
    char x='0';
    scanf("%c",&x);
    getchar();
    char arr[81]="0";
    gets(arr);
    int len=strlen(arr);
    int i=0;
    for(i=len-1;i>=0;i--)
    {
         if(arr[i]==x)
          {
                printf("index = %d",i);
                return 0;
           }
    }
        printf("Not Found");
    return 0;
}

Solution 2

#include <stdio.h>
#include <string.h>

int main()
{
    char x='0';
    scanf("%c",&x);
    char ch;
    ch=getchar();
    char arr[81]="0";
    gets(arr);
    int index=-1;

    int i=0;
    for(i=0;arr[i]!='\0';i++)
    {
         if(arr[i]==x)
          {
                index=i;
          }
    }
    if(index!=-1)
    {
        printf("index = %d",index);
    }
    else
    {
        printf("Not Found");
    }
    
    return 0;
}

7-12 凯撒密码

分数 20

为了防止信息被别人轻易窃取,需要把电码明文通过加密方式变换成为密文。输入一个以回车符为结束标志的字符串(少于80个字符),再输入一个整数offset,用凯撒密码将其加密后输出。恺撒密码是一种简单的替换加密技术,将明文中的所有字母都在字母表上偏移offset位后被替换成密文,当offset大于零时,表示向后偏移;当offset小于零时,表示向前偏移。

输入格式

输入第一行给出一个以回车结束的非空字符串(少于80个字符);第二行输入一个整数offset。

输出格式

输出加密后的结果字符串。

输入样例1

Hello Hangzhou
2

输出样例1

Jgnnq Jcpibjqw

输入样例2

a=x+y
-1

输出样例2

z=w+x

代码长度限制16 KB

时间限制400 ms

内存限制64 MB

Solution

#include <stdio.h>
#include <ctype.h>
int main()
{
    char arr[80]={0};
    int offset=0;
    gets(arr);
    scanf("%d",&offset);
    int len=strlen(arr);
    offset=offset%26;
    int i=0;
    for(i=0;i<len;i++)
    {
        if(isupper(arr[i])!=0)
        {
            arr[i]=(arr[i]-'A'+offset+26)%26+'A';
        }
         if(islower(arr[i])!=0)
        {
            arr[i]=(arr[i]-'a'+offset+26)%26+'a';
        }
    }
    printf(arr);
    return 0;
}

7-14 字符串排序

分数 20

本题要求编写程序,读入5个字符串,按由小到大的顺序输出。

输入格式

输入为由空格分隔的5个非空字符串,每个字符串不包括空格、制表符、换行符等空白字符,长度小于80。

输出格式

按照以下格式输出排序后的结果:

After sorted:
每行一个字符串

输入样例

red yellow blue black white

输出样例

After sorted:
black
blue
red
white
yellow

鸣谢贵州民族大学张玉全老师修正数据!

代码长度限制16 KB

时间限制400 ms

内存限制64 MB

Solution

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int cmp_char(const void*e1,const void*e2)
{
    return strcmp((char*)e1,(char*)e2);
}

int main()
{
    char arr[5][80];
    int i=0;
    for(i=0;i<5;i++)
    {
        scanf("%s",arr[i]);
    }
    //void qsort(void* base, size_t num, size_t size, int (*compar)(const void*, const void*));
    qsort(arr,5,sizeof(arr[0]),cmp_char);
    printf("After sorted:\n");
    for(i=0;i<5;i++)
    {
       puts(arr[i]);
        
    }
    return 0;
}

6-8 歌唱比赛打分

分数 10

某歌唱比赛计分规则是:对于评委给出的分数,去掉一个最高分,去掉一个最低分,剩余分数求算术平均值并保留2位小数,作为选手最终得分。

本题要求实现这样一个计分函数。

评委给出的分数存在数组中,分数均为0~100之间的整数,并且保证评委人数在3~20之间。

函数接口定义

doublegetScore(int *score, int total);

其中score和total是传入的参数,score是评委打分数组的首地址,total是评委人数;

函数将选手的得分以double类型返回,注意:函数返回的分数只需保证小数点后至少2位精确数字即可,打印2位小数得分的操作由函数调用者进行。

裁判测试程序样例

/* 此测试程序仅为示例,实际的测试程序可能不同,不要仅针对样例的输入和输出编写函数,而是要根据题意要求编写函数 */#include<stdio.h>doublegetScore(int *score, int total);
intmain(){
int score[5] = {92, 90, 99, 95, 98};   /* 仅为示例,实际的测试程序中,数组大小和元素数值都可能与样例不同 */printf("%.2f\n", getScore(score, 5) );  /* getScore( )函数只负责返回分值,由main函数中的代码负责按照2位小数打印输出 */return0;
}
/* 你所编写的函数代码将被嵌在这里,注意:不要提交你编写的用于测试的main( )函数,否则无法通过编译 */

输入样例

对于本题给出的裁判测试程序样例,没有输入。实际的裁判程序可能有输入。

输出样例

对于本题给出的裁判测试程序样例,只有一行输出如下。实际的裁判程序可能有其他输出情况。
95.00

代码长度限制16 KB

时间限制400 ms

内存限制64 MB

Solution

double getScore(int *score, int total)
{
    int i=0;
    double sum=0;
    int min=100;
    int max=0;
    for(i=0;i<total;i++)
    {
        sum+=*(score+i);
        if(*(score+i)>max)
        {
            max=*(score+i);
        }
        if(*(score+i)<min)
        {
            min=*(score+i);
        }
        
    }
    return (sum-min-max)/(total-2);
}

7-1 找最长的字符串

分数 15

全屏浏览题目

切换布局

作者 张泳单位 浙大城市学院

本题要求编写程序,针对输入的N个字符串,输出其中最长的字符串。

输入格式

输入第一行给出正整数N;随后N行,每行给出一个长度小于80的非空字符串,其中不会出现换行符,空格,制表符。

输出格式

在一行中用以下格式输出最长的字符串:

The longest is: 最长的字符串

如果字符串的长度相同,则输出先输入的字符串。

输入样例

5
li
wang
zhang
jin
xiang

输出样例

The longest is: zhang

代码长度限制16 KB

时间限制400 ms

内存限制64 MB

Solution

#include <stdio.h>
#include <string.h>
int main()
{
    int N=0;
    int longest=0;
    scanf("%d",&N);
    char arr[N][80];
    char tmp[80];
    int i=0;
    for(i=0;i<N;i++)
    {
        scanf("%s",arr[i]);
    }
    longest=strlen(arr[0]);
    for(i=1;i<N;i++)
    {
        
        if(strlen(arr[i])>longest)
        {
            longest=strlen(arr[i]);
            strcpy(tmp,arr[i]);
        }
    }
    if(longest==strlen(arr[0]))
    {
        strcpy(tmp,arr[0]);
    }
    printf("The longest is: %s",tmp);
    return 0;
}

7-4 输出学生成绩

分数 20

全屏浏览题目

切换布局

作者 张泳单位 浙大城市学院

本题要求编写程序,根据输入学生的成绩,统计并输出学生的平均成绩、最高成绩和最低成绩。建议使用动态内存分配来实现。

输入格式

输入第一行首先给出一个正整数N,表示学生的个数。接下来一行给出N个学生的成绩,数字间以空格分隔。

输出格式

按照以下格式输出:

average = 平均成绩
max = 最高成绩
min = 最低成绩

结果均保留两位小数。

输入样例

3
85 90 95

输出样例

average = 90.00
max = 95.00
min = 85.00

代码长度限制16 KB

时间限制400 ms

内存限制64 MB

Solution

#include <stdio.h>
#include <malloc.h>
int main()
{
    int N=0;
    scanf("%d",&N);
    int* p=(int*)malloc(N*sizeof(int));
    if(p==NULL)
    {
        perror("main");
        return 0;
    }
    double sum=0;
    double max=0;
    double min=100;
    int i=0;
    for(i=0;i<N;i++)
    {
        scanf("%d",p+i);
    }
    for(i=0;i<N;i++)
    {
        sum+=*(p+i);
        if(*(p+i)>max)
        {
            max=*(p+i);
        }
        if(*(p+i)<min)
        {
            min=*(p+i);
        }
        
    }
    printf("average = %.2f\n",sum/N);
    printf("max = %.2f\n",max);
    printf("min = %.2f\n",min);
    free(p);
    p=NULL;
    return 0;
}

7-3 矩阵边界和

分数 10

给定一个m行n列的二维矩阵,求其四周边元素和。1<=m、n<=100000,可能是1行100000列,也可能是10000行50列,但保证矩阵元素不多于500000。你可能不能预定义数组的大小了,你要学会使用动态内存分配哦。你可以动态申请m*n个内存单元,然后用一维数组来存储二维数组,二维数组元素a[i][j]对应一维数组a[i*n+j],i、j均从0开始。

输入格式

输入第一行是m和n,然后是一个m行n列的矩阵。

输出格式

输出一个整数,表示矩阵所有边界元素的和。

输入样例

在这里给出一组输入。例如:

3 4
1 2 3 4 
5 6 7 8 
9 5 4 6 

输出样例

在这里给出相应的输出。例如:

47

代码长度限制16 KB

时间限制1000 ms

内存限制64 MB

Solution

#include <stdio.h>
#include <malloc.h>
int main()
{
    int m=0;
    int n=0;
    scanf("%d %d",&m,&n);
    int sum=0;
    int*p=(int*)malloc(m*n*sizeof(int));
    if(p==NULL)
    {
        perror("main");
        return 0;
    }
    int i=0;
    int j=0;
    for(i=0;i<m;i++)
    {
        for(j=0;j<n;j++)
        {
            scanf("%d",&p[i*n+j]);
        }
    }
    
    for(i=0;i<m;i++)
    {
        for(j=0;j<n;j++)
        {
            if(i==0||i==m-1||j==0||j==n-1)
            {
                sum+=p[i*n+j];
            }
        }
    }
    printf("%d",sum);
    
    
    free(p);
    p=NULL;
    return 0;
}

7-5 查找奥运五环色的位置

分数 10

奥运五环的5种颜色的英文单词按一定顺序排列{"red", "blue", "yellow", "green", "black" },定义指针数组并初始化,输入任意一个颜色的英文单词,从已有颜色中查找并输出该颜色的位置值,若没有找到,则输出"Not Found"。

输入格式

输入一个代表颜色的单词。

输出格式

输出单词对应的位置值,如果未找到,输出Not Found。

输入样例

yellow

输出样例

3

代码长度限制16 KB

时间限制400 ms

内存限制64 MB

Solution

#include <stdio.h>
#include <string.h>
int main()
{
    char* p[5]={"red", "blue", "yellow", "green", "black"};
    char arr[10]={0};
    int index=-1;
    scanf("%s",arr);
    int i=0;
    for(i=0;i<5;i++)
    {
        if(strcmp(arr,p[i])==0)
        {
            printf("%d",i+1);
            index=0;
            break;
        }
    }
    if(index==-1)
    {
        printf("Not Found");
    }
    return 0;
}

6-1 计算两数的和与差

分数 10

本题要求实现一个计算输入的两数的和与差的简单函数。

函数接口定义

voidsum_diff( float op1, float op2, float *psum, float *pdiff );

其中op1和op2是输入的两个实数,*psum和*pdiff是计算得出的和与差。

裁判测试程序样例

#include<stdio.h>voidsum_diff( float op1, float op2, float *psum, float *pdiff );
intmain(){
float a, b, sum, diff;
scanf("%f %f", &a, &b);
    sum_diff(a, b, &sum, &diff);
printf("The sum is %.2f\nThe diff is %.2f\n", sum, diff);
return0; 
}
/* 你的代码将被嵌在这里 */

输入样例

4 6

输出样例

The sum is 10.00
The diff is -2.00

代码长度限制16 KB

时间限制400 ms

内存限制64 MB

Solution

void sum_diff( float op1, float op2, float *psum, float *pdiff )
{
    *psum=op1+op2;
    *pdiff=op1-op2;
}

6-2 使用函数找出数组中的最大值

分数 15

本题要求实现一个找出整型数组中最大值的函数。

函数接口定义

intFindArrayMax( int a[], int n );

其中a是用户传入的数组,n是数组a中元素的个数。函数返回数组a中的最大值。

裁判测试程序样例

#include<stdio.h>#define MAXN 10intFindArrayMax( int a[], int n );
intmain(){
int i, n;
int a[MAXN];
scanf("%d", &n);
for( i=0; i<n; i++ ){
scanf("%d", &a[i]);
    }
printf("%d\n", FindArrayMax(a, n));
return0;
}
/* 请在这里填写答案 */

输入样例

4
20 78 99 -14

输出样例

99

代码长度限制16 KB

时间限制400 ms

内存限制64 MB

Solution

int FindArrayMax( int a[], int n )
{
    int i=0;
    int max=a[0];
    
    for(i=1;i<n;i++)
    {
        if(*(a+i)>max)
        {
            max=*(a+i);
        }
    }
    return max;
}

6-3 在数组中查找指定元素

分数 10

本题要求实现一个在数组中查找指定元素的简单函数。

函数接口定义

intsearch( intlist[], int n, int x );

其中list[]是用户传入的数组;n(≥0)是list[]中元素的个数;x是待查找的元素。如果找到

则函数search返回相应元素的最小下标(下标从0开始),否则返回−1。

裁判测试程序样例

#include<stdio.h>#define MAXN 10intsearch( intlist[], int n, int x );
intmain(){
int i, index, n, x;
int a[MAXN];
scanf("%d", &n);
for( i = 0; i < n; i++ )
scanf("%d", &a[i]);
scanf("%d", &x);
    index = search( a, n, x );
if( index != -1 )
printf("index = %d\n", index);
elseprintf("Not found\n");
return0;
}
/* 你的代码将被嵌在这里 */

输入样例1

5
1 2 2 5 4
2

输出样例1

index = 1

输入样例2

5
1 2 2 5 4
0

输出样例2

Not found

代码长度限制16 KB

时间限制400 ms

内存限制64 MB

Solution

int search( int list[], int n, int x )
{
    int i=0;
    for(i=0;i<n;i++)
    {
        if(*(list+i)==x)
        {
            return i;
        }
    }
    return -1;
}

6-4 查找星期

分数 15

本题要求实现函数,可以根据下表查找到星期,返回对应的序号。

序号

星期

0

Sunday

1

Monday

2

Tuesday

3

Wednesday

4

Thursday

5

Friday

6

Saturday

函数接口定义

intgetindex( char *s );

函数getindex应返回字符串s序号。如果传入的参数s不是一个代表星期的字符串,则返回-1。

裁判测试程序样例

#include<stdio.h>#include<string.h>#define MAXS 80intgetindex( char *s );
intmain(){
int n;
char s[MAXS];
scanf("%s", s);
    n = getindex(s);
if ( n==-1 ) printf("wrong input!\n");
elseprintf("%d\n", n);
return0;
}
/* 你的代码将被嵌在这里 */

输入样例1

Tuesday

输出样例1

2

输入样例2

today

输出样例2

wrong input!

代码长度限制16 KB

时间限制400 ms

内存限制64 MB

Solution

int getindex( char *s )
{
    char arr[7][10]={"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};
    int i=0;
    for(i=0;i<7;i++)
    {
        if(strcmp(s,arr[i])==0)
        {
            return i;
        }
    }
    return -1;

}

6-5 字符串的连接

分数 15

本题要求实现一个函数,将两个字符串连接起来。

函数接口定义

char *str_cat( char *s, char *t );

函数str_cat应将字符串t复制到字符串s的末端,并且返回字符串s的首地址。

裁判测试程序样例

#include<stdio.h>
#include<string.h>
#define MAXS 10
char *str_cat( char *s, char *t );
int main(){
    char *p;
    char str1[MAXS+MAXS] = {'\0'}, str2[MAXS] = {'\0'};
    scanf("%s%s", str1, str2);
    p = str_cat(str1, str2);
    printf("%s\n%s\n", p, str1);
    return 0;
}
/* 你的代码将被嵌在这里 */

输入样例

abc
def

输出样例

abcdef
abcdef

代码长度限制16 KB

时间限制400 ms

内存限制64 MB

Solution

char *str_cat( char *s, char *t )
{
    return strcat(s,t);
}

6-6 分类统计字符个数

分数 15

全屏浏览题目

切换布局

作者 颜晖单位 浙大城市学院

本题要求实现一个函数,统计给定字符串中英文字母、空格或回车、数字字符和其他字符的个数。

函数接口定义:

voidStringCount( char s[] );

其中 char s[] 是用户传入的字符串。函数StringCount须在一行内按照

letter = 英文字母个数, blank = 空格或回车个数, digit = 数字字符个数, other = 其他字符个数

的格式输出。

裁判测试程序样例:

#include<stdio.h>
#define MAXS 15
void StringCount( char s[] );
void ReadString( char s[] ); /* 由裁判实现,略去不表 */
int main(){
char s[MAXS];
    ReadString(s);
    StringCount(s);
return 0;
}
/* Your function will be put here */

输入样例:

aZ &
09 Az

输出样例:

letter = 4, blank = 3, digit = 2, other = 1

代码长度限制16 KB

时间限制400 ms

内存限制64 MB

Solution

#include <ctype.h>
void StringCount( char s[] )
{
    
    int count1=0;
    int count2=0;
    int count3=0;
    int count4=0;
    int i=0;
    for(i=0;s[i]!='\0';i++)
    {
        if(isalpha(s[i])!=0)
        {
            count1++;
        }
        if(s[i]==' '||s[i]=='\n')
        {
            count2++;
        }
        if(isdigit(s[i])!=0)
        {
            count3++;
        }
        if(isalpha(s[i])==0&&isdigit(s[i])==0&&s[i]!=' '&&s[i]!='\n')
        {
            count4++;
        }
            
    }
    printf("letter = %d, blank = %d, digit = %d, other = %d",count1,count2,count3,count4);
}

6-7 移动字母

分数 10

本题要求编写函数,将输入字符串的前3个字符移到最后。

函数接口定义

voidShift( char s[] );

其中char s[]是用户传入的字符串,题目保证其长度不小于3;函数Shift须将按照要求变换后的字符串仍然存在s[]里。

裁判测试程序样例

#include<stdio.h>
#include<string.h
>#define MAXS 10
void Shift( char s[] );
void GetString( char s[] ); /* 实现细节在此不表 */
int main(){
char s[MAXS];
    GetString(s);
    Shift(s);
printf("%s\n", s);
return 0; 
}
/* 你的代码将被嵌在这里 */

输入样例

abcdef

输出样例

defabc

代码长度限制16 KB

时间限制400 ms

内存限制64 MB

Solution

void Shift( char s[] )
{
    int len=strlen(s);
    char arr1[MAXS]={0};
    int i=0;
    int j=0;
    for(i=3;i<len;i++,j++)
    {
        arr1[j]=*(s+i);
    }
    for(i=0;i<3;i++,j++)
    {
        arr1[j]=*(s+i);
    }
    s=strcpy(s,arr1);
}

6-8 利用指针找最大值

分数 10

本题要求实现一个简单函数,找出两个数中的最大值。

函数接口定义

voidfindmax( int *px, int *py, int *pmax );

其中px和py是用户传入的两个整数的指针。函数findmax应找出两个指针所指向的整数中的最大值,存放在pmax指向的位置。

裁判测试程序样例

#include<stdio.h>
void findmax( int *px, int *py, int *pmax );
int main(){    
int max, x, y; 
scanf("%d %d", &x, &y);
    findmax( &x, &y, &max );
printf("%d\n", max);
return 0;
} 
/* 你的代码将被嵌在这里 */

输入样例

3 5

输出样例

5

代码长度限制16 KB

时间限制400 ms

内存限制64 MB

Solution

void findmax( int *px, int *py, int *pmax )
{
    if(*px>*py)
    {
        *pmax=*px;
    }
    else if(*px<*py)
    {
        *pmax=*py;
    }
}

7-1 平面向量加法

分数 10

本题要求编写程序,计算两个二维平面向量的和向量。

输入格式

输入在一行中按照“x1 y1 x2 y2”的格式给出两个二维平面向量v1=(x1,y1)和v2=(x2,y2)的分量。

输出格式

在一行中按照(x, y)的格式输出和向量,坐标输出小数点后一位(注意不能输出−0.0)。

输入样例

3.5 -2.7 -13.9 8.7

输出样例

(-10.4, 6.0)

代码长度限制16 KB

时间限制400 ms

内存限制64 MB

Solution

#include <stdio.h>
#include <math.h>
struct vector
{
    double x;
    double y;
}a,b,c;



int main()
{
    scanf("%lf %lf %lf %lf",&a.x,&a.y,&b.x,&b.y);
    c.x=a.x+b.x;
    c.y=a.y+b.y;
    if(fabs(c.x)<0.05)
    {
        c.x=fabs(c.x);
    }
    if(fabs(c.y)<0.05)
    {
        c.y=fabs(c.y);
    }
    printf("(%.1f, %.1f)",c.x,c.y);
    return 0;
}

7-2 计算平均成绩

分数 10

给定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

代码长度限制16 KB

时间限制400 ms

内存限制64 MB

Solution

#include <stdio.h>

struct stu
{
    char number[6];
    char name[10];
    double score;
};

int main()
{
    int N=0;
    scanf("%d",&N);
    double sum=0;
    double average=0;
    struct stu p[11]={0};
    int i=0;
    for(i=0;i<N;i++)
    {
        scanf("%s %s %lf",p[i].number,p[i].name,&p[i].score);
        
    }
    for(i=0;i<N;i++)
    {
        sum+=p[i].score;
    }
    average=sum/N*1.0;
    printf("%.2f\n",average);
    for(i=0;i<N;i++)
    {
        if(p[i].score<average)
        {
            printf("%s %s\n",p[i].name,p[i].number);
        }
    }
    return 0;
}

7-3 计算职工工资

分数 10

给定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

代码长度限制16 KB

时间限制400 ms

内存限制64 MB

Solution

#include <stdio.h>

struct employee
{
    char name[10];
    float base_salary;
    float variable_pay;
    float expenditures;
};


int main()
{
    int N=0;
    scanf("%d",&N);
    struct employee p[10000]={0};
    int i=0;
    for(i=0;i<N;i++)
    {
        scanf("%s %f %f %f",p[i].name,&p[i].base_salary,&p[i].variable_pay,&p[i].expenditures);
    }
    for(i=0;i<N;i++)
    {
        printf("%s %.2f\n",p[i].name,p[i].base_salary+p[i].variable_pay-p[i].expenditures);
    }
    return 0;
}

7-6 有理数比较

分数 10

本题要求编写程序,比较两个有理数的大小。

输入格式

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

输出格式

在一行中按照“a1/b1 关系符 a2/b2”的格式输出两个有理数的关系。其中“>”表示“大于”,“<”表示“小于”,“=”表示“等于”。

输入样例1

1/2 3/4

输出样例1

1/2 < 3/4

输入样例2

6/8 3/4

输出样例2

6/8 = 3/4

代码长度限制16 KB

时间限制400 ms

内存限制64 MB

Solution

#include <stdio.h>


struct number
{
    double a;
    double b;
}x,y;

int main()
{
    scanf("%lf/%lf %lf/%lf",&x.a,&x.b,&y.a,&y.b);
    double result1=0.0;
    double result2=0.0;
    result1=x.a/x.b;
    result2=y.a/y.b;
    if(result1>result2)
    {
        printf("%.0f/%.0f > %.0f/%.0f\n",x.a,x.b,y.a,y.b);
    }
    else if(result1<result2)
    {
        printf("%.0f/%.0f < %.0f/%.0f\n",x.a,x.b,y.a,y.b);
    }
    else
    {
        printf("%.0f/%.0f = %.0f/%.0f\n",x.a,x.b,y.a,y.b);
    }
    return 0;
}

7-7 通讯录排序

分数 20

输入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

代码长度限制16 KB

时间限制400 ms

内存限制64 MB

Solution

#include <stdio.h>
#include <stdlib.h>
struct friend
{
    char name[11];
    char birth[9];
    char telephone[18];
};


int cmp_struct(const void* e1, const void* e2)
{
    return strcmp(((struct friend*)e1)->birth, ((struct friend*)e2)->birth);
}



int main()
{
    int n=0;
    scanf("%d",&n);
    
    struct friend p[n];
    int i=0;
    for(i=0;i<n;i++)
    {
        scanf("%s %s %s",p[i].name,p[i].birth,p[i].telephone);
    }
    qsort(p,n,sizeof(p[0]),cmp_struct);
    for(i=0;i<n;i++)
    {
        printf("%s %s %s\n",p[i].name,p[i].birth,p[i].telephone);;
    }
    return 0;
}

7-5 时间换算

分数 10

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

输入格式

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

输出格式

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

输入样例

11:59:40
30

输出样例

12:00:10

代码长度限制16 KB

时间限制400 ms

内存限制64 MB

Solution

#include <stdio.h>

struct time
{
    int hour;
    int minute;
    int second;
};


int main()
{
    struct time a={0};
    scanf("%d:%d:%d",&a.hour,&a.minute,&a.second);
    int n;
    scanf("%d",&n);
    a.second+=n;
    if(a.second>=60){
        a.minute++;
        a.second-=60; 
    }
    if(a.minute>=60){
        a.hour++;
        a.minute-=60;
    }
    if(a.hour>=24){
        a.hour-=24;
    }
    printf("%02d:%02d:%02d",a.hour,a.minute,a.second);

    return 0;
}

6-1 计算两个复数之积

分数 15

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

函数接口定义

struct complexmultiply(struct complex x, struct complex y);

其中struct complex是复数结构体,其定义如下:

structcomplex{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

代码长度限制16 KB

时间限制400 ms

内存限制64 MB

Solution

struct complex multiply(struct complex x, struct complex y)
{
    struct complex product={0};
    product.real=x.real*y.real-x.imag*y.imag;
    product.imag=x.real*y.imag+x.imag*y.real;
    return product;
}

6-2 按等级统计学生成绩

分数 20

本题要求实现一个根据学生成绩设置其等级,并统计不及格人数的简单函数。

函数接口定义

intset_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

代码长度限制16 KB

时间限制400 ms

内存限制64 MB

Solution

int set_grade( struct student *p, int n )
{
    int i=0;
    int count=0;
    for(i=0;i<n;i++)
    {
        if(p[i].score>=85&&p[i].score<=100)
        {
            p[i].grade='A';
        }
        if(p[i].score>=70&&p[i].score<=84)
        {
            p[i].grade='B';
        }
        if(p[i].score>=60&&p[i].score<=69)
        {
            p[i].grade='C';
        }
        if(p[i].score>=0&&p[i].score<=59)
        {
            p[i].grade='D';
            count++;
        }
    }
    return count;
}

6-3 Add Two Complex Numbers by Passing Structure to a Function

分数 15

This program takes two complex numbers as structures and adds them with the use of functions.

Function prototype

struct complexadd(struct complex n1, struct complex n2);

n1 and n2 are complex numbers.

Test code

#include<stdio.h>
struct complex{
float real;
float imag;
};
struct complex add(struct complex n1, struct complex n2);
int main(){
complex n1, n2, temp;
scanf("%f %f", &n1.real, &n1.imag);
scanf("%f %f", &n2.real, &n2.imag);
    temp = add(n1, n2);
printf("Sum = %.1f + %.1fi", temp.real, temp.imag);
return 0;
}
/* Your code will be inserted here */

Sample of input

2.3 4.5
3.4 5

输出样例

Sum = 5.7 + 9.5i

代码长度限制16 KB

时间限制400 ms

内存限制64 MB

Solution

struct complex add(struct complex n1, struct complex n2)
{
    struct complex tmp={0};
    tmp.real=n1.real+n2.real;
    tmp.imag=n1.imag+n2.imag;
    return tmp;
}

6-4 学生成绩比高低

分数 15

学生结构体定义如下:

struct Student{
    int sid;
    int C;
    int English;
};

其中sid是学号,C是C语言课程成绩,English是英语课程成绩。学生的成绩按照这样的规则比较:

  • 先比较两门课的总成绩,总成绩高的为优;
  • 若总成绩相同,再比较C语言成绩,C语言成绩高的为优;
  • 若C语言成绩也相同,则说明两名学生成绩相等。

编写函数实现成绩的比较。

函数接口定义

int compareScore(const struct Student *s1, const struct Student *s2);

其中s1和s2是传入的参数,分别指向两名学生的结构体变量。函数返回值为int型,

  • 若s1所指学生成绩优于s2所指学生,返回1;
  • 若s2所指学生成绩优于s1所指学生,返回-1;
  • 若两学生成绩相等,返回0。

裁判测试程序样例

/* 此测试程序仅为示例,实际的测试程序可能不同。 
注意:实际的测试程序可能有多组输入、进行多次比较,输入格式也有可能不同,
因此不要针对测试程序样例编写代码,而应当编写符合题目要求的函数 */
#include<stdio.h>
struct Student{
int sid;
int C;
int English;
};
int compareScore(const struct Student *s1, const struct Student *s2);
int main(){
struct Student zs, ls;
scanf("%d%d%d", &zs.sid, &zs.C, &zs.English);
scanf("%d%d%d", &ls.sid, &ls.C, &ls.English);
int r;
r = compareScore(&zs, &ls);
if(r < 0) printf("Less\n");
else if(r > 0) printf("Greater\n");
else printf("Equal\n");
return 0;
}
/* 你所编写的函数代码将被嵌在这里 */

输入样例1

对于样例测试程序的输入格式:

1 95 90
2 90 91

输出样例1

对于样例测试程序的输出格式:

Greater

输入样例2

对于样例测试程序的输入格式:

1 90 95
2 95 90

输出样例2

对于样例测试程序的输出格式:

Less

代码长度限制16 KB

时间限制400 ms

内存限制64 MB

Solution

int compareScore(const struct Student *s1, const struct Student *s2)
{
    int a=0;
    int b=0;
    a=s1->C+s1->English;
    b=s2->C+s2->English;
    
    if(a>b||((a==b)&&s1->C>s2->C))
    {
        return 1;
    }
    if(a<b||((a==b)&&s1->C<s2->C))
    {
        return -1;
    }
    if(a==b)
    {
        return 0;
    }
}

6-5 修改学生成绩

分数 15

输入n(n<50)个学生的成绩信息,再输入一个学生的学号、课程以及成绩,在自定义函数update_score()中修改该学生指定课程的成绩。

函数接口定义

int update_score(struct student *p, int n, int num, int course, int score);

其中p是结构指针,n是学生个数,course是课程序号,score是修改后的课程成绩。函数须返回指定学生的顺序位置,如果查无此人,返回-1。

裁判测试程序样例

#include<stdio.h>
struct student{/*学生信息结构定义*/
int num;            /* 学号 */
char name[10];      /* 姓名 */
int math, english, computer;   /* 三门课程成绩 */
}; 
int update_score(struct student *p, int n, int num, int course, int score); /*函数声明*/
int main(void){    
int i, pos, n, num, course, score;
struct student students[50];/* 定义结构数组 */
scanf("%d", &n);
for(i = 0; i < n; i++){
scanf("%d", &students[i].num);
scanf("%s", students[i].name); 
scanf("%d", &students[i].math); 
scanf("%d", &students[i].english); 
scanf("%d", &students[i].computer);
  }
/* 输入待修改学生信息 */
scanf("%d", &num);
scanf("%d", &course);
scanf("%d", &score);
/*调用函数,修改学生成绩*/  
pos = update_score(students, n, num, course, score);
/*输出修改后的学生信息*/
if(pos == -1)
printf("Not found!\n");
else  {  printf("%d,%d,%d,%d\n", students[pos].num, students[pos].math, students[pos].english, students[pos].computer);
  }
return 0;
}
/* 请在这里填写答案 */

输入样例

3
101 Zhang 78 87 85
102 Wang 91 88 90
103 Li 75 90 84
102 2 89

输出样例

在这里给出相应的输出。例如:

102,91,89,90

代码长度限制16 KB

时间限制400 ms

内存限制64 MB

Solution

int update_score(struct student *p, int n, int num, int course, int score)
{
    int i=0;
    int index=-1;
    for(i=0;i<n;i++)
    {
        if(p[i].num==num)
        {
            index=0;
            int j=0;
            if(course==1)
            {
                p[i].math=score;
            }
            if(course==2)
            {
                p[i].english=score;
            }
            if(course==3)
            {
                p[i].computer=score;
            }
            return i;
        }
    }
    if(index==-1)
    {
        return -1;
    }
}

7-1 学生信息的那些操作

(1)最高分,在哪里?

分数 10

从键盘输入若干个学生的信息,每个学生信息包括学号、姓名、3门课的成绩,计算每个学生的总分,输出总分最高的学生的信息。

输入格式

首先输入一个整数n(1<=n<=100),表示学生人数,然后输入n行,每行包含一个学生的信息:学号(12位)、姓名(不含空格且不超过20位),以及三个整数,表示语文、数学、英语三门课成绩,数据之间用空格隔开。

输出格式

输出总成绩最高的学生的学号、姓名、及三门课成绩,用空格隔开。若有多个最高分,只输出第一个。

输入样例

在这里给出一组输入。例如:

3
202016040201 Zhangling 89 78 95
202016040202 Wangli 85 87 99
202016040203 Fangfang 85 68 76

输出样例

在这里给出相应的输出。例如:

202016040202 Wangli 85 87 99

代码长度限制16 KB

时间限制1000 ms

内存限制64 MB

Solution

#include <stdio.h>

struct stu
{
    char num[13];
    char name[21];
    int chinese;
    int math;
    int english;
};



int main()
{
    int n=0;
    scanf("%d",&n);
    struct stu p[n];
    int max=p[0].chinese+p[0].math+p[0].english;
    int a=0;
    int i=0;
    for(i=0;i<n;i++)
    {
        scanf("%s %s %d %d %d",p[i].num,p[i].name,&p[i].chinese,&p[i].math,&p[i].english);
    }
    for(i=0;i<n;i++)
    {
        if(p[i].chinese+p[i].math+p[i].english>max)
        {
            max=p[i].chinese+p[i].math+p[i].english;
            a=i;
        }
    }
    printf("%s %s %d %d %d",p[a].num,p[a].name,p[a].chinese,p[a].math,p[a].english);
    return 0;
}

 

7-2 学生信息的那些操作

(2)按学号,查个人

分数 10

有一学生成绩表,包括学号、姓名、3门课程成绩。请实现如下查找功能:输入一个学生的学号,输出该学生学号、姓名、3门课程成绩

输入格式

首先输入一个整数n(1<=n<=100),表示学生人数;

然后输入n行,每行包含一个学生的信息:学号(12位)、姓名(不含空格且不超过20位),以及3个整数,表示3门课成绩,数据之间用空格隔开。

最后一行输入一个学号num

输出格式

若学号num存在,输出该学生的学号、姓名、3门课程成绩;若该学号不存在,则输出Not Found。

输入样例

在这里给出一组输入。例如:

3
202016040201 Zhangling 89 78 95 
202016040202 Wangli 85 87 99 
202016040203 Fangfang 85 68 76 
202016040201

输出样例

在这里给出相应的输出。例如:

202016040201 Zhangling 89 78 95

代码长度限制16 KB

时间限制1000 ms

内存限制64 MB

Solution

#include <stdio.h>
#include <string.h>

struct stu
{
    char num[13];
    char name[21];
    int a;
    int b;
    int c;
};

int main()
{
    int n=0;
    scanf("%d",&n);
    struct stu p[n];
    char num1[13]={0};
    int index=-1;
    int i=0;
    for(i=0;i<n;i++)
    {
        getchar();
        scanf("%s %s %d %d %d",p[i].num,p[i].name,&p[i].a,&p[i].b,&p[i].c);
    }
    getchar();
    scanf("%s",num1);
    for(i=0;i<n;i++)
    {
        if(strcmp(p[i].num,num1)==0)
        {
            index=0;
            printf("%s %s %d %d %d",p[i].num,p[i].name,p[i].a,p[i].b,p[i].c);
        }
    }
    if(index==-1)
    {
        printf("Not Found");
    }
    return 0;
}

 

7-3 学生信息的那些操作

(3)按姓名,查个人

分数 10

有一学生成绩表,包括学号、姓名、3门课程成绩。请实现如下查找功能:输入一个学生的姓名,输出该学生学号、姓名、3门课程成绩

输入格式

首先输入一个整数n(1<=n<=100),表示学生人数;

然后输入n行,每行包含一个学生的信息:学号(12位)、姓名(不含空格且不超过20位),以及3个整数,表示3门课成绩,数据之间用空格隔开。

最后一行输入一个姓名name。

输出格式

若姓名name存在,输出所有该姓名学生的学号、姓名、3门课程成绩;若该姓名不存在,则输出Not Found。

输入样例

在这里给出一组输入。例如:

3
202016010101 Hanmeimei 89 78 95 
202016040201 Lilei 85 87 99 
202016040202 Hanmeimei 85 68 76
Hanmeimei

输出样例

在这里给出相应的输出。例如:

202016010101 Hanmeimei 89 78 95
202016040202 Hanmeimei 85 68 76

代码长度限制16 KB

时间限制400 ms

内存限制64 MB

Solution

#include <stdio.h>
#include <string.h>

struct stu
{
    char num[13];
    char name[21];
    int a;
    int b;
    int c;
};

int main()
{
    int n=0;
    scanf("%d",&n);
    struct stu p[n];
    char name[21]={0};
    int index=-1;
    int i=0;
    for(i=0;i<n;i++)
    {
        getchar();
        scanf("%s %s %d %d %d",p[i].num,p[i].name,&p[i].a,&p[i].b,&p[i].c);
    }
    getchar();
    scanf("%s",name);
    for(i=0;i<n;i++)
    {
        if(strcmp(p[i].name,name)==0)
        {
            index=0;
            printf("%s %s %d %d %d\n",p[i].num,p[i].name,p[i].a,p[i].b,p[i].c);
        }
    }
    if(index==-1)
    {
        printf("Not Found");
    }
    return 0;
}

 

7-4 学生信息的那些操作

(4)不知姓,也能查

分数 10

有一学生成绩表,包括学号、姓名、3门课程成绩。请实现如下查找功能:输入学生的姓名的部分信息,也能实现信息查询。比如,隔壁班的MM,你只听别人叫她“梅梅”,暗自查一下才知道MM叫“韩梅梅”,而且是学霸。

输入格式

第一行输入一个n(n小于100)代表学生个数,接下来n行每行输入学号(12位),姓名(不超过20位),3门课的成绩(不超过100)。

最后输入一个姓名name。

输出格式

输出所有姓名中含有name的学生信息,包括学号,姓名,3门课成绩,中间用空格隔开。

如果没有请输出Not Found。

注:包含指子串。

输入样例

在这里给出一组输入。例如:

3
202016040201 Hanmeimei 89 78 95 
202016040202 Wangli 85 87 99 
202016040203 Fangfang 85 68 76 
meimei

输出样例

在这里给出相应的输出。例如:

202016040201 Hanmeimei 89 78 95

代码长度限制16 KB

时间限制400 ms

内存限制64 MB

Solution

#include <stdio.h>
#include <string.h>

struct stu
{
    char num[13];
    char name[21];
    int a;
    int b;
    int c;
};

int main()
{
    int n=0;
    scanf("%d",&n);
    struct stu p[n];
    char name[21]={0};
    int index=-1;
    int i=0;
    for(i=0;i<n;i++)
    {
        getchar();
        scanf("%s %s %d %d %d",p[i].num,p[i].name,&p[i].a,&p[i].b,&p[i].c);
    }
    getchar();
    scanf("%s",name);
    
    for(i=0;i<n;i++)
    {
        char* ret=strstr(p[i].name,name);
        if(ret!=NULL)
        {
            index=0;
            printf("%s %s %d %d %d\n",p[i].num,p[i].name,p[i].a,p[i].b,p[i].c);
        }
    }
    if(index==-1)
    {
        printf("Not Found");
    }
    return 0;
}

 

7-7 学生信息的那些操作

(7)单科成绩排序

分数 10

有一学生成绩表,包括学号、姓名、3门课程成绩。请按要求排序输出:若输入1,则按第1门课成绩降序输出成绩表,若输入为i(1<=i<=3),则按第i门课成绩降序输出成绩表。

输入格式

首先输入一个整数n(1<=n<=100),表示学生人数;

然后输入n行,每行包含一个学生的信息:学号(12位)、姓名(不含空格且不超过20位),以及3个整数,表示3门课成绩,数据之间用空格隔开。

最后一行输入一个整数i,表示要求按第i门课成绩降序排序输出,若该门课成绩相同,则按学号升序。

输出格式

输出按第i门课降序排序的结果,格式见样例。

输入样例

在这里给出一组输入。例如:

3
202016040201 Zhangling 89 78 95
202016040202 Wangli 85 87 99
202016040203 Fangfang 85 68 76
1

输出样例

在这里给出相应的输出。例如:

202016040201 Zhangling 89 78 95 
202016040202 Wangli 85 87 99 
202016040203 Fangfang 85 68 76 

代码长度限制16 KB

时间限制1000 ms

内存限制64 MB

Solution

#include <stdio.h>
#include <stdlib.h>

struct stu
{
    char num[13];
    char name[21];
    int a;
    int b;
    int c;
};

int cmp_struct1(const void* e1,const void* e2)
{
    return ((struct stu*)e2)->a-((struct stu*)e1)->a;
}

int cmp_struct2(const void* e1,const void* e2)
{
    return ((struct stu*)e2)->b-((struct stu*)e1)->b;
}

int cmp_struct3(const void* e1,const void* e2)
{
    return ((struct stu*)e2)->c-((struct stu*)e1)->c;
}

int main()
{
    int n=0;
    int x;
    scanf("%d",&n);
    struct stu p[n];
    int i=0;
    for(i=0;i<n;i++)
    {
        scanf("%s %s %d %d %d",p[i].num,p[i].name,&p[i].a,&p[i].b,&p[i].c);
     }
    
    scanf("%d",&x);
    if(x==1)
    {
        qsort(p,n,sizeof(p[0]),cmp_struct1);
    }
    if(x==2)
    {
        qsort(p,n,sizeof(p[0]),cmp_struct2);
    }
    if(x==3)
    {
        qsort(p,n,sizeof(p[0]),cmp_struct3);
    }
    
    for(i=0;i<n;i++)
    {
        printf("%s %s %d %d %d \n",p[i].num,p[i].name,p[i].a,p[i].b,p[i].c);
    }
    
    return 0;
}

 

7-6 寻找250

分数 10

对方不想和你说话,并向你扔了一串数…… 而你必须从这一串数字中找到“250”这个高大上的感人数字。

输入格式

输入在一行中给出不知道多少个绝对值不超过1000的整数,其中保证至少存在一个“250”。

输出格式

在一行中输出第一次出现的“250”是对方扔过来的第几个数字(计数从1开始)。题目保证输出的数字在整型范围内。

输入样例

888 666 123 -233 250 13 250 -222

输出样例

5

代码长度限制16 KB

时间限制400 ms

内存限制64 MB

Solution

#include <stdio.h>

int main()
{
    int arr[100000];
    int i=0;
    for(i=0;i<sizeof(arr)/sizeof(arr[0]);i++)
    {
        scanf("%d",&arr[i]);
    }
    for(i=0;i<sizeof(arr)/sizeof(arr[0]);i++)
    {
        if(arr[i]==250)
        {
            printf("%d",i+1);
            return 0;
        }
    }
    return 0;
}

 

7-5 求整数段和

分数 10

给定两个整数AB,输出从AB的所有整数以及这些数的和。

输入格式

输入在一行中给出2个整数AB,其中−100≤AB≤100,其间以空格分隔。

输出格式

首先顺序输出从AB的所有整数,每5个数字占一行,每个数字占5个字符宽度,向右对齐。最后在一行中按Sum = X的格式输出全部数字的和X。

输入样例

-3 8

输出样例

   -3   -2   -1    0    1
    2    3    4    5    6
    7    8
Sum = 30

代码长度限制16 KB

时间限制400 ms

内存限制64 MB

Solution

#include  <stdio.h>

int main()
{
    int a=0;
    int b=0;
    scanf("%d %d",&a,&b);
    int i=0;
    int sum=0;
    int count=1;
    for(i=a;i<=b;i++)
    {
        printf("%5d",i);
        if(count%5==0||i==b)
        {
            printf("\n");
        }
        sum+=i;
        count++;
    }
    printf("Sum = %d",sum);
    return 0;
}

 

7-4 谁是赢家

分数 10

某电视台的娱乐节目有个表演评审环节,每次安排两位艺人表演,他们的胜负由观众投票和 3 名评委投票两部分共同决定。规则为:如果一位艺人的观众票数高,且得到至少 1 名评委的认可,该艺人就胜出;或艺人的观众票数低,但得到全部评委的认可,也可以胜出。节目保证投票的观众人数为奇数,所以不存在平票的情况。本题就请你用程序判断谁是赢家。

输入格式

输入第一行给出 2 个不超过 1000 的正整数 Pa 和 Pb,分别是艺人 a 和艺人 b 得到的观众票数。题目保证这两个数字不相等。随后第二行给出 3 名评委的投票结果。数字 0 代表投票给 a,数字 1 代表投票给 b,其间以一个空格分隔。

输出格式

按以下格式输出赢家:

The winner is x: P1 + P2

其中 x 是代表赢家的字母,P1 是赢家得到的观众票数,P2 是赢家得到的评委票数。

输入样例

327 129
1 0 1

输出样例

The winner is a: 327 + 1

代码长度限制16 KB

时间限制400 ms

内存限制64 MB

Solution

#include <stdio.h>

int main()
{
    int pa=0;
    int pb=0;
    scanf("%d %d",&pa,&pb);
    int x,y,z;
    scanf("%d %d %d",&x,&y,&z);
    if((pa>pb&&x+y+z<3)||(pa<pb&&x+y+z==0))
    {
        printf("The winner is a: %d + %d",pa,3-x-y-z);
    }
    if((pb>pa&&x+y+z>=1)||(pb<pa&&x+y+z==3))
    {
        printf("The winner is b: %d + %d",pb,x+y+z);
    }
    return 0;
}

 

6-1 使用递归函数计算1到n之和

分数 10

本题要求实现一个用递归计算1+2+3+…+n的和的简单函数。

函数接口定义

int sum( int n );

该函数对于传入的正整数n返回1+2+3+…+n的和;若n不是正整数则返回0。题目保证输入输出在长整型范围内。建议尝试写成递归函数。

裁判测试程序样例

#include <stdio.h>
int sum( int n );
int main(){
int n;
scanf("%d", &n);
printf ("%d\n", sum(n));
return 0;
}
/* 你的代码将被嵌在这里 */

输入样例1

10

输出样例1

55

输入样例2

0

输出样例2

0

代码长度限制16 KB

时间限制400 ms

内存限制64 MB

Solution

int sum( int n )
{
    int sum1=0;
    if(n<=0)
    {
        return 0;
    }
    else
    {
        sum1=sum(n-1)+n;
    }
    return sum1;
}

 

6-2 递归实现指数函数

分数 15

本题要求实现一个计算xnn≥1)的函数。

函数接口定义

double calc_pow( double x, int n );

函数calc_pow应返回x的n次幂的值。建议用递归实现。题目保证结果在双精度范围内。

裁判测试程序样例

#include <stdio.h>
double calc_pow( double x, int n );
int main(){
double x;
int n;
scanf("%lf %d", &x, &n);
printf("%.0f\n", calc_pow(x, n));
return 0;
}
/* 你的代码将被嵌在这里 */

输入样例

2 3

输出样例

8

代码长度限制16 KB

时间限制400 ms

内存限制64 MB

Solution

double calc_pow( double x, int n )
{
    int sum=1;
    if(n>=1)
    {
        sum=x*calc_pow(x,n-1);
    }
    return sum;
}

 

6-3 递归计算Ackermenn函数

分数 15

本题要求实现Ackermenn函数的计算,其函数定义如下:

函数接口定义

intAck( int m, int n );

其中m和n是用户传入的非负整数。函数Ack返回Ackermenn函数的相应值。题目保证输入输出都在长整型

范围内。

裁判测试程序样例

#include<stdio.h>intAck( int m, int n );
intmain(){
int m, n;
scanf("%d %d", &m, &n);
printf("%d\n", Ack(m, n));
return0;
}
/* 你的代码将被嵌在这里 */

输入样例

2 3

输出样例

9

代码长度限制16 KB

时间限制400 ms

内存限制64 MB

Solution

int Ack( int m, int n )
{
    int sum=0;
    if(m==0)
    {
        sum=n+1;
    }
    if(n==0&&m>0)
    {
        sum=Ack(m-1,1);
    }
    if(m>0&&n>0)
    {
        sum=Ack(m-1,Ack(m,n-1));
    }
    return sum;
}

 

6-4 递归求Fabonacci数列

分数 10

本题要求实现求Fabonacci数列项的函数。Fabonacci数列的定义如下:

f(n)=f(n−2)+f(n−1) (n≥2),其中f(0)=0,f(1)=1。

函数接口定义

int f( int n );

函数f应返回第n个Fabonacci数。题目保证输入输出在长整型范围内。建议用递归实现。

裁判测试程序样例

#include <stdio.h>
int f( int n );
int main(){
int n;
scanf("%d", &n);
printf("%d\n", f(n));
return 0;
}
/* 你的代码将被嵌在这里 */

输入样例

6

输出样例

8

代码长度限制16 KB

时间限制400 ms

内存限制64 MB

Solution

int f( int n )
{
    long long sum=0;
    if(n==0)
    {
        sum=0;
    }
    if(n==1)
    {
        sum=1;
    }
    if(n!=0&&n!=1)
    {
        sum=f(n-2)+f(n-1);
    }
    return sum;
}

 

6-8 递归计算P函数

分数 15

本题要求实现下列函数P(n,x)的计算,其函数定义如下:

函数接口定义

doubleP( int n, double x );

其中n是用户传入的非负整数,x是双精度浮点数。函数P返回P(n,x)函数的相应值。题目保证输入输出都在双精度范围内。

裁判测试程序样例

#include<stdio.h>doubleP( int n, double x );
intmain(){
int n;
double x;
scanf("%d %lf", &n, &x);
printf("%.2f\n", P(n,x));
return0;
}
/* 你的代码将被嵌在这里 */

输入样例

10 1.7

输出样例

3.05

代码长度限制16 KB

时间限制400 ms

内存限制64 MB

Solution

double P( int n, double x )
{
    double sum=0;
    if(n==0)
    {
        sum=1;
    }
    if(n==1)
    {
        sum=x;
    }
    if(n>1)
    {
        sum=((2*n-1)*P(n-1,x)-(n-1)*P(n-2,x))*1.0/n;
    }
    return sum;
}

 

 

 6-1 两整数排序(降序)

分数 10

请编写函数,对两个整数按降序排序。

函数原型

void IntSortDsc(int *x, int *y);

说明:参数 x 和 y 为指示两个整型变量的指针,函数值对这两个变量进行排序,使 x 和 y 所指变量的值按由大到小的顺序排列。

裁判程序

#include <stdio.h> 
void IntSwap(int *x, int *y); 
void IntSortDsc(int *x, int *y); 
int main() 
{ 
    int a, b; scanf("%d %d", &a, &b); 
    IntSortDsc(&a, &b); 
    printf("%d %d\n", a, b); 
    return 0; 
} 
void IntSwap(int *x, int *y) { ...(略)... } /* 你提交的代码将被嵌在这里 */

输入样例

-15 27

输出样例

27 -15

要求:调用前面作业中的 IntSwap 函数交换两个整数的值。


关联习题:交换整数。

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

Solution

void IntSortDsc(int *x, int *y)
{
    if (*x < *y)
    {
        IntSwap(x, y);
    }
}

 

 6-2 计算两数的和与差

分数 10

本题要求实现一个计算输入的两数的和与差的简单函数。

函数接口定义:

void sum_diff( float op1, float op2, float *psum, float *pdiff );

其中op1op2是输入的两个实数,*psum*pdiff是计算得出的和与差。

裁判测试程序样例:

#include <stdio.h> 
void sum_diff( float op1, float op2, float *psum, float *pdiff ); 
int main() 
{ 
    float a, b, sum, diff; 
    scanf("%f %f", &a, &b); 
    sum_diff(a, b, &sum, &diff); 
    printf("The sum is %.2f\nThe diff is %.2f\n", sum, diff); 
    return 0; 
} 
/* 你的代码将被嵌在这里 */

输入样例:

4 6

输出样例:

The sum is 10.00
The diff is -2.00

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

Solution

void sum_diff( float op1, float op2, float *psum, float *pdiff )
{
    *psum = op1 + op2;
    *pdiff = op1 - op2;
}

 

6-3 使用函数找出数组中的最大值

分数 10

本题要求实现一个找出整型数组中最大值的函数。

函数接口定义:

int FindArrayMax( int a[], int n );

其中a是用户传入的数组,n是数组a中元素的个数。函数返回数组a中的最大值。

裁判测试程序样例:

#include <stdio.h> 
#define MAXN 10 
int FindArrayMax( int a[], int n ); 
int main() 
{
    int i, n; 
    int a[MAXN]; 
    scanf("%d", &n); 
    for( i=0; i<n; i++ )
    { 
        scanf("%d", &a[i]); 
    } 
    printf("%d\n", FindArrayMax(a, n)); 
    return 0; 
} 
/* 请在这里填写答案 */

输入样例:

4
20 78 99 -14

输出样例:

99

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

Solution

#include<limits.h>
int FindArrayMax( int a[], int n )
{
    int res = INT_MIN;
    for (int i = 0; i < n; i ++ )
    {
        if (res < a[i]) res = a[i];
    }
    return res;
}

6-4 在数组中查找指定元素

分数 15

本题要求实现一个在数组中查找指定元素的简单函数。

函数接口定义:

int search( int list[], int n, int x );

其中list[]是用户传入的数组;n(≥0)是list[]中元素的个数;x是待查找的元素。如果找到

则函数search返回相应元素的最小下标(下标从0开始),否则返回−1。

裁判测试程序样例:


#include <stdio.h> 
#define MAXN 10 
int search( int list[], int n, int x ); 
int main() 
{ 
    int i, index, n, x; int a[MAXN]; 
    scanf("%d", &n); 
    for( i = 0; i < n; i++ ) 
        scanf("%d", &a[i]); 
        scanf("%d", &x); 
        index = search( a, n, x ); 
        if( index != -1 ) 
            printf("index = %d\n", index); 
        else printf("Not found\n"); 
return 0; 
} 
/* 你的代码将被嵌在这里 */

输入样例1:

5
1 2 2 5 4
2

输出样例1:

index = 1

输入样例2:

5
1 2 2 5 4
0

输出样例2:

Not found

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

Solution

int search( int list[], int n, int x )
{
    int t = -1;
    for (int i = 0; i < n; i ++ )
    {
        if (list[i] == x)
        {
            t = i;
            break;
        }
    }
    return t;
}

 6-5 查找星期

本题要求实现函数,可以根据下表查找到星期,返回对应的序号。

序号星期
0Sunday
1Monday
2Tuesday
3Wednesday
4Thursday
5Friday
6Saturday

函数接口定义:

int getindex( char *s );

函数getindex应返回字符串s序号。如果传入的参数s不是一个代表星期的字符串,则返回-1。

裁判测试程序样例:

#include <stdio.h>
#include <string.h>

#define MAXS 80

int getindex( char *s );

int main()
{
    int n;
    char s[MAXS];
    
    scanf("%s", s);
    n = getindex(s);
    if ( n==-1 ) printf("wrong input!\n");
    else printf("%d\n", n);

    return 0;
}

/* 你的代码将被嵌在这里 */

输入样例1:

Tuesday

输出样例1:

2

输入样例2:

today

输出样例2:

wrong input!

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

Solution

int getindex( char *s )
{
    if (!strcmp(s, "Sunday"))   return 0;
    else if (!strcmp(s, "Monday"))   return 1;
    else if (!strcmp(s, "Tuesday"))   return 2;
    else if (!strcmp(s, "Wednesday"))   return 3;
    else if (!strcmp(s, "Thursday"))   return 4;
    else if (!strcmp(s, "Friday"))   return 5;
    else if (!strcmp(s, "Saturday"))   return 6;
    else return -1;
}

 6-6 字符串的连接

本题要求实现一个函数,将两个字符串连接起来。

函数接口定义:

char *str_cat( char *s, char *t );

函数str_cat应将字符串t复制到字符串s的末端,并且返回字符串s的首地址。

裁判测试程序样例:

#include <stdio.h>
#include <string.h>

#define MAXS 10

char *str_cat( char *s, char *t );

int main()
{
    char *p;
    char str1[MAXS+MAXS] = {'\0'}, str2[MAXS] = {'\0'};
    
    scanf("%s%s", str1, str2);
    p = str_cat(str1, str2);
    printf("%s\n%s\n", p, str1);
    
    return 0;
}

/* 你的代码将被嵌在这里 */

输入样例:

abc
def

输出样例:

abcdef
abcdef

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

Solution

char *str_cat( char *s, char *t )
{
    strcat(s, t);
    return s;
}

 7-1 输出平均分最高的学生信息

假设学生的基本信息包括学号、姓名、三门课程成绩以及个人平均成绩,定义一个能够表示学生信息的结构类型。输入n(1<=n<=10)个学生的成绩信息,计算并输出平均分最高的学生信息,平均分保留两位小数。如果平均分最高的学生有多个,按输入顺序输出第一个学生的信息。

输入格式

输入整数n(1<=n<=10),在下面n行输入n个学生的信息,包括学号、姓名、三门课程成绩(整数)。

输出格式

在一行中输出平均分最高的学生信息:学号、姓名、平均分(保留两位小数)。

输入样例

3
101 Zhang 78 87 85
102 Wang 91 88 90
103 Li 75 90 84

输出样例

num:102,name:Wang,average:89.67

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

Solution

#include<bits/stdc++.h>

using namespace std;

struct node{
    int id;
    char name[20];
    int a, b, c;
    double s;
}a[20];

bool cmp(const node &a, const node &b)
{
    return a.s > b.s;
}

int main()
{
    int n;
    cin >> n;
    for (int i = 0; i < n; i ++ )
    {
        cin >> a[i].id >> a[i].name >> a[i].a >> a[i].b >> a[i].c;
        a[i].s = (a[i].a + a[i].b + a[i].c) / 3.0;
    }
    sort(a, a + n, cmp);
    printf("num:%d,name:%s,average:%.2f", a[0].id, a[0].name, a[0].s);
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/651596.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ABAP 新语法--Open SQL

1. 常量 1.1 常量赋值 常量字段可以用来为内表中的部分字段赋初始值&#xff0c;字段类型和长度依据输入常量的值决定 SELECTmara~matnr, " 物料号mara~matkl, " 物料组mara~mtart, " 物料类型 AS lkenz, " 删除标识&#xff0c;常量空字符串123 AS fla…

STM32 Proteus仿真自动红外避障小车前进后退左右转 -0040

STM32 Proteus仿真自动红外避障小车前进后退左右转 -0040 Proteus仿真小实验&#xff1a; STM32 Proteus仿真自动红外避障小车前进后退左右转 -0040 功能&#xff1a; 硬件组成&#xff1a;STM32F103C LCD1602 L298N电机控制电路2个电机一个左轮一个右轮 2个按键(模拟两个避…

Web安全:bWAPP 靶场搭建.(集成了各种常见漏洞和最新漏洞的开源Web应用程序)

Web安全&#xff1a;bWAPP 靶场搭建. bWAPP是一个集成了了常见漏洞的 web 应用程序&#xff0c;目的是作为漏洞测试的演练场&#xff0c;帮助安全爱好者&#xff0c;开发人员和学生发现和防止Web漏洞。它有超过100个网络漏洞数据&#xff0c;包括所有主要的已知网络漏洞. 目录…

谷粒商城第三天-微服务中基本组件的使用

目录 一、前言 二、学习的内容 一、Nacos的服务注册/发现 1. 导依赖&#xff0c;nacos-discovery java.lang.AbstractMethodError: org.springframework.cloud.netflix.ribbon.RibbonLoadBalancerClient.cho 2. 在application.yml中声明nacos服务器的ip地址和端口号&…

MySQL常见问题

优化慢查询 慢查询可能出现的情况&#xff1a; 聚合查询多表查询表数据量过大深度分页查询 表象&#xff1a;页面加载过慢&#xff0c;接口压测响应时间过长&#xff08;超过1s&#xff09; 如何定位慢查询&#xff1f; 方案一&#xff1a;开源工具 可以使用相应的调试工具&a…

数据库SQL查询(一)

本文介绍SQL查询&#xff0c;如何在海量数据中筛选想要数据&#xff1b; 数据库管理系统选择&#xff1a;关系型数据库mysql 数据库管理工具选择&#xff1a;navicat 本文中查询语句和查询案例参考自&#xff1a;https://edu.csdn.net/course/detail/27673?ops_request_mis…

管理类联考——英语——趣味篇——背诵单词

考友方法推荐 词根词缀巧记考研英语大纲词汇 ⼀、词根词缀构词法的威⼒ 《考研英语⼤纲》要求考⽣掌握 5500 个词汇及相关词组&#xff0c;我们将这 5500 个单词&#xff0c;分成了三类&#xff0c;通过第⼀类“3450 基础⾼频词汇”的学习&#xff0c;考⽣夯实了基础&#xf…

Fmoc-保护氨基酸合成中的新型底物:Fmoc-Thr(Ac4Manα1-2Ac3Manα)-OH,CAS:482576-73-8

文章关键词&#xff1a;糖化学试剂&#xff0c;多肽合成&#xff0c;Fmoc-保护氨基酸&#xff0c;糖基化修饰一、产品描述&#xff1a; 西安凯新生物科技有限公司供应的​Fmoc-Thr(Ac4Manα1-2Ac3Manα)-OH&#xff0c;多肽固相合成法&#xff0c;基于Fmoc化学合成&#xff0c…

[学习笔记] [机器学习] 12. [下] HMM 隐马尔可夫算法(马尔科夫链、HMM 三类问题、前后后向算法、维特比算法、鲍姆-韦尔奇算法、API 及实例)

5. 维特比算法解码隐藏状态序列 Q Q Q 学习目标&#xff1a; 知道维特比算法解码隐藏状态序列 Q Q Q 在本篇我们会讨论维特比算法解码隐藏状态序列 Q Q Q&#xff0c;即给定模型 λ \lambda λ 和观测序列 O O O&#xff0c;求给定观测序列 O O O 条件下&#xff0c;最…

使用华为云开发者插件一键部署应用到ECS

前言 笔者是一名码龄5年左右的程序员&#xff0c;大学是能源行业&#xff0c;处于对技术&#xff08;碎银几两&#xff09;的热爱&#xff0c;选择投身搬砖之路。从用C语言在控制台打印第一句“Hello World&#xff01;”开始&#xff0c;笔者陆续接触过C/C、Java、Golang、Py…

STM32 Proteus仿真4x4矩阵15位抢答器数码管TM1637显示-0039

STM32 Proteus仿真4x4矩阵15位抢答器数码管TM1637显示-0039 Proteus仿真小实验&#xff1a; STM32 Proteus仿真4x4矩阵15位抢答器数码管TM1637显示-0039 功能&#xff1a; 硬件组成&#xff1a;STM32F103R6单片机 TM1637驱动4位数码管4x4矩阵键盘蜂鸣器 1.有一个开启键&am…

【Unity Shader】从入门到着魔(1)基本概念:什么是网格?材质?Shader?

文章目录 一、什么是网格(Mesh)?二、什么是MeshFilter(网格过滤器)?三、什么是MeshRenderer(网格渲染器)?四、什么是材质(Material)?五、什么是Shader(着色器)?一、什么是网格(Mesh)? 如上图,模型的三角形面就叫做网格(Mesh),它的本质是一堆顶点数据的规则…

前端基础知识学习——获取dom对象、获取html属性、获取内容、更改样式、创建dom元素、删除元素、代替元素(十)

<!DOCTYPE html> <html lang"en"><head ><meta charset"utf-8" /><title>这是一首离别信</title><script src"https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script></head&g…

Git 基础知识

看版本 git --version 初始化 git init &#xff08;需要在准备建的仓库的目标文件夹根目录下运行&#xff09; 初始化一个仓库供所有其他人一起使用&#xff0c;平时一般都是建好的&#xff0c;个人克隆拉取这个仓库到本地进行编辑。 初始化会产生一个分支叫 master 初…

vue3创建新项目报错:Cannot find module ‘xxx‘

创建vue3项目&#xff0c;命令&#xff1a; 1. 使用vite创建&#xff1a; npm create vitelatest my-vue-app -- --template vue-ts 2.使用vue官方命令&#xff1a; npm init vuelatest 创建vue3模板学习vue3.3的新语法&#xff0c;创建完成后发现文件很多爆红&#xff1a…

华为虚拟化openEuler release 22.03 (LTS-SP1)安装VMTools

华为虚拟化openEuler release 22.03 (LTS-SP1)安装VMTools 环境 虚拟化平台&#xff1a;华为Fusioncompute 6.5.1.SPH6 X86 虚拟机操作系统&#xff1a;openEuler release 22.03 (LTS-SP1) VMTools版本&#xff1a;vmtools-2.5.0.155.tar.bz2 默认vmtools不支持openEuler rele…

【C/C++练习】合并k个已排序的链表

目录 &#x1f43b;题目描述&#xff1a; &#x1f43b;‍❄️思路一&#xff1a;暴力求解法 &#x1f43c;第一步&#xff1a;确定合并后链表的头节点rhead&#x1f43c;第二步&#xff1a;选择次小的进行尾插&#x1f43c;代码实现&#xff1a; &#x1f43b;‍❄️思路二&a…

《C++继承》

本文主要介绍继承的相关知识 文章目录 思维导图一、继承的概念及定义1.继承的概念2.继承的定义2.1 定义格式2.2 继承关系和访问限定符2.3 继承基类成员访问方式的变化 二、基类和派生类对象的赋值转换三、继承中的作用域四、派生类的默认成员函数五、继承与友元六、继承与静态成…

Vue中的Ajax 配置代理 slot插槽

4.1.Vue脚手架配置代理 本案例需要下载axios库npm install axios 配置参考文档Vue-Cli devServer.proxy vue.config.js 是一个可选的配置文件&#xff0c;如果项目的 (和 package.json 同级的) 根目录中存在这个文件&#xff0c;那么它会被 vue/cli-service 自动加载。你也可…

【OJ比赛日历】快周末了,不来一场比赛吗? #06.17-06.23 #13场

CompHub[1] 实时聚合多平台的数据类(Kaggle、天池…)和OJ类(Leetcode、牛客…&#xff09;比赛。本账号会推送最新的比赛消息&#xff0c;欢迎关注&#xff01; 以下信息仅供参考&#xff0c;以比赛官网为准 目录 2023-06-17&#xff08;周六&#xff09; #2场比赛2023-06-18…