码迷,mamicode.com
首页 > 其他好文 > 详细

第14、15周作业

时间:2017-12-03 17:20:28      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:bsp   for循环   i++   ++   个数   target   二维数组   空格   左右   

---恢复内容开始---

#include<stdio.h>
int main()

{
    int n,i,a[10],b=0;
    scanf("%d",&n);
    for(i=0;i<n;i++){
        scanf("%d",&a[i]);
    }
    for(i=0;i<n;i++){
        if(a[0]<a[i]){
            a[0]=a[i];
            b=i;
            }
    }
    printf("%d %d",a[0],b);
    return 0;
 } 
  • 设计思路:
  • 第一步:构建函数基本框架。
  • 第二步:定义变量n,i,b。对b赋0的初值。定义最大下标为9的整形数组。
  • 第三步:输入n,确定输入数组的数据的个数。
  • 第四步:将数据输入数组。
  • 第五步:将a[0]与数组中的其他数进行一一比较,将最大值移到a[0],并使用b记录下标。
  • 第六步:输出a[0]和b。
  • 流程图:
  • 技术分享图片

     

  • 遇到的问题:开始时遇到输入的一组数中有两个及以上最大值时,输出了那个较大的下标。
  • 技术分享图片

     

  • 解决方法:逐步调试,发现只要将a[0]<=a[i]改成a[0]<a[i]就行了。
  • #include<stdio.h>
    int main()
    {
        int a[10],i,n,b,c,d,e;
        scanf("%d",&n);
        for(i=0;i<n;i++){
            scanf("%d",&a[i]);
            }
            b=a[0];
            c=a[n-1];
        for(i=0;i<n;i++){
            if(b>=a[i]){
                b=a[i];
                d=i;
            }
        }
         a[d]=a[0];
         a[0]=b;
        for(i=0;i<n;i++){
            if(c<=a[i]){
                c=a[i];
                e=i;
            }
        }
        a[e]=a[n-1];
        a[n-1]=c;
        for(i=0;i<n;i++){
            printf("%d ",a[i]);
        }
        return 0;
    }

     

  • 第一步:构建函数基本框架。
  • 第二步:定义数组a[10],变量i,n,b,c,d,e。
  • 第三步:将数据输入数组,将a[0],a[n-1]分别赋值给b,c。
  • 第三步:将最小值移动到b,并记录下下标,将a[0]的值与最小值互换。
  • 第四步:将最大值移动到c,并记录下下标,在新顺序里,将a[n-1]的值与最大值互换。
  • 第五步:输出数组a[i].
  • 流程图:技术分享图片

     

  • 遇到的问题:输入例题,输出的格式与例题的答案不对。
  • 技术分享图片

     

  • 解决方法:将最小值与a[0]值的互换,放在找出最小值和下标之后。也就是a[d]=a[0];a[0]=b;  放在第二个for循环之后。
  • #include<stdio.h>
    int main()
    {
        int a[10],k,n,i,b,c;
        scanf("%d %d",&n,&k);
        for(i=0;i<n;i++){
            scanf("%d",&a[i]);
        }
        for(i=1;i<=k;i++){
            for(b=0;b<n-i;b++){
                if(a[b]>a[b+1]){
                    c=a[b];
                    a[b]=a[b+1];
                    a[b+1]=c;
                }
            }
        }
        for(i=0;i<n-1;i++){
            printf("%d ",a[i]);
        }
        if(i==n-1){
            printf("%d",a[i]);
        }
        return 0;
    }

     

  • 第一步:构建函数基本框架。
  • 第二步:定义数组a[10],和变量k,n,i,b,c;
  • 第三步:输入n和k。
  • 第四步:将数据存入数组a。
  • 第五步:用起泡法两两比较互换,将原本外层循环的n改为k。
  • 第六步:输出按照格式输出数组,数组最后一个数不要加空格。
  • 流程图:技术分享图片

     

  • 遇到的问题:扫描的次数k不知道放到哪里,多次调试之后,才知道k应该放在外层循环。
  • #include<stdio.h>
    int main()
    {
        int a[12],i,b=2;
        a[0]=a[1]=1;
        for(i=2;i<12;i++){
            a[i]=a[i-1]+a[i-2];
        }
        for(i=0;i<12;i++){
            printf("%6d",a[i]);
            if(i==b){
                b=b+3;
                printf("\n");
            } 
        }
        return 0;
    }

     

  • 第一步:构建函数基本框架。
  • 第二步:定义数组a[12]、i、b。并且b=2,a[0]=a[1]=1;
  • 第三步:计算下一个数据a[i]=a[i-1]+a[i-2]。
  • 第四步:顺序输出数组a。
  • 流程图:技术分享图片

     

  • 遇到的错误:输出的数据无法形成矩阵。
  • 解决方法:输出时加一个判断当i=2、5、8、11……输出\n符号。
  • 技术分享图片

  •  git地址:https://git.coding.net/Myboss/Homework.git

  • 技术分享图片

  • 个人总结(涉及的知识点):1:数组的定义:数组定义时必须是整数表达式,不能是变量。2:数组的下标是从零开始的。3:赋初值时需要对数据加大括号,不能只输入一个数据就对整个数组赋初值。4.二维数组的定义第一个中括号是行数,第二个中括号是列数。5.当确定数据个数时,可以省略行或列。6.使用数据时不能超出数组的范围。7.二维数组的输入和输出是使用双层循环。8.对数组有选择排序法,和冒泡排序法。
  • 代码行数 时间 博客字数 时间 涉及知识点
    151 4h 300字左右 4h ————————
     
  • 截图:技术分享图片

     

第14、15周作业

标签:bsp   for循环   i++   ++   个数   target   二维数组   空格   左右   

原文地址:http://www.cnblogs.com/boke2017boke/p/7965813.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!