c語言小學生測驗
『壹』 利用c語言編寫一個簡單的小學生測驗系統,功能要求如下。
#include "stdio.h"
#include "iostream"
#include "windows.h"
#define MAX 1000
char problems[MAX][100];
int answers[MAX];
bool flag[MAX] = {false};
int score;
int n;
void init()
{
score = 0;
FILE *fp = fopen("D:\\題庫.txt","r");//這里修改路徑
fscanf(fp,"%d",&n);
for(int i = 0;i < n;i++)
fscanf(fp,"%s%d",problems[i],&answers[i]);
fclose(fp);
}
void solve(int i,int k)
{
int ans = 0;
printf("第%d題(現在總分是%d分):\n",i,score);
for(int j = 0;j < 3;j++)
{
printf("%s=",problems[k]);
scanf("%d",&ans);
if(ans == answers[k])
{
if(j == 0)
score += 10;
else if(j == 1)
score += 7;
else
score += 5;
if(i != 10)
printf("正確!,下一題......\n");
return;
}
printf("- -,錯誤......\n");
}
}
void start()
{
int count = 0,t;
while(count != 10)
{
t = rand()%n;
if(flag[t])
continue;
flag[t] = true;
solve(count+1,t);
count++;
}
if(score < 60)
printf("TRY AGAIN\n");
else if(score < 70)
printf("PASS\n");
else if(score < 80)
printf("OK\n");
else if(score < 90)
printf("GOOD\n");
else
printf("SMART\n");
}
int main()
{
srand(GetTickCount());
init();
start();
system("pause");
}
題庫.txt
11
1+2 3
1+3 4
1+4 5
1+5 6
7-1 6
7-2 5
7-3 4
11-3 8
11-4 7
11-5 6
11-6 5
『貳』 C語言程序設計:小學生測驗
#include<stdlib.h>
#include<stdio.h>
#include<conio.h>
void main()
{
int num=0,err=0; /* 答題數,錯誤數 */
while(1)
{
int a=0,b=0,d=0,c=0,i=0,result;
char sf[2]={'+','-'};
/* 出題 */
while(1)
{
a=rand()%51;
b=rand()%51;
d=rand()%2;
if(d==0)c=a+b;
else c=a-b;
if(c>=0 && c<=50)break;
}
printf("%d %c %d = \n",a,sf[d],b);
/* 回答 */
printf("輸入計算結果:\n");
while(1)
{
scanf("%d",&result);
i++;
if(result==c)
{
printf("回答正確!\n");
break;
}
else if(i<3)
{
printf("錯誤,請重新回答:\n");
}
else
{
err++;
break;
}
}
num++;
if(num==10)break;
}
printf("\n得分:%d 正確率:%d%\n",100-err*10,100-err*10);
getch();
}
『叄』 用C語言實現一個小學生口算及自測系統,實現自動出題,根據答題情況評分並記載入檔案,並能根據成績進行排
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
//產生 [a,b] 區間的隨機數
#define RANDOM(a,b) (rand()%((b+1)-(a)) + (a))
//產生 1-20 的整數,如要改變算術范圍,則修改這個宏的參數即可
#define GEN_VALUE() RANDOM(1, 20)
int main()
{
int v1, v2, t, r, a;
char op, ops[] = { '+', '-', '*', '/' };
srand( (unsigned)time(NULL) ); //用當前時間初始化隨機數種子
printf( "請答題 Ctrl+C 結束... " );
while(1)
{
v1 = GEN_VALUE(); //隨機生成第1個算數
v2 = GEN_VALUE(); //隨機生成第2個算數
op = ops[ RANDOM(0,3) ]; //隨機決定是哪個運算符
//保證第1個算數大於第2個算數,如不需要,則把這個判斷刪除即可
if( v1<v2 )
{
t = v1;
v1 = v2;
v2 = t;
}
//如果運算符為除法,且v1不能被v2整除則重新生成題目
if( op=='/' && v1%v2!=0 )
continue;
//計算正確的結果
switch(op)
{
case '+': a=(float)v1+(float)v2; break;
case '-': a=(float)v1-(float)v2; break;
case '*': a=(float)v1*(float)v2; break;
case '/': a=(float)v1/(float)v2; break;
}
//輸出算式
printf( "%d%c%d=", v1, op, v2 );
//等待輸入結果
scanf( "%d", &r );
if( r == a )
printf( " 答對嘍! " );
else
printf( " 答錯嘍!正確答案是:%d ", a );
}
}
『肆』 急求:用C語言編寫小學生數學測試軟體
//vc 6.0調試通過
#include<stdio.h>
#include<stdlib.h>
#include <time.h>
int add(int x,int y)
{return x+y;}
int sub(int x,int y)
{return x-y;}
int mul(int x,int y)
{return x*y;}
void fun(char f)
{
int n,x,y,z,t,result,sum=0;
srand((unsigned)time(NULL));
printf("請選擇答題的個數:\n");
scanf("%d",&n);
for(int i=0;i<n;i++)
{
x=rand()%10;
y=rand()%10;
if(x<y && f=='-')
{t=x;x=y;y=t;}
if(f=='*')
{while(!x){x=rand()%10;}
while(!y){y=rand()%10;}}
printf("%d %c %d =",x,f,y);
scanf("%d",&z);
switch(f)
{
case '+':
result=add(x,y);break;
case '-':
result=sub(x,y);break;
case '*':
result=mul(x,y);break;
}
if(result==z)
{printf("正確!\n");sum++;}
else
printf("錯誤!應該是%d\n",result);
}
printf("\n正確率為%f%%\n/////////////////////////////////\n\n",100.0*sum/n);
fflush(stdin);
}
void main()
{
printf("/////////////////////////////////\n");
printf(" 小學生數學測試軟體\n");
printf("//////////////////////////////////\n\n");
char ch;
while(1)
{
printf("請選擇題型--加(+),減(-),乘(*),退出(0): ");
ch=getchar();
if(ch=='+'||ch=='-'||ch=='*')
fun(ch);
else if(ch=='0')
exit(0);
else
printf("錯誤!\n");
}
}