c语言,求一个类似小学竖式计算方法的四则运算的计算器程序,运用字符串一位一位的计算

如题所述

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<string.h>
int scan()
{
char s[100];
int i,t,z=0;
do
{
z=0;

gets(s);
for(i=0;s[i]!='\0';i++)
if(s[i]<'0' || s[i]>'9') break;
if(i>=strlen(s))
for(t=0;s[t]!='\0';t++)
z=z*10+((int)s[t]-48);
else
printf("您的输入有误,请重新输入");
}
while(i<strlen(s));
return(z);
}

int x=1,y=1,choice=0,sum=0,right=0,z=0,answer;
float precent;
char fuhao;
void suiji()
{
srand(time(NULL));
x=rand()%100+1;
y=rand()%100+1;
}

void choose()
{
int yunsuan(int,int,int);
if(sum==0) precent=0.0;
else precent=(float)right/sum;
printf("\n如需进行加减乘除运算测试,请分别输入1、2、3、4\n");
printf("如需退出请输入5\n");
choice=scan();
switch(choice)
{
case 1:printf("欢迎来到加法运算测试系统,如需退出请输入9999\n");fuhao='+';break;
case 2:printf("欢迎来到减法运算测试系统,如需退出请输入9999\n");fuhao='-';break;
case 3:printf("欢迎来到乘法运算测试系统,如需退出请输入9999\n");fuhao='*';break;
case 4:printf("欢迎来到除法运算测试系统,如需退出请输入9999\n");fuhao='/';break;
case 5:printf("本次测试愉快,欢迎下次再来测试\n");
printf("本次共做%d道题,其中%d道正确,正确率为%f\n",sum,right,precent);
break;
default:printf("您的输入有误,请重新输入\n");choose();
}
}

int ans(int x,int y,int choice)
{
switch(choice)
{
case 1:z=x+y;break;
case 2:z=x-y;break;
case 3:z=x*y;break;
case 4:z=x/y;break;
}
return( z);
}
void yunsuan()
{
suiji();
printf("%d%c%d=",x,fuhao,y);
z=ans(x,y,choice);
answer=scan();
if(z==answer)
{
printf("正确\n");
right++;sum++;
yunsuan();
}
else if(answer==9999) choose();
else
{
printf("不正确, 正确答案为%5d\n",z);
sum++;
yunsuan();
}
}
void main()
{
printf("欢迎来到四则运算测试系统\n");
choose();
while(choice!=5)
yunsuan();
}追问

你这个不是用那个竖式计算的方法吧

追答

竖式运算?这个就是四则运算啊

追问

我想使用的是类似竖式计算的方法计算,就是一位一位的计算,把每一位分别计算所以得把输入的数分解成几个数排成的

追答

加减可以…乘除怎么弄

那快成开发新软件了…谁在这给你啊

追问

我只知道怎么算,不知道怎么编。

追答

你没事弄这个程序?你悬赏200估计还有人…程序太麻烦

追问

程序不是太难怎么,主要是那种想法弄明白就好了

温馨提示:答案为网友推荐,仅供参考
相似回答