zoukankan      html  css  js  c++  java
  • 博客园第五次作业

    1.实验代码(判断素数)

    #include<stdio.h>
    #include<math.h>
    int main(void)
    
    {
        int x,i,n,j;
        scanf("%d",&n);
        while(n--){
            scanf("%d",&x);
            j=1;
            for(i=2;i<=sqrt(x);i++){
                if(x%i==0){
                    j=0;
                    break;
                }
            }
                if(j==0||x==1)
                printf("No
    ");
                else
                printf("Yes
    ");
        }
        return 0;
    }

    2 设计思路

    第一步:设置第一个循环,输入的n值控制循环次数用于输入需要判断得值。

    第二步:在循环中设计判断素数的算法,主要用的循环,如果循环没执行完就跳出循环,则该数不为素数,否则则为素数。

    (2)流程图

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

    出现问题:程序本身的设计思路并没有太大问题,问题出现在pta中给出运行超时。自己分析题目中的各个步骤,发现可能是循环的次数过多!应该有可以让内层循环判断素数时循环不那么多的办法。最后根据素数本身的特别之处考虑到对该数求根,只要改变循环控制变量中的i<=sqrt(x),在加入数学函数,该程序就不会运行超时了!

    1.实验代码(交换最小值和最大值)

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

    2 设计思路

    第一步:考虑到该程序为一组数据,所以优先使用数组解决问题会更方便,首先设置循环给数组中的每个做赋值。

    第二部:在不知道最大值与最小值的情况下,假设max与min作为下表都为0也就是数组中第一个为最大值和最小值,运用循环做判断,如果数组中下一个大于max则,记录下表,并把值赋值过去。同样的方法找到最大值和最小值。并记下最大值和最小值的下表。

    第三部:根据找到的最大值和最小值和已经保存的下表进行位置调换即可。

    (2)流程图

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

    错误分析:首先程序的基本思路我很清晰,觉得没什么问题,我把pta中给的数据运行程序,发现最小值做交换的时候,最小值的确时在a[0]的位置但是原来最小值的位置仍为原来的值,并且初始第一个值没有保留。导致该程序错误,没有达到位置互换的目的,在处理位置互换是忘记把a[0]原值做保存然后再赋值给交换过来的那个值。

    二、总结和学习进度条

    1、总结这几周所学内容、遇到的问题以及解决方法。

    第十七周我们主要学习了二维数组,还有字符数组。在二维数组的学习中,我对于行列的交换还有各种行列间的关系掌握的不是很好,因为课上讲的比较快,自己也似懂非懂,大概只掌握了百分之七十。课下在对书上代码反复琢磨之后算是有了很大的提高,不是那种一头雾水了!对于字符数字接受起来比较简单,因为和一维数组差不多!除了字符数组中涉及字符串的特别之处,觉得很好掌握,没有什么难以理解的地方,关键还是熟练掌握,运用于自己的编程中去把!

    2、点评3个同学的本周作业

    楼哲作业评价    陈禹翰作业评价    王强的作业评价

    3、请用表格和折线图呈现你这几周的代码行数和时间、博客字数和时间、涉及的知识点。

  • 相关阅读:
    选择排序
    插入排序
    冒泡排序
    linux 常用命令全集
    Boost简介
    postgresql命令行
    Ncurses 命令行图形库
    rsync ssh文件同步
    BusyBox参考
    screen命令
  • 原文地址:https://www.cnblogs.com/wangxiao2018024023/p/10145343.html
Copyright © 2011-2022 走看看