补题报告2

1.求方阵和

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

函数接口定义:

void createMatrix(int a[][N]);  //创建n阶方阵a[N][N],裁判程序实现,细节略。
int sumMatrix(int a[][N]);  //计算方阵除对角线、最后一列和最后一行以外的所有元素之和。
 

裁判测试程序样例:

#include<stdio.h>
#define N 10
void createMatrix(int a[][N]);
int sumMatrix(int a[][N]);
int main()
{
    int a[N][N];
    createMatrix(a);
    printf("%d\n",sumMatrix(a));
    return 0;
}

/* 请在这里填写答案 */
 

输入样例:

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

1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10 
1 2 3 4 5 6 7 8 9 10 
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
 
结尾无空行

输出样例:

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

360
 
结尾无空行
int sumMatrix(int a[][N]){
int i,j=0; int sum=0; for(i=0;i<N;i++){ for(j=0;j<N;j++){ if(i!=j&&i!=N-1&&j!=N-1){ sum=sum+a[i][j]; } } }return sum; }

2.最受欢迎的菜品

某自助餐厅要求餐厅的客人在就餐后进行投票,选出一款最喜爱的菜品,每日营业结束后进行投票统计,选出投票数最多的菜品为最受欢迎的菜品。 请编写一个程序帮助餐厅快速完成这个统计工作。

输入格式:

第1行中给出一个正整数n(不超出1000),表示菜品的数量,每个菜品使用1~n进行编号。 第2行输入若干以空格间隔的正整数,表示客人投出的最喜爱的菜品编号,以键盘结束符^Z或文件结束符结束输入。

输出格式:

每行输出一个最受欢迎的菜品编号和得票数。 菜品编号和得票数间隔1个空格。如果有并列的最受欢迎的菜品,则按编号从小到大的顺序输出每一个菜品,每个菜品占一行。

输入样例:

10
6 8 5 8 9 3 6 6 8 2 1 4 7 2 8 3 8 9 6 3 8 10 6 6
 
结尾无空行

输出样例:

6 6
8 6
 
结尾无空行
#include<stdio.h>
int main(){
    int n,i=0,j=0,c;
    int a[1001],b[1001]={0};
    scanf("%d",&n);
    for(i=0;i<n;i++){
        a[i]=i+1;
    }
    while(scanf("%d",&c)!=EOF){
        for(j=0;j<n;j++){
            if(c==a[j])
                b[j]++;
        }
    }
   int max=0;
    for(i=0;i<n;i++){
        if(b[i]>b[max])
            max=i;
    }
    for(j=0;j<n+1;j++){
        if(b[j]==b[max])
            printf("%d %d\n",j+1,b[max]);
    }
    return 0;
}

3.字符串循环左移

输入一个字符串和一个非负整数N,要求将字符串循环左移N次。

输入格式:

输入在第1行中给出一个不超过100个字符长度的、以回车结束的非空字符串;第2行给出非负整数N。

输出格式:

在一行中输出循环左移N次后的字符串。

输入样例:

Hello World!
2
 
结尾无空行

输出样例:

llo World!He
 
结尾无空行
#include<stdio.h>
int main(){
    int i=0,len=0,N;
    char s[100];
    while((s[len]=getchar())!='\n'){
        len++;
    }
    scanf("%d",&N);
    N%=len;
    for(i=N;i<len;i++){
        printf("%c",s[i]);
    }
    for(i=0;i<N;i++){
        printf("%c",s[i]);
    }
    return 0;
}

4.顺时针矩阵

读入20内正整数正整数n,输出顺时针分布的矩阵。矩阵内容为1,2,。。。到n*n。

输入格式:

每个实例包含一个20内正整数。

输出格式:

顺时针分布的矩阵,每个数据占4位。

输入样例:

7
 
结尾无空行

输出样例:

  19  20  21  22  23  24   1
  18  37  38  39  40  25   2
  17  36  47  48  41  26   3
  16  35  46  49  42  27   4
  15  34  45  44  43  28   5
  14  33  32  31  30  29   6
  13  12  11  10   9   8   7
 
结尾无空行
#include<stdio.h>
int main(){
    int N,i,j,n,num=1;
    int a[21][21];
    scanf("%d",&N);
    for(n=0;n<=N/2;n++){
        for(i=n;i<N-n-1;i++)
            a[i][N-n-1]=num++;
        for(j=N-n-1;j>n;j--)
            a[N-n-1][j]=num++;
        for(i=N-n-1;i>=n;i--)
            a[i][n]=num++;
        for(j=n+1;j<N-n-1;j++)
            a[n][j]=num++;
    }
    for(i=0;i<N;i++){
        for(j=0;j<N;j++)
            printf("%4d",a[i][j]);
        printf("\n");
    }
    return 0;
}

5.本题目要求将键盘输入的一个整数使用递归函数Porder,正序打印出来。

#include<stdio.h>
void Porder(int n);
int main()
{
    int num;
    scanf("%d",&num);
    Porder(num);
    return 0;
}

void Porder(int n){
    if ( n>=10) {
        Porder ( n/10);
    }
    printf ( "%d\n",n%10) ;
}
posted @ 2021-12-12 23:51  Hirom  阅读(127)  评论(0编辑  收藏  举报