• 小呆呆组四则运算(可检验评分)


    要求:
    输入一个整形数组,数组里有正数也有负数。
    数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。
    如果数组A[0]……A[j-1]首尾相邻,允许A[i-1], …… A[n-1], A[0]……A[j-1]之和最大。
    同时返回最大子数组的位置。
    求所有子数组的和的最大值。

    设计思路:

    1·随机生成一个数组。

    2·通过for循环语句,让计算机从第一个数开始逐个开始向后遍历。

    3·由于是一个环形数组,故遍历是有限次数。遍历次数是数组长度-1。

    4·每一次遍历的值赋值给max,通过一次次比较,最终的max就是环形数组最大子数组的和。

    5·输出这个max。

    遇到的问题:没有在while函数之前加上srand函数,导致第二以及以后次做题时,题目与第一次重复。

    程序:

    #include<stdlib.h>
    #include<stdio.h>
    #include<conio.h>
    #include<time.h>
    void main()
    {printf("&&&&&&&四则运算&&&&&&& 请看题 ");

    int a[10],b[10],d[10],c[10],num=0,result,add=0;
    float val;
    char fa[5]={'+','-','*','/'};
    srand(time(0));
    while(1)
    {

    d[num]=abs(rand())%4;
    while(1)
    {
    c[num]=-1;
    a[num]=abs(rand())%201-100;
    b[num]=abs(rand())%201-100;
    if(d[num]==0) c[num]=a[num]+b[num];
    else if(d[num]==1) c[num]=a[num]-b[num];
    else if(d[num]==2) c[num]=a[num]*b[num];
    else if(d[num]==3) 
    {
    if(b[num]>0)val=1.0*a[num]/b[num];
    }
    if(d[num]<=2)

    if(c[num]>=0 && c[num]<=100) break;
    }
    else

    if(a[num]==int(val)*b[num])
    {c[num]=val; break;}
    }
    }
    num++;
    if(num==10) break;
    }
    /* 回答 */
    num=0;
    while(1)
    {
    printf("%d %c %d= ",a[num],fa[d[num]],b[num]);
    scanf("%d",&result);
    if(result==c[num])
    {
    printf("回答正确! ");
    add+=10;
    }
    else
    printf("错误,正确答案: %d ",c[num]);
    num++;
    if(num==10) break;
    }
    printf(" 得分:%d &&&&&&&加油吧,骚年!&&&&&&&",add);
    getch();
    }

  • 相关阅读:
    计算机速成课 第十一集 编程语言发展史
    计算机速成课 第十集 早期的编程方式
    Sharepoint2013操作文档库内容的相关操作
    IE6 css fixed
    Sharepoint2013站点503错误的解决方法(图解)
    发布Sharepoint2013相关的WebService服务
    Spring 读书笔记Spring容器(二)
    (转)UML类图与类的关系详解
    (转)C# 操作 Excel 颜色索引对照
    (转)Silverlight显示本地图片、Stream转Byte数组
  • 原文地址:https://www.cnblogs.com/wtctd/p/9917645.html
Copyright © 2020-2023  润新知