第二次上机考试补题报告

一.做题情况

二.题目

      7-1最受欢迎的菜品

 

 

 做题时的代码:

 

#include<stdio.h>
int main()
{
    int n=0,i=0,k=0,t=0,j=0,m=0;
    scanf("%d",&n);
    int a[1000];
    int c=n+1,b[c];
    while(scanf("%d",&a[i])!=EOF)
    {
        i++;
    }
    m=i;
    for(i=0;i<m;i++)
    {
        for(k=0;k<n;k++)
        {
            if(a[i]==k)
            {
                b[k-1]++;
            }
        }
    }
    for(i=1;i<n;i++)
    {
        if(b[i]>b[i-1])
        {
            j=i;
        }
    }
    for(i=0;i<n;i++)
    {
        if(b[j]==b[i])
        {
            if(i<j)
            {
                printf("%d %d\n",i+1,b[i]);
            }
        }
    }
    printf("%d %d",j+1,b[j]);
    return 0;
}

 

     把问题想的过于复杂了,而且代码写的很乱

后来思考的代码:

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

return k;
}

      但是还是有个地方过不了

       7-2 字符串循环左移

 

 

 做题时的代码:

#include<stdio.h>
void link(char s1[],char s2[]);
int main()
{
    int i=0,n=0,N=0,k=0;
    char a[1000];
    char c[1000];
    gets(a);
    while(a[i]!='\0')
    {
        i++;
    }
    n=i;
    scanf("%d",&N);
    if(N<n)
    {
        for(i=0;i<N;i++)
        {
            c[i]=a[i];
        }
        link(a,c);
    }else
    {
        k=N%n;
        for(i=0;i<k;i++)
        {
            c[i]=a[i];
        }
        link(a,c);
    }
    return 0;
}
void link(char s1[],char s2[])
{
 int i,j;
 i=0;
 while(s1[i]!='\0')
 i++;
 for(j=0;j<i;j++)
 {
     s1[i]=s2[j];
     i++;
 }
 puts(s1);
}

      又把简单的问题想难了,当时还想直接找个函数接一下,但是其实直接输出原字符数组里的东西就可以了,于是有了以下代码

后来思考的代码:

 

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

     7-3 顺时针矩阵

 

 

         考试时没想出来应该怎么写,现在想想应该是需要用一下二维数组

后来思考的代码:

 

#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;
}

 

posted @ 2021-12-12 21:07  鸢凛  阅读(32)  评论(0编辑  收藏  举报