2019年春季学期第四周作业


这次作业属于那个课程 C语言程序设计2
这个作业要求在哪里 2019年春季学期第四周作业
我在这个课程的目标是 学习二维数组和选择排序法
这个作业在那个具体方面帮助我实现目标 让我更加深入地了解了数组,并可以解决一系列数学问题

参考文献 无
一、本周完成的作业:

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

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\n");
  	}  
  	else{
  		printf("No\n");
  	}  

	return 0;
}

2) 设计思路

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

问题:错误地使用了变量b
解决:将b改为k

4).运行结果截图

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

1).实验代码

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

2) 设计思路

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

问题:使用了中文字符
解决:将中文)改为)

4).运行结果截图

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

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

1).实验代码

#include<stdio.h>  
int main(void)
{       
  int a,b,c,d=0,e=0,f,g=1,h[30][30];
  
  scanf("%d",&a);
    for(b=0; b<a; b++){
        for(c=0; c<a; c++)  {  
         scanf("%d",&h[b][c]);  
                            }       
                      } 
    if(a==1){
    printf("0 0");
            }
    else{  
        for(b=0; b<a; b++){  
            f=b;   
            for(e=0;e<a;e++) {   
                if(h[b][d]<=h[b][e]) {  
                    d=e;  
                                     }  
                             }  
            for(c=0;c<a;c++) {   
                if(h[f][d]>h[c][d]){ 
                    f=c;  
                    break;  
                                   }  
                            }  
            
            if(b==f){
                g=0;  
                break;  
                    }  
                          }  
        if(g==0) 
        printf("%d %d",b,d);  
        else        
        printf("NONE");  
        }  
   return 0;
}

2) 设计思路

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

问题:答案错误!
解决:将结果的none改正为NONE

4).运行结果截图

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

1).实验代码

#include<stdio.h>
int main (void)
{
  int a[30],b,c,d,e,f,g;
  scanf("%d",&e);
  for(f=0;f<e;f++)
  {
  scanf("%d",&a[f]);
  }
  for(d=0;d<e-1;d++)
  {
    c=d;
    for(f=d+1;f<e;f++)
    {
     if(a[f]<a[c])
      {
      c=f;        
      }
     }
      g=a[c];
      a[c]=a[d];
      a[d]=g;
    }
  for(f=e-1;f>0;f--){
    printf("%d ",a[f]);
   }
  printf("%d",a[0]);
  
  return 0;
}

2) 设计思路

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

问题:出现了未被定义的变量
解决:将这个h改为f

4).运行结果截图

二、学习进度条

周/日期 这周所花的时间 代码行 学到的知识点简介 目前比较迷惑的问题
2/26-3/3 13小时 100 数组的使用 数组的定义是否可以用long?
3/4-3/10 10小时 131 文件的指针 指针可不可以用多个?
3/11-3/17 18小时 235 二维数组 还有无限维数组吗?
3/18-3/24 13小时 376 二维数组的矩阵问题 编程和数学一样吗?

三,学习感悟
c语言好像要记得特别少,只有好多重复的计算。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM