• 第四周编程总结


    这个作业属于的课程

    第四周编程总结

    我在这个课程的目标是

    学习一维和二维数组

    这个昨天在哪个具体方面帮我实现目标

    进一步学习c语言这门课程

    参考文献

    C语言程序设计

    5-1

    输入一个正整数 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 ((3分)) {	
    			    ;          
               	            break;
           	                 }
    		}
    		if (){
    			break;
       		}
      	}
    
      	if (found != 0){
      		printf("Yes
    ");
      	}  
      	else{
      		printf("No
    ");
      	}  
    
    	return 0;
    }


    实验思路:由题目可知,当founnd = 0,输出“No”即所有元素都沿主对角线不对称。所以第一个条件为a[i][k] != a[k][i],结束第一个循环,而下面还有一个循环,若此时下面循环中填found==0,则结束这个循环。

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

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

    输入格式:

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

    输出格式:

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

    输入样例:

    4
    5 1 7 6
    

    输出样例:

    7 6 5 1


    1).实验代码

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

    2)设计思路

    3)本题做对过程碰到问题及解决办法

     没有注意到题目的要求:行末不得有多余空格。所以改为先输出第一个数,后面输出每个数的前面加一个空格,而让行末没有空格。

    正确截图

    7-1 找鞍点 (20 分)

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

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

    输入格式:

    输入第一行给出一个正整数n(1n6)。随后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
    
     
    作者: C课程组
    单位: 浙江大学
    时间限制: 400 ms
    内存限制: 64 MB
    代码长度限制: 16 KB

    1).实验代码

    #include <stdio.h>
    int main(void)
    {
        int i,n,j,row,col,flag;
        int a [6][6];
        
        scanf ("%d", &n);
        for(i=0;i<n;i++)
        {
            for(j=0;j<n;j++){
                scanf("%d",&a[i][j]);
            }
        }
            row=0,col=0,flag=0;
        for(i=0;i<n;i++){
          for(j=0;j<n;j++)
                if(a[i][j]>=a[i][col] && j!=col)  col=j; 
             flag=1;
            for(row=0;row<n;row++){
                   if(a[row][col]<a[i][col]){
                            flag=0;
                            break;
                    }
            }
             if(flag) break;
          }
     
          if(flag)      printf("%d %d",i,col);
          else          printf("NONE");
    }

    2)设计思路

     

    3)本题做对过程碰到问题及解决办法



     

    在编译软件上正确,但在pta上却出现段错误,后来在程序中对row,col,flag,进行赋值就对了。

    正确截图

    7-1 冒泡法排序 (10 分)

    输入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(void)
    {
        int i, j, k, n, temp;
           int a [10];
           
           scanf ("%d", &n);
           for (i = 0; i < n; i++)    
                scanf("%d", &a [i]);
        {
            for (j=1; j<n; j++)
              for (k=0;k<n-1; k++)
              if (a[k]<a[k+1])
              {
                  temp=a[k];a[k]=a[k+1];a[k+1]=temp;
              }
        }
           printf("%d",a[0]);
          for (i=1;i<n;i++)
              printf(" %d",a [i]);
              printf("
    ");
       
    
        return 0;
    }

    2)设计思路

    3)本题做对过程碰到问题及解决办法


    参考选择排序法,并吸取了上次的教训后,本题并没有出现问题。

    正确截图

    本周学习总结

     本周学习使用数组对数据进行排序,并完成了几个题目,感觉还不错。也预习了下周的内容。

    学习进度条

    这周所花的时间

    代码行

    学到的知识点

    遇到的问题

    第二周

    8h

    100

    文件指针的定义

    指针的具体用法

    第三周

    12h

    120

    二维数组的定义和用其编程

    如何使用指针对二维数组进行处理。

    第四周

    12h

    134

    利用数组对一组数进行排序

    把一些简单的问题复杂化,不能找到最佳的方法。

  • 相关阅读:
    Undergound Heaven [only_for_information]
    Essential Booklist of .Net Framework
    Thinkpad T4x 风扇转速档位控制
    Hot scene AGAIN!
    JavaScript使用技巧精萃
    今天项目中遇到的一个问题:判断新闻Id是否存在
    C++编译过程中"没有找到MFC80UD.DLL,因此这个程序未能启动.重新安装应用程序可能会修复此问题"? 的彻底解决
    SQL操作全集
    关于UrlReferrer传值的几点注意
    在ASP.Net2.0中使用UrlRewritingNet实现链接重写(转)
  • 原文地址:https://www.cnblogs.com/198266qq/p/10579417.html
Copyright © 2020-2023  润新知