zoukankan      html  css  js  c++  java
  • 第四周作业

    填空题完整代码

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

    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()
    {
    	int i,j,k,n,max,min,temp;
    	int p,q,r;
    	int a[6][6];
    	scanf("%d",&n);
    	for(i=0;i<n;i++)
    	{
    		for(j=0;j<n;j++)
    		{
    			scanf("%d",&a[i][j]);
    		}
    	}
    	for(i=0;i<n;i++)
    	{
    		max=a[i][0];
    		for(j=0;j<n;j++)
    		{
    			if(a[i][j]>max){
    				max=a[i][j];
    			}
    			if(a[i][j]==max){
    				p=i;
    				q=j;
    			}
    		}
    			min=max;
    		for(k=0;k<n;k++)
    		{
    			if(a[k][q]<min){
    				r=0;
    				break;
    			}
    			else{
    				r=1;
    			}
    		}
    		if(r==1){
    			break;
    		}
    	}
    	if(r==0){
    		printf("NONE");
    	}
    	else{
    		printf("%d %d",p,q);
    	}
    	return 0;
    }
    

    错误:

    错因:

    在代码中没有包括0行0列导致出错。

    正确:

    7-2 选择法排序 (20 分)

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

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

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

    输入样例:

    4
    5 1 7 6
    

    输出样例:

    7 6 5 1
    

    设计思路:

    代码:

    #include<stdio.h>
    int main()
    {
    	int i,k,middle,n,temp;
    	int a[10];
    	
    	scanf("%d",&n);
    	for(i=0;i<n;i++)
    	{
    		scanf("%d",&a[i]);
    	}
    	
    	for(k=0;k<n-1;k++)
    	{
    		middle=k;
    		for(i=k+1;i<n;i++)
    		{
    			if(a[i]>a[middle]){
    				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;
    }
    

    错误:

    错因:

    未考虑题目中的空格次数限制。

    正确:

    冒泡法排序 (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()
    {
    	int i,j,n,temp;
    	int 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+1];
    				a[j+1]=a[j];
    				a[j]=temp;
    			}
    		}
    	}
    	
    	for(i=0;i<n;i++)
    	{
    		printf("%d",a[i]);
    		if(i<n-1)
    		printf(" ");
    	}
    	return 0;
    }
    

    错误:

    错因:

    未考虑题目中的空格次数限制。

    正确:

    编程总结

    本周学习了数组的适用和二维数组。
    在写代码时,时常要注意这是第0个元素还是第1个元素。题目多以使用多个循环,所以要时常注意当前所处的行列。

  • 相关阅读:
    【BZOJ 2124】【CodeVS 1283】等差子序列
    【BZOJ 1036】【ZJOI 2008】树的统计Count
    【BZOJ 1901】【ZJU 2112】Dynamic Rankings
    【BZOJ 3924】【ZJOI 2015】幻想乡战略游戏
    【BZOJ 4103】【THUSC 2015】异或运算
    【BZOJ 4513】【SDOI 2016】储能表
    【HDU 3622】Bomb Game
    【BZOJ 3166】【HEOI 2013】Alo
    【BZOJ 3530】【SDOI 2014】数数
    【BZOJ 4567】【SCOI 2016】背单词
  • 原文地址:https://www.cnblogs.com/wuguijunniubi/p/10579653.html
Copyright © 2011-2022 走看看