第二次作业

---恢复内容开始---

 

 

作业要求

计算机18秋-函数  6-1 统计个位数字

1.实验代码

 1 int Count_Digit ( const int N, const int D )
 2 {
 3     int a,b,i=0;     //定义变量
 4     a=N;
 5     if(a<0)
 6     a=-a;     //将输入的数字变为正数
 7     do{
 8         b=a%10;     //a与10取余得到个位上的数
 9         if(b==D)
10         i++;     //如果个位数字等于D,计数加一
11         a/=10;     //将a除10继续验证下一位数字
12 }while(a>0); //如果a大于0则继续执行循环 13 return i; 14 }

2 解题思路

(1)描述题目算法

第一步:定义变量,将输入数字赋值给a

第二步:如果出现负数,将负数变为正数

第三步:执行循环计算数字D出现的次数

第四步:输出结果

(2)流程图

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

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

 

 

错误原因:提交时提交了整个程序

解决方法:经过反复的测试发现只提交函数部分

编译器设置断点、单步调试的界面截图

 

 

 

计算机18秋-数组1   7-1 交换最小值和最大值

1.实验代码

 

#include <stdio.h>
int main()
{
    int N,i,x,a[10],b,c,min,max;     //定义变量
    scanf("%d",&N);     //读取数字
    for(i=0;i<N;i++)
    {
        scanf("%d",&a[i]);     //执行循环存入数组
    }
    min=a[0];     //使最小值等于数组的第一个数
    for(i=0;i<N;i++)
    {
        if(a[i]<=min)
          {
              min=a[i];
          x=i;
          }     //找出数组中的最小值
    }
    c=a[0];
    a[0]=min;
    a[x]=c;     //最小值与数组第一个数交换
    max=a[0];
    for(i=0;i<N;i++)
    {
        if(a[i]>=max)
          {
              max=a[i];
          x = i;
          }     //找出数组中最大值
    }
    b=max;
    a[x]=a[N-1];
    a[N-1]=b;     //将最大值与数组最后一个数字交换
    
    for(i=0;i<N;i++)
    {
        printf("%d ",a[i]);    //循环输出数组
    }
    return 0;
}

 

2 解题思路

(1)主要描述题目算法

第一步:定义变量

第二步:读取输入的数字

第三步:找到数组中最小值并且与数组第一位交换

第四步:找到数组中最大值并且与数组最后一位交换

第五步:输出数组

(2)流程图

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

错误原因:未考虑数组的容量大小导致最后一位数字未存入

解决方法:反复调试找到错误,将数组改为a[10]

 

编译器设置断点、单步调试的界面截图

 

 

 

计算机18秋-数组2  7-4 选择法排序

#include <stdio.h>
int main()
{
    int i, j, min, temp, a[10];     //定义变量
    for(i = 0; i < 10; i++)
    {
        scanf("%d",&a[i]);     //读取输入数字
    }
    
    for(i = 0; i < 3;i++)     //循环的轮数
    {
        min=i;
        for(j = i+1; j < 10; j++)     //比较次数
        {
            if(a[min] > a[j])
            {
                min=j;     //找出最小值
            }
        }
       temp=a[i];
       a[i]=a[min];
       a[min]=temp;     //将最小值与前一位交换
            
    }
    for(i = 0; i < 10; i++)
    printf("%5d",a[i]);     //输出结果
    return 0;
}

 2 解题思路
(1)描述题目算法

第一步:定义变量输入数据

第二步:进行三轮选择排序

第三步:输出结果

(2)流程图

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

程序运行结果截图

 

编译器设置断点、单步调试的界面截图

 

 个人总结
(1)总结这几周你学习内容有哪些收获?

这几周主要学了数组,学会了数组的输入与输出

学会了两种排序发,冒泡排序和选择排序

还有一些数组的知识
(2)总结这几周所学内容中难点对此做的措施去克服困难

难点是两种排序法冒泡排序和选择排序

措施:理解老师的程序,自己反复思考

反复练习,逐渐的理解两种方法

 

互评和学习进度

点评1

点评2

点评3

 

表格和折线图

 

 

 

 

 

周数 此周代码行数/行 码代码所用时长/h 所写博客字数/字 写博客所用时长/h 所涉及的知识点
第14周 2000 12 0 有关简单函数的知识
第15周 2100 13 0 有关较深奥函数的知识
第16周 2500 14 0 0 有关简单数组的知识 
第17周 2500 13 900 5 加深对数组的知识 

 

 

posted @ 2018-12-21 17:39  黄兴宇  阅读(157)  评论(6编辑  收藏  举报