1. 程式人生 > 其它 >第二次上機考試補題報告

第二次上機考試補題報告

一.做題情況

二.題目

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