zoukankan      html  css  js  c++  java
  • 小呆呆组四则运算(可检验评分)

    要求:
    输入一个整形数组,数组里有正数也有负数。
    数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。
    如果数组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();
    }

  • 相关阅读:
    R学习之——R用于文本挖掘(tm包)
    【转】基于LDA的Topic Model变形
    Windows操作系统实习之读者写者问题
    应用《开场白》ios源码分享
    一个美式英语发音的app开源
    20款优秀的移动产品原型和线框图设计工具
    sqlite 数据库在ios中的使用
    28个UI免费漂亮的切换开关PSD下载
    ios应用程序生命周期
    Ludei HTML5平台将于今年夏季支持WebGL 3D技术
  • 原文地址:https://www.cnblogs.com/wtctd/p/9917645.html
Copyright © 2011-2022 走看看