要求:
没想到这年头还有人用vc6.0,10几年前的软件,都不更新。。。
devc++中.cpp成功运行,改成.c文件开头就报错,我根本就没用c++的语法。
把注释都删了就可以运行(不知道为啥)
同学的报错是这样的:
然后我就知道是版本的原因啦
我之前devc++弄了一个这个(打脸拉跨)
.c/.cpp流畅运行
程序代码:
#include<stdio.h>
#include <windows.h>//system
#include<stdlib.h> //srand()
#include <time.h>
//专门用来接收用户输入的全局变量
int g_select = 0;
//设置的位数
int digit=0;
//设置的题数
int question_number=0;
//设置的总分
int total_point=0;
//练习数量
int practice_number=0;
//姓名
char name[20];
//欢迎
void welcome();
//处理欢迎界面之后的操作
void welcome_proc();
void practice();
void test();
void set();
void check();
void quit();
//用户登录界面
int main()
{
welcome();
while (1);
return 0;
}
//欢迎
void welcome(){
system("cls");//清除屏幕 windows.h system
printf("************************************************\n");
printf("*\t\t算术练习系统\t\t *\n");
printf("************************************************\n");
printf("*\t\t请选择功能列表\t\t *\n");
printf("************************************************\n");
printf("*\t\t1.练习\t\t\t *\n");
printf("*\t\t2.测试 \t\t\t *\n");
printf("*\t\t3.设置\t\t\t *\n");
printf("*\t\t4.查看测试成绩\t\t *\n");
printf("*\t\t0.退出\t\t\t *\n");
printf("************************************************\n");
welcome_proc();
}
//处理欢迎界面之后的操作
void welcome_proc(){
scanf("%d", &g_select);
switch (g_select)
{
case 1:practice(); break;
case 2:test(); break;
case 3:set(); break;
case 4:check(); break;
/*case 0:quit();break;*/
default:welcome();break;
}
}
//练习
void practice(){
system("cls");
printf("请输入练习次数");
scanf("%d",&practice_number);
int x,y,z,t;
srand(time(NULL));//随机数种子
int result=0;
int key=0;
int right=0;
int rate=0;
for(int i=0;i<practice_number;i++) //练习次数
{
if(digit==1)
{
x=rand()%10;
y=rand()%10;
}
if(digit==2)
{
x=rand()%100;
y=rand()%100;
}
if(digit==3)
{
x=rand()%1000;
y=rand()%1000;
}
z=rand()%4;
switch(z)
{
case 0:
printf("%d+%d=",x,y);
result=x+y; break;
case 1:
if(x<y)
{
int t=x;
x=y;
y=t;
}
printf("%d-%d=",x,y);
result=x-y; break;
case 2:
printf("%d*%d=",x,y);
result=x*y; break;
case 3:
printf("%d/%d=",x,y);
result=x/y; break;
}
scanf("%d",&key);
if(result==key)
{
right++; //正确数量
rate=(right*1.0/(i+1))*100;
printf("答案正确 正确结果:%d 总答题数:%d 正确答题数:%d 答题正确率:%d%%\n",result,i+1,right,rate);
}
else
{
rate=(right*1.0/(i+1))*100;
printf("答案错误 正确结果:%d 总答题数:%d 正确答题数:%d 答题正确率:%d%%\n",result,i+1,right,rate);
}
}
printf("退出请输入0\n");
while(1)
{
scanf("%d", &g_select);
if(g_select==0)
welcome();
}
}
//设置
void set(){
printf("请输入计算数据的位数(1-3位)");
scanf("%d",&digit);
printf("请输入测试模式题数");
scanf("%d",&question_number);
printf("请输入测试模式总分");
scanf("%d",&total_point);
printf("退出请输入0\n");
while(1)
{
scanf("%d", &g_select);
if(g_select==0)
welcome();
}
}
//测试
void test(){
system("cls");
FILE *fp;
fp=fopen("测试成绩.txt","a"); //以追加的方式打开
if(fp==NULL)
printf("测试成绩.txt不能打开");
printf("*\t\t欢迎参加考试\t\t *\n");
printf("请输入你的名字");
scanf("%s",name);
fprintf(fp,"姓名:%s\n",name);
printf("考试开始\n");
int x,y,z,t;
srand(time(NULL)); //随机数种子
int result=0;
int key=0;
int right=0;
int rate=0;
int a[question_number];
for(int i=0;i<question_number;i++) //测试数量
{
if(digit==1)
{
x=rand()%10;
y=rand()%10;
}
if(digit==2)
{
x=rand()%90+10;
y=rand()%90+10;
}
if(digit==3)
{
x=rand()%900+100;
y=rand()%900+100;
}
z=rand()%4;
switch(z)
{
case 0:
printf("%d+%d=",x,y);
result=x+y;
fprintf(fp,"题目%d:%d+%d=",i+1,x,y); break;
case 1:
if(x<y)
{
int t=x;
x=y;
y=t;
}
printf("%d-%d=",x,y);
result=x-y;
fprintf(fp,"题目%d:%d-%d=",i+1,x,y); break;
case 2:
printf("%d*%d=",x,y);
result=x*y;
fprintf(fp,"题目%d:%d*%d=",i+1,x,y); break;
case 3:
printf("%d/%d=",x,y);
result=x/y;
fprintf(fp,"题目%d:%d/%d=",i+1,x,y); break;
}
scanf("%d",&key);
fprintf(fp,"%d",key);
fprintf(fp,"\t答案是%d\n",result);
a[i]=result;
if(result==key)
right++; //正确数量 答对则加1
}
fprintf(fp,"总的题数是%d",question_number);
fprintf(fp,"\t答对%d道\t",right);
fprintf(fp,"答错%d道\n",question_number-right);
int grade=(right*1.0/question_number)*total_point;
fprintf(fp,"本次测试成绩为%d分\n\n",grade);
fclose(fp);
printf("\n");
for(int i=0;i<question_number;i++)
printf("第%d题答案为%d\n",i+1,a[i]);
printf("总的题数是%d",question_number);
printf("你答对%d道\答错%d道\n",right,question_number-right);
printf("\n你的测试成绩为%d分\n\n",grade);
printf("退出请输入0\n");
while(1)
{
scanf("%d", &g_select);
if(g_select==0)
welcome();
}
}
//查看成绩
void check(){
system("cls");
printf("*\t\t算术测验成绩表\t\t *\n");
FILE *fp1;
fp1=fopen("测试成绩.txt","r"); //以追加的方式打开
if(fp1==NULL)
printf("测试成绩.txt不能打开");
char ch;
ch=fgetc(fp1);
while(ch!=EOF){
putchar(ch);
ch=fgetc(fp1);
}
fclose(fp1);
printf("退出请输入0\n");
while(1)
{
scanf("%d", &g_select);
if(g_select==0)
welcome();
}
}
vc6.0版
vc6.0变量的定义必须在开头,不能在中间。FILE *pf只能在开头。
不能int a[n],我用的是指针申请a=(int *)malloc(sizeof(int)*question_number);由于要求纯c版此处采用malloc,没有用new。
fopen("C:\\Users\\27955\\Desktop\\测试成绩.txt","r");//绝对位置桌面,要根据自己电脑修改。
fopen("测试成绩.txt","r");//相对位置在自己建的工程文件下
程序代码:
#include<stdio.h>
#include <windows.h>//system
#include<stdlib.h> //srand()
#include <time.h>
int g_select = 0;
int digit=0;
int question_number=0;
int total_point=0;
int practice_number=0;
char name[20];
void welcome();
void welcome_proc();
void practice();
void test();
void set();
void check();
void quit();
int main()
{
welcome();
while (1);
return 0;
}
void welcome(){
system("cls");
printf("************************************************\n");
printf("*\t\t算术练习系统\t\t *\n");
printf("************************************************\n");
printf("*\t\t请选择功能列表\t\t *\n");
printf("************************************************\n");
printf("*\t\t1.练习\t\t\t *\n");
printf("*\t\t2.测试 \t\t\t *\n");
printf("*\t\t3.设置\t\t\t *\n");
printf("*\t\t4.查看测试成绩\t\t *\n");
printf("*\t\t0.退出\t\t\t *\n");
printf("************************************************\n");
welcome_proc();
}
void welcome_proc(){
scanf("%d", &g_select);
switch (g_select)
{
case 1:practice(); break;
case 2:test(); break;
case 3:set(); break;
case 4:check(); break;
case 0:exit(-1);break;
default:welcome();break;
}
}
void practice(){
int x;
int y;
int z;
int t;
int result=0;
int key=0;
int right=0;
int rate=0;
int i;
system("cls");
printf("请输入练习次数");
scanf("%d",&practice_number);
srand(time(NULL));
for(i=0;i<practice_number;i++)
{
if(digit==1)
{
x=rand()%10;
y=rand()%10;
}
if(digit==2)
{
x=rand()%100;
y=rand()%100;
}
if(digit==3)
{
x=rand()%1000;
y=rand()%1000;
}
z=rand()%4;
switch(z)
{
case 0:
printf("%d+%d=",x,y);
result=x+y; break;
case 1:
if(x<y)
{
t=x;
x=y;
y=t;
}
printf("%d-%d=",x,y);
result=x-y; break;
case 2:
printf("%d*%d=",x,y);
result=x*y; break;
case 3:
printf("%d/%d=",x,y);
result=x/y; break;
}
scanf("%d",&key);
if(result==key)
{
right++;
rate=(int)((right*1.0/(i+1))*100);
printf("答案正确 正确结果:%d 总答题数:%d 正确答题数:%d 答题正确率:%d%%\n",result,i+1,right,rate);
}
else
{
rate=(int)((right*1.0/(i+1))*100);
printf("答案错误 正确结果:%d 总答题数:%d 正确答题数:%d 答题正确率:%d%%\n",result,i+1,right,rate);
}
}
printf("退出请输入0\n");
while(1)
{
scanf("%d", &g_select);
if(g_select==0)
welcome();
}
}
void set(){
printf("请输入计算数据的位数(1-3位)");
scanf("%d",&digit);
printf("请输入测试模式题数");
scanf("%d",&question_number);
printf("请输入测试模式总分");
scanf("%d",&total_point);
printf("退出请输入0\n");
while(1)
{
scanf("%d", &g_select);
if(g_select==0)
welcome();
}
}
void test(){
FILE *fp;
int x,y,z,t;
int result=0;
int key=0;
int right=0;
int rate=0;
int *a;
int i;
int j;
int grade;
a=(int *)malloc(sizeof(int)*question_number);
system("cls");
fp=fopen("C:\\Users\\27955\\Desktop\\测试成绩.txt","a");
if(fp==NULL)
printf("测试成绩.txt不能打开");
printf("*\t\t欢迎参加考试\t\t *\n");
printf("请输入你的名字");
scanf("%s",name);
fprintf(fp,"姓名:%s\n",name);
printf("考试开始\n");
srand(time(NULL));
for(i=0;i<question_number;i++)
{
if(digit==1)
{
x=rand()%10;
y=rand()%10;
}
if(digit==2)
{
x=rand()%90+10;
y=rand()%90+10;
}
if(digit==3)
{
x=rand()%900+100;
y=rand()%900+100;
}
z=rand()%4;
switch(z)
{
case 0:
printf("%d+%d=",x,y);
result=x+y;
fprintf(fp,"题目%d:%d+%d=",i+1,x,y); break;
case 1:
if(x<y)
{
t=x;
x=y;
y=t;
}
printf("%d-%d=",x,y);
result=x-y;
fprintf(fp,"题目%d:%d-%d=",i+1,x,y); break;
case 2:
printf("%d*%d=",x,y);
result=x*y;
fprintf(fp,"题目%d:%d*%d=",i+1,x,y); break;
case 3:
printf("%d/%d=",x,y);
result=x/y;
fprintf(fp,"题目%d:%d/%d=",i+1,x,y); break;
}
scanf("%d",&key);
fprintf(fp,"%d",key);
fprintf(fp,"\t答案是%d\n",result);
a[i]=result;
if(result==key)
right++;
}
fprintf(fp,"总的题数是%d",question_number);
fprintf(fp,"\t答对%d道\t",right);
fprintf(fp,"答错%d道\n",question_number-right);
grade=(int)((right*1.0/question_number)*total_point);
fprintf(fp,"本次测试成绩为%d分\n\n",grade);
fclose(fp);
printf("\n");
for(j=0;j<question_number;j++)
printf("第%d题答案为%d\n",j+1,a[j]);
printf("总的题数是%d",question_number);
printf("你答对%d道答错%d道\n",right,question_number-right);
printf("\n你的测试成绩为%d分\n\n",grade);
printf("退出请输入0\n");
while(1)
{
scanf("%d", &g_select);
if(g_select==0)
welcome();
}
}
void check(){
FILE *fp1;
char ch;
system("cls");
printf("*\t\t算术测验成绩表\t\t *\n");
fp1=fopen("C:\\Users\\27955\\Desktop\\测试成绩.txt","r");
if(fp1==NULL)
printf("测试成绩.txt不能打开");
ch=fgetc(fp1);
while(ch!=EOF){
putchar(ch);
ch=fgetc(fp1);
}
fclose(fp1);
printf("退出请输入0\n");
while(1)
{
scanf("%d", &g_select);
if(g_select==0)
welcome();
}
}