1. 程式人生 > 其它 >第二次上機考的錯題

第二次上機考的錯題

改前:

改後:

因為這一個排序我們排到倒2個時最後一個就也好了,所以只需要n-1;

填空題第三題:

忘記給第一個sl【1】加上字尾;

函式題:第一題

改後

這一個那時候思路是先算全部的和再減去另外三個的和;然後太過於複雜可能出現一些細節的錯誤;改後直接減去了末尾;只需要在加上一個條件排除了對角線的就可以了

程式設計題第一題:

改後: 、

在dve裡面運出來了;然後在pta裡面忘記選擇c++了

程式設計題第二題:

改後:

考試時候的思路是先算出字元的長度但是忘記計算長度的函數了 ,然後下面就不會繼續下去了;改了之後就是先算出字串的長度,然後輸入需要的長度 ,定義一個新陣列,進入迴圈,新陣列先儲存後面的幾個字元提到前面,然後在將前面的字元放在新陣列的後面。

第三題:

改後;

#include<stdio.h>
#include<string.h>
int main()
{
int n,i,j;
scanf("%d",&n);
int a[n][n];
int r=0,c=n-1;
int cnt=n-1;
int num=1;
for(i=0;i<=n-3;i++)
{
for(j=0;j<cnt;j++)
{
a[r][c]=num++;
r++;
}
for(j=0;j<cnt;j++)
{
a[r][c]=num++;
c--;
}
for(j=0;j<cnt;j++)
{
a[r][c]=num++;
r--;
}
for(j=0;j<cnt;j++)
{
a[r][c]=num++;
c++;
}
cnt-=2;
c--;
r++;
}
if(n%2)
{
a[(n+1)/2-1][(n+1)/2-1]=num;
}
for(i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
printf("%4d",a[i][j]);
}
if(i!=n)
printf("\n");
}
return 0;
}

這一個題我一開始沒有思路,後面通過舍友的指導,首先先找到思路,先定義一個大迴圈,然後我們是要先進入迴圈先從a【1】【n】開始;先向下迴圈,然後在向左迴圈,然後在向上迴圈,最後向右迴圈,這樣子就是第一個圈,然後每一次我們都要迴圈一個圈,每一次迴圈一個圈後我們的行,列都會少2,所以cnt要減2 .;如果當n是奇數時最中間的數是num++;然後最後就是列印圖形的方法;