C语言—小学生计算机辅助教学系统

任务1. 程序首先随机产生两个1–10之间的正整数,在屏幕上打印出问题。

任务2. 在任务1的基础上,当学生回答错误时,最多给三次重做的机会,三次仍未做对,则显示”Wrong! You have tried three times! Test over!”,程序结束。

任务3. 在任务1的基础上,连续做10道乘法运算题,不给机会重做,若学生回答正确,则显示”Right!” ,否则显示”Wrong!”。10道题全部做完后,按每题10分统计并输出总分,同时为了记录学生能力提高的过程,再输出学生的回答正确率(即答对题数除以总题数的百分比)。

任务4. 在任务3的基础上,通过计算机随机产生10道四则运算题,两个操作数为1–10之间的随机数,运算类型为随机产生的加减乘除中的任意一个,不给机会重做,如果学生回答正确,则显示“Right!”,否则显示“Wrong!”。10道题全部做完后,按每道题10分计算总得分,然后打印出总分和学生的回答正确率。

任务5. 在任务4基础上,为使学生通过反复练习熟练掌握所学内容,在学生完成10道运算题后,若回答正确率低于75%,则重新做10道题,直到回答正确率高于75%时才退出程序。

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include <windows.h> 

int one();
int two(); 
int three();
int four();
int five();
int six();
int rightCount = 0;

/*函数功能:判断两个数是否相等*/
int Pending(int s, int flag)
{
    if (s == flag)
    {
        printf("Right\n");
        rightCount++;
    }
    else
        printf("Wrong\n");
    return 0;
}
/*判断被除数是否为零*/
int Division(char b, double c)
{
    int temp;
    temp = 0;
    if (b == '/' && c == 0)
    {
        printf("被除数为零");
        temp = 1;
    }
    return temp;
}

/*产生随机数*/

int Srand1()//产生1~9
/*
函数功能:产生随机数
函数入口:无
函数返回值:随机数
*/
{
    srand((unsigned int)time(NULL));
    Sleep(10);
    int i;
    i= rand() % 9 + 1;
    return i;
}

/*函数功能:产生随机数
函数传参:无
函数返回值:随机数*/
int Srand2()//产生1~9
{
    Sleep(10);
    int i;
    i = rand() % 9 + 1;
    return i;
}
int StatisticScore(int c)
/*
* 功能:传入算对的题数
入口参数:c
返回值:答题的分数
*/
{
    int x;
    x = c * 10;
    return x;
}
double StatisticRate(double c)
/*
功能:算正确率
入口参数:c
返回值:答题的正确率*/
{
    double y;
    y = c/10;
    return y;
}
int one()
/*任务一
* 无传参
* 无返回值*/
{
    int a, c, d,m;
    do
    {
        a = Srand1();
        c = Srand2();
        d = a * c;
        printf("%d*%d=", a, c);
        scanf_s("%d", &m);
        Pending(d, m);
    } while (m != d);
        return 0;
}

/*任务二
无传参
无返回值*/

int two()
{
    srand((unsigned)time(NULL));
    int flag,count,temp;
    flag = 0;
    count = 0;
    double a, c, s, e;
    int b;
    char p;
    p = '/';

    do
    {
        a = Srand1();
        b = rand() % 4;
        c = Srand2();
        switch (b)
        {
        case 0:
            temp = Division(p, c);
            if (temp == 1)
                break;
            printf("%.2f/%.2f=", a, c);
            s = a / c;
            break;
        case 1:
            printf("%.2f*%.2f=", a, c);
            s = a * c;
            break;
        case 2:
            s = a + c;
            printf("%.2f+%.2f=", a, c);
            break;
        default:
            printf("%.2f-%.2f=", a, c);
            s = a - c;
        }
        scanf_s("%lf", &e);
        if (s == e){
            flag++;
            printf("Right\n");
        }
        else{
            count++;
            if (count != 4)
                printf("Wrong ! Please try again.\n");
            else{
                printf("Wrong! You have tried three times! Test over!\n");
                break;
            }
        }
    } while (flag != 1);
    flag = count = 0;
    return 0;
}

int three()
/*任务三
无传参
无返回值*/
{
    int a, c, d, m, flag;
    flag = 0;
    rightCount = 0;
    do{
        flag++;
        a = Srand1();
        c = Srand2();
        d = a * c;
        printf("%d*%d=", a, c);
        scanf_s("%d", &m);
        Pending(d, m);
    } while (flag != 10);
    int score= StatisticScore(rightCount);
    double rate = StatisticRate(rightCount);
    printf("得分: %d , 正确率:%.2f\n", score, rate);
    return 0;
}
int four()
/*
任务四*/
{
    int b, flag, parameter , s, x, temp;
    double y;
    double a, c;
    flag = 0;
    int score;
    rightCount = 0;
    double m, rate;
    char p;
    do{
        flag++;
        a = Srand1();
        a = a * 1.0;
        c = Srand2();
        c = c * 1.0;
        b = rand() % 4;
        switch (b){
        case 0:
            p = '/';
            temp = Division(p, c);
            if (temp == 1)
                break;
            printf("%.2f/%.2f=", a, c);
            s = a / c;
            break;
        case 1:
            printf("%.2f*%.2f=", a, c);
            s = a * c;
            break;
        case 2:
            s = a + c;
            printf("%.2f+%.2f=", a, c);
            break;
        default:
            printf("%.2f-%.2f=", a, c);
            s = a - c;
        }
        scanf_s("%lf", &m);
        Pending(s, m);
    } while (flag != 10);
    score = StatisticScore(rightCount);
    rate = StatisticRate(rightCount);
    printf("得分为: %d ,正确率为: %.2f ", score, rate);
    printf("\n");
    return 0;
}
int five()
/*任务五
无传参
无返回值*/
{
    int b, flag, x, temp;
    double a, c;
    rightCount = 0;
    double rate = 0;
    double y, s;
    do {
        flag = 0;
        double m;
        char p;
        do {
            a = Srand1();
            a = (double)a;
            c = Srand2();
            c = (double)c;
            b = rand() % 4;
            switch (b) {
            case 0:
                p = '/';
                temp = Division(p, c);
                if (temp == 1)
                {
                    continue;
                }
                printf("%.2f/%.2f=", a, c);
                s = a / c;
                break;
            case 1:
                printf("%.2f*%.2f=", a, c);
                s = a * c;
                break;
            case 2:
                s = a + c;
                printf("%.2f+%.2f=", a, c);
                break;
            default:
                printf("%.2f-%.2f=", a, c);
                s = a - c;
            }
            scanf_s("%lf", &m);
            flag++;
            Pending(s, m);
        } while (flag % 10 != 0);
        int score = StatisticScore(rightCount);
        //    score = 1.0 * rightCount;
        rate = StatisticRate(rightCount);
        printf("%d %.2f", score, rate);
        printf("\n");
    } while (rate <= 0.75);
    return 0;
}
int main()
{
    int a,flag;
    flag = 0;
    printf("******************************************************************************\n");
    printf(" * 1. 任务 1:随机产生 1 - 10 之间正整数,出乘法问题,直到学生答对为止。\n");
    printf(" * 2. 任务 2:在任务 1 基础上,当学生答错时,最多给三次机会。 \n");
    printf(" * 3. 任务 3:在任务 1 基础上,连做 10 道乘法题,不给机会重做,统计总分、正确率。\n");
    printf(" * 4. 任务 4:在任务 3 基础上,随机产生 10 道四则运算题,不给机会重做,统计总分、正确率。 \n");
    printf(" * 5. 任务 5:在任务 4 基础上,若回答正确率低于 75 % ,则再做 10 道题,直到正确率高于 75 % 为止。\n");
    printf(" * 6. 退出 \n");
    printf("***************************************************************************** \n");
    while (scanf_s("%d", &a) != EOF){
        if (a == 6) {
            printf("程序已结束");
            break;
        }
         
        switch (a){
        case 1:
            one();
            break;
        case 2:
            two();
            break;
        case 3:
            three();
            break;
        case 4:
            four();
            break;
        case 5:
            five();
            break;
        default:
            printf("命令错误,程序已结束");
            break;
        }
        if (flag == 1)
            break;
        printf("*********************************************************************************\n");
        printf(" * 1. 任务 1:随机产生 1 - 10 之间正整数,出乘法问题,直到学生答对为止。\n");
        printf(" * 2. 任务 2:在任务 1 基础上,当学生答错时,最多给三次机会。 \n");
        printf(" * 3. 任务 3:在任务 1 基础上,连做 10 道乘法题,不给机会重做,统计总分、正确率。\n");
        printf(" * 4. 任务 4:在任务 3 基础上,随机产生 10 道四则运算题,不给机会重做,统计总分、正确率。 *\n");
        printf(" * 5. 任务 5:在任务 4 基础上,若回答正确率低于 75 % ,则再做 10 道题,直到正确率高于 75 % 为止。\n");
        printf(" * 6. 退出 *\n");
        printf("********************************************************************************** \n");
    }
    return 0;
}

C语言及Java 水仙花数

C语言

#include<stdio.h>
int main() {
    int units, tens, hunds, i, result;
    for (i = 100; i < 1000; i++) {
        units= i % 10;//个位
        tens = i % 100 / 10;//十位
        hunds= i / 100;//百位
        result=units* units* units + tens * tens * tens + hunds * hunds * hunds;
        if (result == i)//如果是水仙花数 则输出此数
            printf("%d ", i);
    }
    return 0;
}

Java

public static void main(String[] args) {
    for (int i = 100; i < 1000; i++) {
        int units= i % 10;//个位
        int tens = i % 100 / 10;//十位
        int hunds= i / 100;//百位
        int result=units* units* units + tens * tens * tens + hunds * hunds * hunds;
        if (result == i)//如果是水仙花数 则输出此数
            System.out.println(i+" ");
    }
}

Java中的部分知识点

1.if 适合做区间匹配,switch适合做值匹配。

2.求数组中包含元素的长度:数组名.length。

3.三目运算符: 判定的条件?结果1:结果2;(如果判定的条件是正确 则返回结果1,否则返回结果2)

4.this 关键字的作用:代表当前对象的地址。this 可以访问当前对象的成员变量。

5.方法重载:同一个类中,多个方法的名称相同,形参列表不同。

6.判断String类型的变量与字符串是否相同的 所运用的API:equals。

7.ArrayList E(泛型,此位置写下的引用数据类型 是集合中所有元素应该遵循的数据类型)

(E 只能用引用数据类型,不能用基本数据类型)

8.子类不能继承父类中的定义成静态(static)的方法 (static 是共享 )。

9.子类不能继承父类中定义成私有的(private)的方法(private修饰的方法 只能在当前类中访问)。

10.方法重写:子类虽能继承父类中的方法,但是还是坚持重新做 与父类中的方法名相同 但方法内容不同的方法。