第二次上机考的错题

 改前:

 改后:

因为这一个排序我们排到倒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++;然后最后就是打印图形的方法;

posted @ 2021-12-12 22:18  小汪w  阅读(10)  评论(0编辑  收藏  举报