• 第十四,十五周PTA作业


    1.第十四周part1 7-3

    #include<stdio.h>
    int main()
    { 
      int n;
      scanf("%d",&n);
      int a[n];
      
      int i;
      for(i=0;i<n;i++){
        scanf("%d",&a[i]);
      }
      printf("%d",a[n-1]);
      for(i=n-2;i>=0;i--){
       printf(" %d",a[i]);
      }
       
      return 0;
    }

    第一步:由题意得,先定义一个整型变量n,输入所需要的数组里面的量。

    第二步:定义a【n】这个数组,和整型变量i。

    第三步:利用for循环输入n个数。

    第四步:先输出最后一个数,然后利用for循环从倒数第二个数开始依次输出,输出时再%d前加一个空格,这样就可以是的答案末尾没有多余的空格。

    截图:

    错误:

    1:一开始没想到需要先输出一个数,然后再按顺序倒着依次输出,所以导致输出格式与题目要求不符合。

    2:在pta输入时,由于该平台不会自动补全大括号,双引号等,导致多次编译错误。

    流程图:

    2:第十四周part1 7-4

    #include<stdio.h>
    int main()
    {
      int i,a[12]={1,1};
      printf("%6d",a[0]);
      printf("%6d",a[1]);
      for(i=2;i<12;i++)
      {
        a[i]=a[i-1]+a[i-2];
        printf("%6d",a[i]);
        if((i+1)%3==0)
        {
          printf("%c",'
    ');
        }
      }
      return 0;
    }

    第一步:由题意得先定义一个整型变量i和一个含有十二位数的数组。

    第二步:定义数组时,给前两位数进行初始化赋值,都为1。

    第三步:利用for语句进行循环,循环体为后一位数为前两位数的和。

    第四步:先利用for语句输出%6d的结果,然后利用if条件句进行判断,若i+1取余3为0,则进行换行,即可得到结果。

    错误截图:

    错误:在pta中需要将将换行符号单独设置为一个字符变量,不然输出的格式就是错的。

    流程图:

    3:第十四周part2  7-4

    #include<stdio.h>
    int main()
    {
      int N,i,max,min,t,j;
      scanf("%d",&N);
      int a[N];
      for(i=0;i<N;i++){
        scanf("%d",&a[i]);
      }
      if(N==1)
      printf("%d ",a[0]);
      if(N!=1){
      min=0;
      for(i=1;i<N;i++){
        if(a[i]<a[min]){min=i;
      }} 
      t=a[min];
      a[min]=a[0];
      a[0]=t;
      max=1;
      for(i=2;i<N;i++){
        if(a[i]>a[max]){max=i;
      }} 
      j=a[max];
      a[max]=a[N-1];
      a[N-1]=j;
      for(i=0;i<N;i++){
        printf("%d ",a[i]);
      }}
      return 0;
    }

    第一步:由题意可得,需要定义N,i,max,min,t,j六个整型变量。

    第二步:输入N的值,定义数组a[N],利用for循环输入N个数。

    第三步:利用if条件句判断,当N为1时,直接输出a[0],当N不为1时,则先令min为0,利用for循环将每一个数与a[min]进行比较,若a[i]<a[min],则min=i,然后进行位置的调换,将最小值放到第一个位置。

    第四步:同理,令max=1,同样与后面的数进行比较,条件如上,得出结果后,再将位置进行对调。最后依次输出所有的数。

    错误:

    1:在pta输入时,由于该平台不会自动补全大括号,双引号等,导致多次编译错误。

    2:没有考虑到当N等于一的时候,

    3:第一次定义的是a[i],而不是a[N],所以导致月结错误。

    流程图:

    4:第十五周pta part1 7-1

    #include<stdio.h>
    int main()
    {
        int m,n,i,j,sum=0;
        
        scanf("%d %d",&m,&n);
        int a[m][n];
        for(i=0;i<m;i++){
            for(j=0;j<n;j++){
                scanf("%d",&a[i][j]);
            }
        }
        for(i=0;i<m;i++){
            for(j=0;j<n;j++){
            sum=sum+a[i][j];
            if(j==n-1){
                printf("%d",sum);
                printf("
    ");
                sum=0;
            }
            }
        }
        return 0;
     } 

    第一步:由题意得,定义整型变量m,n,i,j,sum=0。

    第二步:输入m,n的值。

    第三步:定义二维数组a[m][n],利用for循环输入二维数组的值。

    第四步:利用for循环求和,在第二层循环里加入一个if条件句进行判断,当j==n-1,就输出一次sum,然后换行,再将sum归零,进行下一次循环,这样就得到结果了。

    错误:

    1:没有弄明白需要在哪个循环加上if语句,导致求的和都在一行,没有换行。

    2:没有在循环里加入使sum为0的语句,然后编译错误。

    流程图:

    coding地址:https://coding.net/u/wangzhiheng/p/pta14-15/git/tree/master/

    个人总结:

          这一周,我学习了数组之类的知识。学会了,将一些有规律或者无规律的数进行排列,计算,求下标等一系列知识,让我对C语言又进一步加深了理解。

    难点:

         关于二维数组的双层循环还是在有的复杂的题目上弄不太懂,还有在循环里加入别的判断语句等等,可能我不是能很明白的理解,加在哪一个循环里,才能解决问题。

    点评同学:

    1:徐敬淇:http://www.cnblogs.com/SR1011/p/7965948.html

    截图:

    2:赵升旗:http://www.cnblogs.com/boke2017boke/p/7965813.html

    截图:

    3:孙娜:http://www.cnblogs.com/sun-na-/p/7875394.html

    截图:

     

     

  • 相关阅读:
    回调函数实例
    Java StringBuffer 和 StringBuilder 类
    excel被保护或者锁定时候按住alt和enter可以输入换行
    ArrayUtils.
    excel中在某一列上的所有单元格的前后增加
    decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值)
    正则表达式:Pattern类与Matcher类详解
    Cocos2d-x文本菜单
    msp430在ccsv5下出现的问题总结
    与TCP/IP协议的初次见面(一)
  • 原文地址:https://www.cnblogs.com/wangzhiheng/p/7967143.html
Copyright © 2020-2023  润新知