用C语言编写一个简单的"小学数学测试系统"

用C语言编写一个简单的"小学数学测试系统",第1张

分类: 电脑/网络

问题描述:

要思路,要原程序代码,要注示.

本人C语言知识水有限.

解析:

include <stdio.h>/* 调用库函数 */

#include <stdlib.h>/* 调用库函数 */

int Tha/* 变量 表示第一个运算数 */

int Thb/* 第二个运算数 */

int Tresult/* 正确答案 */

int Qcount/* 题目的个数 */

int Upnum/* 升级的分数 */

int Tscore/* 当前得分 */

char op/* 运算符号 */

TestTen() /* 出第一个级别题的函数 */

{

int Userda/* 用户给出的答案 */

int temp/* 临时变量,用于交换两个变量得值 */

op=random(4)+1/* 产生一个1-4之间的随机数,用于表示+ ,- , * , / */

switch(op) /* 判断运算符是什么 */

{

case 1: /* 加 的情况 */

{ Tha=random(10)/* 产生一个0-9之间的者碧随机数 放在第一个运算数 Tha中 */

Thb=random(10)/* 产生一个0-9之间的随机数 放在第二个运算数 Thb中 */

Tresult=Tha+Thbbreak/* 计算出正确答案 放在 Tresult中 */

}

case 2: /* 减 的情况 */

{ Tha=random(10)

Thb=random(10)

if(Tha<Thb) /* 减不能的负 所以第一个运算数要比第二个大,如果小,则交换两变量的值 */

{temp=ThaTha=ThbThb=temp} /* 交换 */

Tresult=Tha-Thbbreak/* 计算出正确答案 放在 Tresult中 */

}

case 3: /* 乘 的情况 */

{ Tha=random(10)

Thb=random(10)

Tresult=Tha*Thbbreak

}

case 4: /* 除 的情况 */

{do /* 循环 保证可以除尽 */

{ do /* 循环保证 除数不为 0 */

{Tha=random(10)

Thb=random(10)

if(Tha<Thb)

{temp=ThaTha=ThbThb=temp}

}while(Thb==0) /* 当除数0 的时候继续产生新的随机数 */

}while((Tha%Thb)!=0)/* 当不能整除的时候继续产生新的随机数 */

Tresult=Tha/Thb

break

}

}

switch(op) /* 根据 op的值决定庆薯输出 问题 */

{

case 1: {printf("\n%d + %d = ",Tha,Thb)break}

case 2: {printf("\n%d - %d = ",Tha,Thb)break}

case 3: {printf("\n%d X %d = ",Tha,Thb)break}

case 4: {printf("\n%d / %d = ",Tha,Thb)}

}

scanf("%d",&Userda)/* 用户输入答案 */

while(Userda!=Tresult) /* 判断答案是否正确 */

{ if(Tscore>=10) /* 不正确减分 */

Tscore=Tscore-10

printf("\nWrong! Now Your Score: %d",Tscore)/* 输誉嫌者出错误信息和 当前分数 */

/*if(Tscore<Upnum)

return*/

printf("\n Input The Answer Again: ")/* 提示重新输入 */

scanf("%d",&Userda)/* 用户输入答案 */

}

Tscore=Tscore+10/* 答对了 加分 */

printf("\n Right! Now Your Score: %d",Tscore)/* */

}

TestHun() /*出第二个级别题的函数*/

{

int Userda

int temp

op=random(4)+1

switch (op)

{

case 1:

{ Tha=random(90)+10/* 产生 10-99 之间的随机数,即两位数 */

Thb=random(90)+10

Tresult=Tha+Thbbreak

}

case 2:

{ Tha=random(90)+10

Thb=random(90)+10

if(Tha<Thb)

{temp=ThaTha=ThbThb=temp}

Tresult=Tha-Thbbreak

}

case 3:

{ Tha=random(90)+10

Thb=random(90)+10

Tresult=Tha*Thbbreak

}

case 4:

{do

{ do

{Tha=random(90)+10

Thb=random(90)+10

if(Tha<Thb)

{temp=ThaTha=ThbThb=temp}

}while (Thb==0)

}while ((Tha%Thb)!=0)

Tresult=Tha/Thb

break

}

}

switch(op)

{

case 1: {printf("\n%d + %d = ",Tha,Thb)break}

case 2: {printf("\n%d - %d = ",Tha,Thb)break}

case 3: {printf("\n%d X %d = ",Tha,Thb)break}

case 4: {printf("\n%d / %d = ",Tha,Thb)}

}

scanf("%d",&Userda)

while(Userda!=Tresult)

{ if(Tscore>=10)

Tscore=Tscore-10

printf("\nWrong! Now Your Score: %d",Tscore)

if(Tscore<Upnum) /* 如果分数小于设定的分数则直接推出函数 */

return

printf("\n Input The Answer Again: ")

scanf("%d",&Userda)

}

Tscore=Tscore+10

printf("\n Right! Now Your Score: %d",Tscore)

}

main()

{

int Leiji=0/* 变量 , 存储 累计答题数目 */

randomize()/* 保证每次运行程序 产生的随机数序列不相同的语句 */

clrscr()/* 清屏 : 清除屏幕上上次运行的内容,重新开始运行程序 */

clrscr()

printf("\nTEST START:-------------------------------------")

printf("\n Please Input Question Count: ")/* 提示信息 :输入问题个数 */

scanf("%d",&Qcount)/* 用户输入问题个数 */

do

{printf("\n Please Input UpLevel Score(Times of 10 (Sheng ji de fen shu)) : ")

/* 提示信息 :输入升级分数(10的倍数 ) */

scanf("%d",&Upnum)/* 用户输入升级分数 */

if(Upnum<10) /* 如果用户输入的升级分数<10 */

printf("\n Must >= 10 ! ")

else if(Upnum%10!=0) /* 如果用户输入的升级分数不是10的倍数 :即 整除10 不等于0 */

printf("\n Must Some Times of 10!(10 de bei shu!)")/* */

else break

}while(1)/* 不满足条件永远循环 */

printf("\n--------------------------------------------------------")

printf("\n--------------------------------------------------------")printf("\nTest Start:")

printf("\n--------------------------------------------------------")

printf("\n----------------------------------")

printf("\n Lever 1 Start :")

Begin1:

printf("\n----------------------")

printf("\n Question: %d",Leiji+1)/* 输出 题号 */

TestTen()

Leiji++

if(Leiji==Qcount) /* 如果做题个数 和 事先设定好的问题个数相同 则结束答题! */

{ printf("\n--------------------------------------------------------")

printf("\n--------------------------------------------------------\n")

printf("\n Test Over!!!\n")

printf("\n--------------------------------------------------------")

printf("\n Your Final Score: %d",Tscore)

if(Tscore>=Upnum)

printf("\n Your Final Level: LEVEL 2")

else

printf("\n Your Final Level: LEVEL 1")

goto LastLine

}

if(Tscore<Upnum) /* 分数 小于 升级分数 */

goto Begin1/* 转向到 Begin1 继续作题 */

printf("\n Up To Advance Level!\n Lever2 Start :---------")/* 达到升级分数 升级到 Level2 */

Begin2:

printf("\n----------------------")

printf("\n Question: %d",Leiji+1)

TestHun()

Leiji++

if(Leiji==Qcount)

{ printf("\n--------------------------------------------------------")

printf("\n--------------------------------------------------------\n")

printf("\n Test Over!!!\n")

printf("\n--------------------------------------------------------")

printf("\n Your Final Score: %d",Tscore)

if(Tscore>=Upnum)

printf("\n Your Final Level: LEVEL 2")

else

printf("\n Your Final Level: LEVEL 1")

goto LastLine

}

if(Tscore<Upnum)

{printf("\nDown To Normal Level! Lever1 : -------")/* 从Level2答题过程中分数小于升级分数 降级到Level 1 继续答题 */

goto Begin1}

else

goto Begin2

LastLine:

printf("\n------------------------------------------------")

getchar()getchar()/* 等待用户输入回车结束程序运行 */

}

以下是一个冒晌搏山泡排序程序的示例代码,它可以对输入的任意数量整数进行排序:

```c

#include <stdio.h>

void bubble_sort(int list[], int n) {

int i, j, temp

for(i = 0i <n-1i++) {

for(j = 0j <n-i-1j++) {

if(list[j] >list[j+1]) {

temp = list[j]

list[j] = list[j+1]

list[j+1] = temp

}

}

}

}

int main() {

int n, i

printf("请输入要排序的整数个数:")

scanf("%d", &n)

int list[n]

printf("请输入%d个整数:", n)

for(i = 0i <银液 ni++) {

scanf("%d", &list[i])

}

bubble_sort(list, n)

printf("排宴中序后的结果是:")

for(i = 0i <ni++) {

printf("%d ", list[i])

}

return 0

}

```

接下来是测试用例,包括了多种情况,以验证算法在各种情况下的正常工作:

```c

#include <stdio.h>

int main() {

// 测试用例1:对3个整数进行排序

int list1[] = {2, 1, 3}

bubble_sort(list1, 3)

printf("测试用例1:[2, 1, 3] ->[1, 2, 3]

")

for(int i = 0i <3i++) {

printf("%d ", list1[i])

}

printf("

")

// 测试用例2:对10个整数进行排序

int list2[] = {56, 89, 17, 21, 2, 76, 12, 9, 47, 62}

bubble_sort(list2, 10)

printf("测试用例2:[56, 89, 17, 21, 2, 76, 12, 9, 47, 62] ->[2, 9, 12, 17, 21, 47, 56, 62, 76, 89]

")

for(int i = 0i <10i++) {

printf("%d ", list2[i])

}

printf("

")

// 测试用例3:对1个整数进行排序

int list3[] = {5}

bubble_sort(list3, 1)

printf("测试用例3:[5] ->[5]

")

for(int i = 0i <1i++) {

printf("%d ", list3[i])

}

printf("

")

return 0

}

```

测试结果显示,算法可以正常地对数组进行排序。

#include #include int main( ) { long start,endstart = clock()//测试的程序段 end = clock()printf("%ld\亏散n",start-end)/乎辩/单位:毫销顷氏秒 return 0}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12536745.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存