• 第四周作业


    作业头

    本周的作业要写一个作业头,第一次写。emmm

    项目 内容
    这个作业属于那个课程 C语言程序设计II
    这个作业要求 本次作业的要求
    我在这个课程的目标是 选择排序法、二分查找法,冒泡排序法,二维数组
    这个作业在哪个具体方面帮助我实现目标 这次作业有选择排序法和冒泡排序法
    参考文献 本次主要参考书197,191和一班巨孽的视频

    作业一

    输入一个正整数 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

    代码示例

    #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;
    }
    
    

    本题思路

    这个作业遇到的问题

    开始只考虑到found==0,并没有想它跳没跳出循环,导致输出的是yes,后来发现了,改正后对了

    作业二

    7-2 选择法排序 (20 分)
    本题要求将给定的n个整数从大到小排序后输出。

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

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

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

    代码示例

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

    本题思路

    本题遇到的问题

    这题没什么问题,因为开始理解了这个排序法的思路,但是到pta上提交有一个错误,不知道错在哪,后来写了那个冒泡排序法到这题来提交,全部正确

    问题截图

    但是在编译器上又是对的

    不知道pta又什么毛病,不想搞这个了,浪费很多没必要浪费的时间

    作业三

    7-1 找鞍点 (20 分)
    一个矩阵元素的“鞍点”是指该位置上的元素值在该行上最大、在该列上最小。

    本题要求编写程序,求一个给定的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

    代码示例

    # include<stdio.h>
    int main(void)
    {
    	int min = 0, i, j, n, k = 0, g[10][10];
    	int f = 0,  max = 0, c = 0, b = 0;
    	scanf("%d", &n);
    	for(i = 0; i < n;i++){
    		for(j = 0; j < n;j++){
    			scanf("%d", &g[i][j]);     
    		}
    	}
    	if(n == 1){
    	  printf("0 0");
    	}
    	else{
    	b = 2;
    	for(i = 1; i <= n; i++){
    		min = i;
    		for(j =0; j < n; j++){    //找到行最大 
    			if(g[i][max] <= g[i][j]){
    			max = j;
    		}
    		}
    		for(k = 0;k < n;k++){      //找到列最小 
    			if(g[min][max] > g[k][max]){
    				min = k;
    			}
    		}
    		if(i == min)        //判断是否在该行 
                {  
                    b=3;  
                    break;  
                }  
    
    	}
    	 if(b == 3) {            //在该行则输出鞍点 
                printf("%d %d",i,max);
    		}
            else {
    			printf("NONE");  
    }
    }
                  return 0;  
     } 
    

    本题思路

    本题遇到的问题

    开始还是有一点不会,不知道怎么去控制在行最大的适合列最小,后面看了一班巨孽的视频,o原来还可以这样
    有思路了,写了一个在编译器上可以

    在pta有一个最小的错误

    应该是如果n==1的情况没有考虑进去
    后来改了一下
    可以了

    作业四 挑战题

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

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

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

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

    代码示例

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

    本题思路

    本题遇到的问题

    本题遇到的问题主要是,在pta上有一个行末不能有多余的空格

    开始没注意,后面发现,改了后就可以了,没什么问题

    本周进度条

    日期 这周所花的时间 代码行数 所学的简介 目前比较困惑的问题
    16/3-22/3 六小时 210 一维数组,二维数组 没什么问题

    折线图

    结对编程

    对于结对编程,因为第一天我没有带电脑,他也没有带电脑,所以不是很了解怎么样
    结对编程我觉得还不错吧,要是有一个会的就好,要是两个都不会那就凉凉,两个都会的没有什么

  • 相关阅读:
    MQTT简单demo(java)
    MQTT协议开发心得
    浏览器播放RTSP格式视频流的解决方法
    JSON学习
    Redis安装和java代码实现增删改查
    创建一个简单的SpringMVC框架
    oracle创建只读权限的用户简单四步走(创建用户/赋连接权限/赋表权限/创建同义词)
    html读取图片
    ORACLE多表关联UPDATE 语句
    Oracle 闪回查询
  • 原文地址:https://www.cnblogs.com/xiao--liang/p/10579069.html
Copyright © 2020-2023  润新知