• 第四周编程总结


    一、作业

    这个作业属于哪个课程 C语言程序设计ll
    这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/software-engineering-class2-2018/homework/2774)
    我在这个课程的目标是 希望能多了解数组的算法,以后碰见类似的题目时能够不出错误的做出来
    这个作业在哪个具体方面帮助我实现目标 这个作业让我大概了解了选择排序法和冒泡排序法,并且对数组有了更深入的了解
    参考文献 https://blog.csdn.net/bruno231/article/details/6668024)

    基础题

    7-2 选择法排序

    本题要求将给定的n个整数从大到小排序后输出。

    输入格式:
    输入第一行给出一个不超过10的正整数n。第二行给出n个整数,其间以空格分隔。

    输出格式:
    在一行中输出从大到小有序的数列,相邻数字间有一个空格,行末不得有多余空格。

    输入样例:
    4
    5 1 7 6
    输出样例:
    7 6 5 1

    1、实验代码

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

    2、设计思路

    3、本题调试过程碰到问题及解决办法:

    问题:index的值出现错误。
    解决:将index值重新赋值

    4、运行结果截图:

    7-1 找鞍点

    一个矩阵元素的“鞍点”是指该位置上的元素值在该行上最大、在该列上最小。

    本题要求编写程序,求一个给定的n阶方阵的鞍点。

    输入格式:
    输入第一行给出一个正整数n(1≤n≤6)。随后n行,每行给出n个整数,其间以空格分隔。

    输出格式:
    输出在一行中按照“行下标 列下标”(下标从0开始)的格式输出鞍点的位置。如果鞍点不存在,则输出“NONE”。题目保证给出的矩阵至多存在一个鞍点。

    输入样例1:
    4
    1 7 4 1
    4 8 3 6
    1 6 1 2
    0 7 8 9
    输出样例1:
    2 1
    输入样例2:
    2
    1 7
    4 1
    输出样例2:
    NONE

    1、实验代码

    #include<stdio.h>
    int main()
    {
      int j,k,n,a[10][10],max=0,min=0,h=0;
      scanf("%d",&n);
      for(j=0;j<n;j++){
        for(k=0;k<n;k++){
          scanf("%d",&a[j][k]);
    }
    }
       for(j=0;j<n;j++){
         for(k=0;k<n;k++){
           if(a[j][k]>=a[j][max])
           max=k;
           
         }
          for(k=0;k<n;k++){
            if(a[min][max]>=a[k][max]){
            min=k;}
          }
          if(min==j){
          printf("%d %d",min,max);
          
            h=1;
            break;
          }
          
       }
       if(h==0){
         printf("NONE");
         
       }
       return 0;
    }
    

    2、设计思路

    3、本题调试过程碰到问题及解决办法:

    问题:没有为定义的整数初始化,出现段错误;
    解决:将定义的变量初始化。

    4、运行将结果截图

    挑战题

    **7-1 冒泡法排序 **

    输入1个正整数n(1<=n<=10),然后输入n个整数并存放在数组中,将这n个整数从大到小排序后输出,相邻数字间有一个空格,行末不得有多余空格。

    输入格式:
    输入第一行给出一个不超过10的正整数n。第二行给出n个整数,其间以空格分隔。

    输出格式:
    在一行中输出从大到小有序的数列,相邻数字间有一个空格,行末不得有多余空格。

    输入样例:
    4
    75 71 77 76
    输出样例:
    77 76 75 71

    1、实验代码

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

    2、设计思路

    3本题调试过程碰到问题及解决办法:

    问题:没理解冒泡排序法的含义,(<),(>)判断用错;
    解决:将判断中的>改为<;
    这个题用前面的题也可以解决但是不行,出了一点问题,但不过稳同学还是搞定了

    4、运行结果截图

    学习进度条

    周/日期 这周所花的时间 代码行数 学到的知识点简介 目前比较迷惑的问题
    2/25-3/3 48h 45 数组的认识及用法 数组长度的理解
    3/4-3/10 36h 37 编写程序时处理文件 fscanf与fprintf的具体用法
    3/11-3/17 46h 55 定义文件,以及文件的导入导出和读写 二维数组的用法、上三角的判断及文件的处理
    3/17-3/22 15h 66 选择排序法、二分查找法 不清楚选择排序法和冒泡排序法的区别

    学习感悟

    在一些地方还是有许多的不知足,还是要加强学习,少玩一点!!!

  • 相关阅读:
    循环的注意点
    c语言实践输出某个区间中不是3的倍数的偶数
    while循环for循环优缺点和应用
    while 和do while循环的区别
    多重if else和switch case的区别
    if else的执行流程
    多个if和一个ifelse的区别
    对两个变量排序,从小到大输出
    【译】第四篇 Integration Services:增量加载-Updating Rows
    【译】第三篇 Integration Services:增量加载-Adding Rows
  • 原文地址:https://www.cnblogs.com/wuhao94/p/10581161.html
Copyright © 2020-2023  润新知