第二阶段补题报告

7-1 最受欢迎的菜品 

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

原代码

#include <stdio.h>
int main(){
    int n,i,j;
    scanf("%d",&n);
    int a[n];
    int b[1000]={0};
    for(i=0;i<n;i++){
        scanf("%d",&a[i]);
    }
    for(i=0;i<n;i++){
        for(j=1;j<=n;j++){
            if(a[i]==j)
                b[j]++;
        }
    }
    int flag;
    for(i=1;i<n+1;i++){
        flag=b[1];
        if(b[i+1]>b[i])
            flag=b[i+1];
    }
    printf("%d",flag);
    return 0;
}

  答案错误,题目没有认真看

改正后:

#include<stdio.h>
int main() {
    int N;
    scanf("%d", &N);
    int n, num[1001] = { 0 };
    while (scanf("%d", &n) != EOF) {
        num[n]++;
    }
    int i,max=1;
    for (i = 1; i <= N; i++) {
        if (num[i] >= num[max]) {
            max = i;
        }
    }
    int j;
    for (j = 1; j <= N; j++) {
        if (num[j] == num[max]) {
            printf("%d %d\n", j, num[j]);
        }
    }
    return 0;
}

7-2 字符串循环左移

原代码

#include <stdio.h>
#define N 100
int main(){
    int n,i=0,j;
    char c[N];
    char a[N];
    while((c[i]=getchar())!='\n'){
        i++;
    }
    c[i]='\0';
    scanf("%d",&n);
    if(strlen(c)/n==0&&n!=0){
        puts(c);
    }
    else{
    for(i=0;c[i]!='\0';i++){
        a[i]=c[i+n];
    }
    for(i=0;i<N;i++){
        printf("%c",a[i]);
    }
    }
    return 0;
}

答案错误,不知道为什么第二个数组输出为空白

改正后:

#include<stdio.h>   
int main()  
{
    int n,i;
    char a[101],b[101];
    gets(a);
    scanf("%d",&n);
    int k=strlen(a);
    if(n>strlen(a))
    n=n-strlen(a);
    for(i=0;i<n;i++){
        b[i]=a[i];
}
    for(i=n;i<k;i++)
    printf("%c",a[i]);
    for(i=0;i<n;i++)
    printf("%c",b[i]);
    return 0;
}

7-3 顺时针矩阵

#include<stdio.h>
#include<stdlib.h>
#define X 100
int main(){
   int N,m=1;
   int i,j,k,z,c;
   int a[X][X]={0};
   scanf("%d",&N);
   for(c=0;c<=N/2+1;c++){
        for(j=c;j<N-c;j++){
           a[j][N-c-1]=m++;
        }
        for(k=N-c-2;k>=c;k--){
            a[N-c-1][k]=m++;
        }
        for(z=N-c-2;z>=c+1;z--){
            a[z][c]=m++;
        }
       for(i=c;i<N-c-1;i++){
            a[c][i]=m++;
        }
   }
   for(i=0;i<N;i++){
    for(j=0;j<N;j++){
        printf("%4d",a[i][j]);
    }
    printf("\n");
   }
 
}

( 还没有看懂具体原理是什么)

posted @ 2021-12-12 23:19  榴莲炒西瓜  阅读(34)  评论(0编辑  收藏  举报