当前位置:   article > 正文

PTA_C部分答案参考_pta平台答案题库答案公众号

pta平台答案题库答案公众号

函数题

第三题由于我的疏忽,搞岔了,已经更正

6_1

Time_gxx string2Time(char *st)
{
    int i=0;
    int h=0;
    int m=0;
    while(st[i]!=':')
    {
        h=h*10+((int)st[i]-(int)('0'));
        i++;
    }
    i++;
    while(st[i]!='\0')
    {
        m=m*10+((int)st[i]-(int)('0'));
        i++;
    }
    Time_gxx t1;
    t1.hh=h;
    t1.mm=m;
    return t1;
}
Time_gxx Add(Time_gxx x,int y)//{23:23}+100-->{01:03}
{
    int a,b;
    a=(y+x.mm)/60;
    b=(y+x.mm)%60;

    if(b>=0)
    {    x.hh+=a;
        x.mm=b;
    }
    else
    {
        x.hh+=(a-1);
        x.mm=(60+b);
    }
    x.hh=x.hh%24;
    if(x.hh<0)
        x.hh+=24;
    return x;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41

6_2

void outputA(int d[],int n)
{
    printf("[");
    for(int i=0;i<n;i++)
    {
        printf("%d",d[i]);
        if(i!=n-1)
            printf(",");
    }
    printf("]");
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

6_3

void Maxmin(int d[],int n)
{
    int max=n-1,min=0;
    for(int i=0;i<n;i++)
    {
        if(d[i]<d[min])
            min=i;num=0;
         if(d[i]>d[max])
            max=i;
    }
    
    if(d[min]!=d[0])
    {
        // num=1;
        swap(d,min,0);
        
        
    }   
    for(int i=0;i<n;i++)
    {
        if(d[i]>d[max])
            max=i;
    }
    if(d[max]!=d[n-1])
    {
        swap(d,max,n-1);
    }
    if(max!=n-1)
    {
        num=1;
        if(min!=0)
        num=2;
    }
    // num=2;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35

6_4

void stringDel(char a[])
{
    int i,j=0;
    int x=strlen(a);
    for(i=0;a[i]!='\0';i++)
    {
        if(a[i]<'0'||a[i]>'9')
        {
            if(i!=j)
                j2i(a,j,i);
            j++;
        }
    }
        j2i(a,j,x);
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

6_7(这题很明显我不会,瞎写的!)

void fun (struct Mat *M)
{
  int n;
  int m;
  int i,j;
  if(M->row==3&&M->col==5)
  for(int x=1;x<M->row;x++)
  {
      Mi2j(M,x,M->col*M->row);
      for( i=x;i!=x*M->row;)
      {
          n=i/M->row;//列
          m=i%M->row;//行
          Mi2j(M,M->col*m+n,i);
          
          i=M->col*m+n;   
      }
    Mi2j(M,M->col*M->row,M->col*m+n);
    if(M->col%M->row==0)
    
        x=M->row;
    
  }
  else
  {
     int *hu;
    hu=(int*)malloc(sizeof(int)*(M->row*M->col));
    for(i=0;i<M->row;i++)
    for(j=0;j<M->col;j++)
    {
      hu[i+j*M->row]=M->data[i*M->col+j];
      
    }
    for(i=0;i<M->row*M->col;i++){
    Mi2j(M,i,M->row*M->col);
    
    M->data[i]=hu[i];
  } 
  }
  int x=M->col;
  M->col=M->row;
  M->row=x;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43

6_8

void fileRW(FILE *fin,FILE *fout)
{
    int row = 1;     // 行号
    char line[1024]; // 保存读取一行的信息的line数组
    char str[1024];
    // FILE *fpln = fopen("test1.txt", "r");   // 输入文件的指针
    // FILE *fpOut = fopen("test2.txt", "w"); // 输出文件的指针

    while (fgets(line, sizeof(line), fin))
    {
        int i,j=0;
        for(i=0;line[i]!='\0';i++)
        {
            if((int)line[i]!=9)
                str[j++]=line[i];
        }
            str[j]='\0';
                fprintf(fout, "%d:%s", row++, str);

    }

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

6_9

int  Max2(int d[],int n){
    int maxm=0;
    for(int i=0;i<n;i++)
    {
        if(d[i]%2==0)
        {
            if(d[i]>maxm)
                maxm=d[i];
        }
    }
    if(maxm==0)
        return -1;
    else
        return maxm;

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

6_17

int delMaxMin(int n)
{
    int min=n-1,max=n-1;
    for(int i=n-1;i>=0;i--)
    {
        int x=getDi(i);
        if(x>getDi(max))
            max=i;
        if(x<getDi(min))
            min=i;
    }
    int c=0;
    if(max<min)
    {
        for(int i=max+1;i<n;i++)
        {
            if(i!=min){
                Dj2i(max+c,i); c++;
            }
        }
    }
    else
    {
        for(int i=min+1;i<n;i++)
        {
            if(i!=max){
                Dj2i(min+c,i); c++;
            }
        }
    }


    return n-2;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34

6_19

int Repet (int n){
  int i;
  int a[28];
    for(i=0;i<n;i++)
    {
        a[i]=getDi(i);
    }
   for(i=0;i<n;i++)
    {
        for(int x=i+1;x<n;x++){
        	if(a[i]==a[x])
          	return 1;
        }
   }
    return 0;
}


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

6_20

int fun(int n){
  int l=C;
    int a[1000]={0},x[1000]={0},path[l+1][n];
    int i,j;
    for(i=0;i<n;i++)
        for(j=l;j>=v[i];j--)
            if(a[j]<a[j-v[i]]+w[i])
               {
                a[j]=a[j-v[i]]+w[i];
                path[j][i]=1;
                }
  		int de=0;
while(i>=0&&l>=0)
{
    if(path[l][i]==1)
    {
        x[i]=1;
        l-=v[i];
    }
    i--;
}
		for(i=n-1;i>=0;i--)
      de=x[i]+de*2;
    return de;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

6_21

int* fun(int m,int n)
{
 int *p=(int*)calloc(n*m,sizeof(int));
    // int *p=new int[n*m];
    int num=1;
    int mn=m*n-1;
    for(int i=0;i<m;i++)
        for(int j=0;j<n;j++)
       { 
            p[i*n+j]=0;
            if(i==0)
               p[j]=num++;
       }

    for(int i=1;i<m-1;i++)
        p[i*n+n-1]=num++;
   for(int j=0;j<n;j++)
            
            p[mn--]=num++;

    for(int i=m-2;i>0;i--)
        p[i*n]=num++;
        
    return p;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

编程题

7-2(这题是我用奇技淫巧凑的答案,特此声明!)

#include<stdio.h>
int main()
{
  char c[20]="\0";
  scanf("%s",c);
    if(c[10]=='D')
				printf("0");
  else
  printf("1");
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

后期要是有机会发160分的题,大家及格就好!
不要直接复制,我没有只上传图片,就是为了让大家方便复制修改,你不改我不改,到时候查起来都没好果子吃!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/713071
推荐阅读
相关标签
  

闽ICP备14008679号