• 2019年春季学期第四周作业


    这个作业属于哪个课程 C语言程序设计Ⅱ
    这个作业要求在哪里 2019年春季学期第四周作业
    我在这个课程的目标是 暂时是提高自主编程能力
    这个作业在哪个具体方面帮助我实现目标 提高我的思维能力
    参考文献 C语言程序设计(第3版)

    题目一
    冒泡法排序
    输入1个正整数n(1<=n<=10),然后输入n个整数并存放在数组中,将这n个整数从大到小排序后输出,相邻数字间有一个空格,行末不得有多余空格。
    输入格式:
    输入第一行给出一个不超过10的正整数n。第二行给出n个整数,其间以空格分隔。
    输出格式:
    在一行中输出从大到小有序的数列,相邻数字间有一个空格,行末不得有多余空格。
    1)实验代码

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

    2)设计思路

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

    问题:答案错误,对代码进行调试发现结果有误。
    解决办法:在dev c++上进行调试,发现在调用的函数里比较大小时if语句后面没加括号,导致不管if语句判断的结果都对a[j]、a[j+1]进行了交换。
    4)运行结果截图

    题目二
    选择法排序
    本题要求将给定的n个整数从大到小排序后输出。
    输入格式:
    输入第一行给出一个不超过10的正整数n。第二行给出n个整数,其间以空格分隔。
    输出格式:
    在一行中输出从大到小有序的数列,相邻数字间有一个空格,行末不得有多余空格。
    1)实验代码

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

    2)设计思路

    3)本题调试过程碰到问题及解决办法
    本题书上有类似的,故一次通过。
    4)运行结果截图

    题目三
    输入一个正整数 n (1≤n≤10)和n 阶方阵a的元素,如果方阵a中的所有元素都沿主对角线对称,输出“Yes”, 否则,输出“No”。主对角线为从矩阵的左上角至右下角的连线,方阵a中的所有元素都沿主对角线对称指对所有i, k,a[i][k]和a[k][i]相等。输入输出示例如下:
    输入:
    3
    1 2 3
    4 5 6
    7 8 9
    输出:
    No

    1)实验代码

    #include <stdio.h>
    int main(void)	
    {	
    int found, i, k, n;
    int a[10][10];
    scanf ("%d", &n);
    for (i = 0; i < n; i++)	
    	for (k = 0; k < n; k++)
    		scanf("%d", &a[i][k]);
    found = 1;
    for (i = 0; i < n; i++){	
    	for (k = 0; k < i; k++){
    		if (a[i][k]!=a[k][i]) {			    
                          found=0;          
           	            break;
       	                 }
    	}
    	if (found==0){
    		break;
    	}
    }
    
    if (found != 0){
    	printf("Yes
    ");
    }  
    else{
    	printf("No
    ");
    }  
    
    return 0;
    }
    

    2)设计思路

    3)本题调试过程碰到问题及解决办法
    不记得之前的错误点在哪里,没截图。

    4)运行结果截图

    题目四
    找鞍点
    一个矩阵元素的“鞍点”是指该位置上的元素值在该行上最大、在该列上最小。
    本题要求编写程序,求一个给定的n阶方阵的鞍点。
    输入格式:
    输入第一行给出一个正整数n(1≤n≤6)。随后n行,每行给出n个整数,其间以空格分隔。
    输出格式:
    输出在一行中按照“行下标 列下标”(下标从0开始)的格式输出鞍点的位置。如果鞍点不存在,则输出“NONE”。题目保证给出的矩阵至多存在一个鞍点。
    1)实验代码

    #include <stdio.h>
    int main(void)	
    {	
          int found=0,i,j,n,r,q=0;
          int a[6][6],index,b[6];
          scanf ("%d",&n);
          index=0;
          for(i=0;i<n;i++)
      	     for(j=0;j<n;j++)
    	scanf("%d",&a[i][j]);
          for(i=0;i<n;i++){ 
         for(j=0;j<n;j++){ 
    	if(a[i][j]>=a[i][index])
    	index=j;
          }
      b[i]=a[i][index];
          for(r=0;r<n;r++){
         if(a[r][index]<=a[q][index])
    	q=r;
          }
      if(a[q][index]==b[i]){
    	found=1;
    	break;
           }
    q=0; 
      }
        if(found==1) 
        printf("%d %d",q,index);
        else
        printf("NONE");
        return 0;
    }
    

    2)设计思路

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

    问题:答案错误。经反复调试后发现原先的思路有误,之前的思路是在每一行中找最大值,然后在每一列找最小值,再判断是否相等。
    解决办法:将思路调整,思路改为在每一行中找最大值,然后直接访问该数的列,找出改列中的最小值,判断是否相等。
    运行改题的正确代码,确认在多鞍点下的取值。最后把代码中判断大小语句添加“=”。
    4)运行结果截图

    学习进度条

    周/日 这周所花的时间 代码行数 学到的知识点简介 目前比较迷茫的问题
    3/11-3/15 6小时 57 指针的定义与调用
    3/18-3/22 8小时 80 二维数组的定义与调用

    学习感悟
    这周的题目比较有趣,有些书上有类似,但重点还是书上没有的,虽然花了些时间,但是也学会了好多。

  • 相关阅读:
    ECharts之柱状图 饼状图 折线图
    Vue自定义指令(directive)
    HDU 1231 最大连续子序列
    POJ 2533 Longest Ordered Subsequence
    HDU 1163 Eddy's digital Roots
    HDU 2317 Nasty Hacks
    HDU 2571 命运
    HDU 4224 Enumeration?
    HDU 1257 最少拦截系统
    HDU 2740 Root of the Problem
  • 原文地址:https://www.cnblogs.com/jk-liulei/p/10561559.html
Copyright © 2020-2023  润新知