C语言结课作业,面向过程
题目:王老师的儿子正在读小学二年级,每晚都要缠着王老师学数学,学英语。但王老师这几天要加班,不能陪伴他儿子。所以,王老师就开始思考,能不能编写一个C语言的“小应用”来实现出题、且自动批改等基本功能。
要求:
1.可选择组3人以内的团队进行开发,将在最后一次实验课展示(可以用自己的电脑);
2.题目包括但不限于简单的数学四则运算,英语单词拼写题;
3.需统计答题情况,如正确个数、得分,单次的总题量不少于5题。
以下数学部分是网上找到样板,经过改动后
#include <stdio.h>
#include <stdlib.h>
int right=0;
int wrong=0;
int rand();
void add()
{
int a,b,c;
a=rand()%100;
b=rand()%100;
printf("请回答:\n\t\t %d + %d = ",a,b);
scanf("%d",&c);
if(a+b==c){
printf("回答正确!\n");
right++;
}
else
{
printf("回答错误!\n");
wrong++;
}
}
void minu()
{
int a,b,c;
a=rand()%100;
b=rand()%100;
printf("请回答:\n\t\t %d - %d = ",a,b);
scanf("%d",&c);
if(a-b==c){
printf("回答正确!\n");
right++;
}
else
{
printf("回答错误!\n");
wrong++;
}
}
void mul()
{
int a,b,c;
a=rand()%100;
b=rand()%100;
printf("请回答:\n\t\t %d * %d = ",a,b);
scanf("%d",&c);
if(a*b==c){
printf("回答正确!\n");
right++;
}
else
{
printf("回答错误!\n");
wrong++;
}
}
void di()
{
int a,b,c;
a=rand()%100;
b=rand()%100;
printf("请回答:\n\t\t %d / %d = ",a,b);
scanf("%d",&c);
if(a/b==c){
printf("回答正确!\n");
right++;
}
else
{
printf("回答错误!\n");
wrong++;
}
}
void main()
{
int choise;
int con=0;
printf("\n\t\t\t欢迎进入小学简易四则运算\n\n");
while(1){
printf("请选择:\n");
printf("\t\t\t? 加法运算(请输入1)\n");
printf("\t\t\t? 减法运算(请输入2)\n");
printf("\t\t\t? 乘法运算(请输入3)\n");
printf("\t\t\t? 除法运算(请输入4)\n");
printf("\t\t\t? 退出运算(请输入5)\n");
if(con==0)
scanf("%d",&choise);
switch(choise)
{
case 1:add();break;
case 2:minu();break;
case 3:mul();break;
case 4:di();break;
case 5:
return;
}
printf("\n\t\t\t继续运算?(请输入1)\n");
printf("\n\t\t\t重新选择?(请输入2)\n");
printf("\n\t\t\t退出运算?(请输入3)\n");
scanf("%d",&con);
if(con==1)
con=1;
else if(con==2)
con=0;
else if(con==3)
break;
else
printf("抱歉!,你输入的指令有误!请重新输入!\n");
}
printf("您总共完成了 %d 道题\n正确 %d 道\n错误 %d 道\n",right+wrong,right,wrong);
}
英语部分,很粗糙
#include <stdio.h>
void main()
{
char str[20]="App_e";
puts(str);
printf("\t\t\t 请输入你的答案: \n");
char c[1];
gets(c);
puts(c);
if(c[0]=='l')
printf("\t\t\t 答对啦! ");
else
printf("\t\t\t 答错啦! ");
}
最后和同学一起做的
#include <stdio.h>
#include <stdlib.h> /*标准库*/
#include <time.h>
int right=0; /*正确的题目数量*/
int wrong=0; /*错误的题目数量*/
int rand(); /*定义随机变量*/
void add() /*加法*/
{
srand((unsigned)time(NULL));
int random = rand();
int a,b,c; /*定义a,b,c三个数字*/
a=rand()%10;
b=rand()%10;
printf("请回答:\n\t\t %d + %d = ",a,b);
scanf("%d",&c); /*扫描输入答案*/
//判断对错
if(a+b==c){
printf("回答正确!\n");
right++;
}
else
{
printf("回答错误!\n");
wrong++;
}
}
void minu() /*减法*/
{
srand((unsigned)time(NULL));
int random = rand();
int a,b,c;
a=rand()%10;
b=rand()%10;
printf("请回答:\n\t\t %d - %d = ",a,b);
scanf("%d",&c);
if(a-b==c){
printf("回答正确!\n");
right++;
}
else
{
printf("回答错误!\n");
wrong++;
}
}
void mul() /*乘法*/
{
srand((unsigned)time(NULL));
int random = rand();
int a,b,c;
a=rand()%10;
b=rand()%10;
printf("请回答:\n\t\t %d * %d = ",a,b);
scanf("%d",&c);
if(a*b==c){
printf("回答正确!\n");
right++;
}
else
{
printf("回答错误!\n");
wrong++;
}
}
void di() /*除法*/
{
srand((unsigned)time(NULL));
int random = rand();
int a,b,c;
a=rand()%10;
b=rand()%10;
printf("请回答(结果保留整数):\n\t\t %d / %d = ",a,b);
scanf("%d",&c);
if(a/b==c){
printf("回答正确!\n");
right++;
}
else
{
printf("回答错误!\n");
wrong++;
}
}
void apple()
{
{ int c;
char tem[5], j[5];
char word[6] = { "apple" };
c = rand() % 4 + 1;
tem[1] = word[c];
word[c] = ' ';
printf("\t请回答:\n\t\t %s\n", word);
printf("\t空格内应该填:\n\t\t");
scanf("%s", &j[1]);
if (j[1] == tem[1])
{
printf("答对了");
right++;
}
else printf("答错了");
wrong++;
}
}
void smart()
{
{ int c;
char tem[5], j[5];
char word[6] = { "smart" };
c = rand() % 4 + 1;
tem[1] = word[c];
word[c] = ' ';
printf("\t请回答:\n\t\t %s\n", word);
printf("\t空格内应该填:\n\t\t");
scanf("%s", &j[1]);
if (j[1] == tem[1])
{
printf("答对了");
right++;
}
else printf("答错了");
wrong++;
}
}
void lucky()
{
{ int c;
char tem[5], j[5];
char word[6] = { "lucky" };
c = rand() % 4 + 1;
tem[1] = word[c];
word[c] = ' ';
printf("\t请回答:\n\t\t %s\n", word);
printf("\t空格内应该填:\n\t\t");
scanf("%s", &j[1]);
if (j[1] == tem[1])
{
printf("答对了");
right++;
}
else printf("答错了");
wrong++;
}
}
void ruler()
{
{ int c;
char tem[5], j[5];
char word[6] = { "ruler" };
c = rand() % 4 + 1;
tem[1] = word[c];
word[c] = ' ';
printf("\t请回答:\n\t\t %s\n", word);
printf("\t空格内应该填:\n\t\t");
scanf("%s", &j[1]);
if (j[1] == tem[1])
{
printf("答对了");
right++;
}
else printf("答错了");
wrong++;
}
}
void movie()
{
{ int c;
char tem[5], j[5];
char word[6] = { "movie" };
c = rand() % 4 + 1;
tem[1] = word[c];
word[c] = ' ';
printf("\t请回答:\n\t\t %s\n", word);
printf("\t空格内应该填:\n\t\t");
scanf("%s", &j[1]);
if (j[1] == tem[1])
{
printf("答对了");
right++;
}
else printf("答错了");
wrong++;
}
}
void smile()
{
{ int c;
char tem[5], j[5];
char word[6] = { "smile" };
c = rand() % 4 + 1;
tem[1] = word[c];
word[c] = ' ';
printf("\t请回答:\n\t\t %s\n", word);
printf("\t空格内应该填:\n\t\t");
scanf("%s", &j[1]);
if (j[1] == tem[1])
{
printf("答对了");
right++;
}
else printf("答错了");
wrong++;
}
}
void angel()
{
{ int c;
char tem[5], j[5];
char word[6] = { "angel" };
c = rand() % 4 + 1;
tem[1] = word[c];
word[c] = ' ';
printf("\t请回答:\n\t\t %s\n", word);
printf("\t空格内应该填:\n\t\t");
scanf("%s", &j[1]);
if (j[1] == tem[1])
{
printf("答对了");
right++;
}
else printf("答错了");
wrong++;
}
}
void English()
{
int i,continue_or=1;
int con = 0;
srand((unsigned)time(NULL));
void printstar();
printstar();
printf("\n\t\t\t欢迎进入小学简易英语拼写\n\n");
while (continue_or == 1)
{
i = rand() % 3 + 1;
switch (i)
{
case 1:apple(); break;
case 2:smart(); break;
case 3:lucky(); break;
case 4:ruler(); break;
case 5:movie(); break;
case 6:smile(); break;
case 7:angel(); break;
}
printf("\n\t\t\t继续拼写?(请输入1)\n");
printf("\n\t\t\t退出拼写?(请输入0)\n");
scanf("%d", &continue_or);
if (continue_or)
{
continue_or = 1;
}
else if (continue_or == 0)
{
break;
}
else
printf("抱歉!,你输入的指令有误!请重新输入!\n");
}
}
void Math()
{
void printstar();
printstar();
int choise;
int con=0;
printf("\n\t\t\t欢迎进入小学简易四则运算\n\n");
while(1){
void printstar();
printstar();
printf("\t\t\t*请选择: *\n");
printf("\t\t\t*加法运算(请输入1) *\n");
printf("\t\t\t*减法运算(请输入2) *\n");
printf("\t\t\t*乘法运算(请输入3) *\n");
printf("\t\t\t*除法运算(请输入4) *\n");
printf("\t\t\t*退出运算(请输入5) *\n");
void printstar();
printstar();
if(con==0)
scanf("%d",&choise);
switch(choise)
{
case 1:add();break;
case 2:minu();break;
case 3:mul();break;
case 4:di();break;
case 5:
return;
}
void printstar();
printstar();
printf("\n\t\t\t继续运算?(请输入1)\n");
printf("\n\t\t\t重新选择?(请输入2)\n");
printf("\n\t\t\t退出运算?(请输入3)\n\n");
void printstar();
printstar();
scanf("%d",&con);
if(con==1)
con=1;
else if(con==2)
con=0;
else if(con==3)
break;
else
printf("抱歉!,你输入的指令有误!请重新输入!\n");
}
printf("您总共完成了 %d 道题\n正确 %d 道\n错误 %d 道\n",right+wrong,right,wrong);
}
void main()
{
void printstar();
printstar();
int choise;
printf("\n\t\t\t 欢迎进入答题系统 \n\n");
while(1){
void printstar();
printstar();
printf("\t\t\t*请选择: *\n");
printf("\t\t\t*英语拼写(请输入1) *\n");
printf("\t\t\t*数学运算(请输入2) *\n");
void printstar();
printstar();
scanf("%d",&choise);
switch(choise)
{
case 1:English();break;
case 2:Math();break;
default:printf("输入错误!!!");
}
}
}
void printstar()
{
printf("\t\t\t*************************\n");
}
还是存在一些问题,例如减法出现负数,除法出现小数,并不符合题目需求。
还有随机数都是“假”,都是有规律的,普通的随机,能很快发现,有些随机则需要大量数据分析才能发现。