第14、15教学周作业

要求二

7-1 求最大值及其下标

一,实验代码

 

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

二,设计思路

1.根据题意定义变量,分别是整型变量i(下标),n(数组长度),j,max(最大值),a[10](数组);

2.理解题意,本题需要循环和判断两种结构,然后确定循环体和判断条件,例如:判断条件:max<a[i]),

 循环体: for(i=0; i<n;i++)
  {
  scanf("%d", &a[i]);
  }

3.先输入一个值,确定数组长度,然后输入几个数,在进行判断,即与最大值进行比较,最后进行循环,遍历数组找到最大值;

4.输出最大值及其下标。

三,程序框图

 

四,遇到的问题及解决方法

遇到的问题:编译没有错误,提交时总是提示答案错误,截图如下:

解决方法:先将错误提示翻译成汉语,然后再编译器上单步调试,再对比其他同学的答案,发现应将i=1,写成 i=0,改过来就对了。

五,运行结果图

 

 

六,提交列表

 

7-3 将数组中的数逆序存放

一,实验代码

#include <stdio.h>
int main()
{
    int i, n, swap, array[10];
    scanf("%d", &n);
    for (i = 0; i < n; i++)
        scanf("%d", &array[i]);
    for (i = 0; i < n/2; i++)
    {
        swap = array[i];
        array[i] = array[n-1-i];
        array[n-1-i] = swap;
    }
    for (i = 0; i < n-1; i++)
        printf("%d ", array[i]);
    printf("%d\n", array[n-1]);
    return 0;
}

二,设计思路

1.根据题意定义变量,分别是整型变量:i,n(数组长度),swap(中间变量),array[10](数组),

2.理解题意,本题需要用到循环结构,确定循环体,即数组中的数逆序存放的代码:

 for (i = 0; i < n/2; i++)
    {
        swap = array[i];
        array[i] = array[n-1-i];
        array[n-1-i] = swap;
    }

3.输入数字,确定数组长度,再输入几个数,确定数组长度,数组首尾位置的数互换,以此类推‘

4.输出新的数组。

三,程序框图

 

四,遇到的问题及解决方法

遇到的问题同上,错误截图如下:

解决方法:单步调试,发现循环体的确定有误,后又上网查找,改成

for (i = 0; i < n/2; i++)
    {
        swap = array[i];
        array[i] = array[n-1-i];
        array[n-1-i] = swap;
    }

就对了。

五,运行结果图

六,提交列表

 

 

附加题:

7-3 求整数序列中出现次数最多的数

一,实验代码

 

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

  

 

二,设计思路

1.根据题意定义变量,分别是整型变量i,j,n(定义数组长度),max(出现最多的次数),x(下标),a[i](数组),b[i](数组);

2.理解题意,本题需用循环,判断两种结构,并确定循环体和判断条件,例如:循环体:

for(i=0;i<n;i++)
{
b[i]=0;
for(j=0;j<n;j++)
if(a[i]==a[j])
b[i]++;
};

判断条件:max>b[i];

3.先输入一个数,确定数组长度,在输入几个数,即数组中的数,然后遍历数组,找到出现最多的数;

4.输出结果。

三,程序框图

四,遇到的问题及解决方法

问题截图如下:

问题原因:第一个for中,i=1.

问题原因:最后一个for循环中max>b[i].

解决方法:将上述的问题都改正后,在编译器上编译运行,结果正确后,提交就可以了。

五,运行结果图

六,提交列表

要求三

上传文件截图

GIT地址:https://git.coding.net/Hunjunxian/juhao.git

要求四

个人总结

1.学习了一维数组的定义,初始化,及一些经典的例子,如选择排序法,冒泡排序法等。

2.学习了二维数组的定义,赋初值,以及一些实例,如求矩阵每一行的和,求下三角,对角线两侧数据交换等。

3.收获:对数组有了更深入地了解,也学会了用程序坚决一些简单的问题,如求数组中的最大值及其下标。

4.难点:我认为对数组中的数进行排序是一个难点,尤其是冒泡排序法,不是很好理解,而且也不能很好的区分选择排序法和冒泡排序法。

5.对于难点问题,课下需要多看,多练习,个人认为若实在理解不了也可以直接背下来,以后也可以直接拿来用。

要求五

互评和学习进度

1.我评价的博客:

何宗彦:http://www.cnblogs.com/hezongyan/

 

陈雨秋:http://www.cnblogs.com/cyq66992152/

 

姚爽:http://www.cnblogs.com/yaoshuang/

2.学习进度条

日期 代码行数 时间1 博客字数 时间2 知识点
2017.12.2 230 约5hours 约400 1.5hours 数组的相关内容

 3.折线图

 

posted @ 2017-11-27 22:41  句号?  阅读(195)  评论(9编辑  收藏  举报