这次作业属于那个课程 | 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语言好像要记得特别少,只有好多重复的计算。