C语言,设计一个程序帮助小学生练习数学。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言,设计一个程序帮助小学生练习数学。相关的知识,希望对你有一定的参考价值。

一、 C语言程序设计题目
设计一个程序帮助小学生练习数学。
a) 程序首先让使用者输入ID号(包含两个字母和四个数字),例如:
Please input your four digit ID no: AB1234
程序应该有输入验证功能。ID正确输入完毕后,程序提示两个选项:
(1) Start a test
(2) Check score
(3) Exit
b) Test: 程序给出10个数学题目,例如:

12 * 3 = 36
48 + 32 = 80

56 / 28 = 2
注意:
i) 学生需要在下一道题给出前,回答当前问题。
ii) 数学题应包含加、减、乘、除运算,每题的运算类型随机产生。
iii) 每个题目的操作数随机生成,操作数的值不能超过100,除数不能为0。
iv) 在屏幕上输出下列信息:
Prob. | Correct Answ. | Ur Answ
v) 将学生ID和成绩记录在文本文件“score.txt”中
c) Check score:通过学生ID在“score.txt”文件中,查询历史成绩,并显示。
d) Exit:退出程序。
e) 程序评价标准
− 正确性(Correctiveness)
− 可读性(Readability)
− 鲁棒性(Robustness)
− 简洁性(Conciseness)

参考技术A 1L的哥们竟然没有分数也没有读写文件记录,我在他的基础上加了这个功能,采纳谁都可以哦~
#include <stdio.h>
#include <ctype.h>
#include <time.h>
#include <stdlib.h>
#include <windows.h>
#define IDNO_LENGTH 6
#define CALC_KIND 4
#define CALC_NUM 10

bool checkNo(char idNo[]);
char getSignal();
int getResult(int,int,char);
void takeTest();

//main函数
void main()

printf("Please input your four digit ID no(begin with two letters):");
char idNo[IDNO_LENGTH];
do

scanf("%s",&idNo);
fflush(stdin);
while(checkNo(idNo)==false);

printf("1.Start a test\t2.Check score\t3.Exitb\n");
int choose;
do

printf("选择:");
scanf("%d",&choose);
fflush(stdin);
while(choose!=1 && choose!=2&& choose!=3);

if(choose==1)

takeTest();
else if(choose==2)

FILE *fp;
char ch;
if((fp=fopen("score.txt","rt+"))==NULL)

printf("\n你还没做过题目测试");
getch();
exit(1);

ch=fgetc(fp);
while(ch!=EOF)

putchar(ch);
ch=fgetc(fp);

fclose(fp);

else

exit(0);



//获取随机运算符
char getSignal()

char signal[CALC_KIND]='+','-','*','/';
srand((unsigned)time(NULL));
return signal[rand()%4];


//获取随机数
int random(double start, double end)

return (int)(start+(end-start)*rand()/(RAND_MAX+ 1.0));


//运算
int getResult(int num1,int num2,char signal)

int res;
switch(signal)

case '+':
res=num1+num2;break;
case '-':
res=num1-num2;break;
case '*':
res=num1*num2;break;
case '/':
res=num1/num2;break;
default:
res=0;
printf("运算符不符合规则\n");

return res;


//列出10道题
void takeTest()

printf("开始答题,每道题10分,总共100分\n");
clock_t startTime;
startTime=clock();
int index;
int giveRes;
int num1;
int num2;
int score=0;
char signal;
for(index=0;index<CALC_NUM;index++)

srand((unsigned)time(NULL));
signal=getSignal();
num1=random(0,100);
num2=random(1,100);

printf("%d%c%d=",num1,signal,num2);
scanf("%d",&giveRes);
fflush(stdin);
if(getResult(num1,num2,signal)==giveRes)

printf("correct\n");
score+=10;

else

printf("wrong\n");


FILE *fp=fopen("score.txt","w");
fprintf(fp,"分数为%d",score);
fclose(fp);
printf("解10道题用了%lf秒\n",(double)(clock()- startTime)/CLOCKS_PER_SEC);


//检测idNo是否合规则,合规则返回true
bool checkNo(char idNo[])

int index;
bool flag;
flag=true;
for(index=0;index<IDNO_LENGTH;index++)

if(index<2)

if(!isalpha(idNo[index]))

flag=false;
printf("ID no 不符合规则,重新输入:");
break;


else

if(!isdigit(idNo[index]))

flag=false;
printf("ID no 不符合规则,重新输入:");
break;



return flag;
追问

你好,这是C语言还是C++语言?
我要的是C语言

追答

这绝对是C语言,相信我

本回答被提问者和网友采纳
参考技术B 你自己修改修改:
#include <stdio.h>
#include <ctype.h>
#include <time.h>
#include <stdlib.h>
#include <windows.h>
#define IDNO_LENGTH 6
#define CALC_KIND 4
#define CALC_NUM 10

bool checkNo(char idNo[]);
char getSignal();
int getResult(int,int,char);
void takeTest();

//main函数
void main()

printf("Please input your four digit ID no(begin with two letters):");
char idNo[IDNO_LENGTH];
do

scanf("%s",&idNo);
fflush(stdin);
while(checkNo(idNo)==false);

printf("1.Start a test\t2.Exitb\n");
int choose;
do

printf("选择:");
scanf("%d",&choose);
fflush(stdin);
while(choose!=1 && choose!=2);

if(choose==1)
takeTest();
else
exit(0);


//获取随机运算符
char getSignal()

char signal[CALC_KIND]='+','-','*','/';
srand((unsigned)time(NULL));
return signal[rand()%4];


//获取随机数
int random(double start, double end)

return (int)(start+(end-start)*rand()/(RAND_MAX+ 1.0));


//运算
int getResult(int num1,int num2,char signal)

int res;
switch(signal)

case '+':
res=num1+num2;break;
case '-':
res=num1-num2;break;
case '*':
res=num1*num2;break;
case '/':
res=num1/num2;break;
default:
res=0;
printf("运算符不符合规则\n");

return res;


//列出10道题
void takeTest()

clock_t startTime;
startTime=clock();
int index;
int giveRes;
int num1;
int num2;
char signal;
for(index=0;index<CALC_NUM;index++)

srand((unsigned)time(NULL));
signal=getSignal();
num1=random(0,100);
num2=random(1,100);

printf("%d%c%d=",num1,signal,num2);
scanf("%d",&giveRes);
fflush(stdin);
if(getResult(num1,num2,signal)==giveRes)

printf("correct\n");

else

printf("wrong\n");



printf("解10道题用了%lf秒\n",(double)(clock()- startTime)/CLOCKS_PER_SEC);


//检测idNo是否合规则,合规则返回true
bool checkNo(char idNo[])

int index;
bool flag;
flag=true;
for(index=0;index<IDNO_LENGTH;index++)

if(index<2)

if(!isalpha(idNo[index]))

flag=false;
printf("ID no 不符合规则,重新输入:");
break;


else

if(!isdigit(idNo[index]))

flag=false;
printf("ID no 不符合规则,重新输入:");
break;



return flag;

希望能解决您的问题。追问

。。。。。我是小白。完全不会,麻烦你了。。。

参考技术C 你这是要说明什么的呢额???

团体程序设计天梯赛-练习集-L1-030. 一帮一

L1-030. 一帮一

“一帮一学习小组”是中小学中常见的学习组织方式,老师把学习成绩靠前的学生跟学习成绩靠后的学生排在一组。本题就请你编写程序帮助老师自动完成这个分配工作,即在得到全班学生的排名后,在当前尚未分组的学生中,将名次最靠前的学生与名次最靠后的异性学生分为一组。

输入格式:

输入第一行给出正偶数N(<=50),即全班学生的人数。此后N行,按照名次从高到低的顺序给出每个学生的性别(0代表女生,1代表男生)和姓名(不超过8个英文字母的非空字符串),其间以1个空格分隔。这里保证本班男女比例是1:1,并且没有并列名次。

输出格式:

每行输出一组两个学生的姓名,其间以1个空格分隔。名次高的学生在前,名次低的学生在后。小组的输出顺序按照前面学生的名次从高到低排列。

输入样例:
8
0 Amy
1 Tom
1 Bill
0 Cindy
0 Maya
1 John
1 Jack
0 Linda
输出样例:
Amy Jack
Tom Linda
Bill Maya
Cindy John
做法:按照题意,就是一个从前面一个从后面输出就行了
 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 struct Node {
 4     int id;
 5     string name;
 6 };
 7 int main() {
 8     int n;
 9     cin >> n;
10     int x[55];
11     string s;
12     Node aa[55];
13     int vis[55] = {0};
14     for (int i = 1; i <= n; i++) {
15         cin >> x[i] >> s;
16         aa[i].id = i;
17         aa[i].name = s;
18     }
19     for (int i = 1; i <= n / 2; i++) {
20         cout << aa[i].name << " ";
21         for (int j = n; j >= n / 2; j--) {
22             if (vis[j] == 0 && x[j] == 1 - x[i]) {
23                 cout << aa[j].name << endl;
24                 vis[j] = 1;
25                 break;
26             }
27         }
28     }
29     return 0;
30 }

 



以上是关于C语言,设计一个程序帮助小学生练习数学。的主要内容,如果未能解决你的问题,请参考以下文章

小学数学练习

小学数学练习

小学数学练习

大一c语言 小学生算数出题系统 的设计与实现?

c语言学生成绩管理系统设计

设计小学生四则运算测试程序,要求随机产生10题四则运算题,答完后给出得分。用C语言做,有人会吗??很急