zoukankan      html  css  js  c++  java
  • 实验一四则运算

      1 #include<stdio.h>
      2 #include<stdlib.h>
      3 #include<time.h>
      4 #include<string.h>
      5 #include<math.h>
      6 #define N 100
      7 int fenshu(int a,int b,int a1,char ch[10],int m);
      8 typedef struct 
      9 {
     10     float A[N],B[N];
     11     int ch[N];
     12     int top;
     13 }stack;
     14 void main()
     15 {
     16     int n=5,a1,m=0,x,ret,j=0;
     17     float sum=0,a=2,b=1,c;
     18     char ch[10];
     19     stack S;
     20     S.top=-1;
     21     S.A[-1]=-1;
     22     S.B[-1]=-1;
     23     S.ch[-1]=-1;
     24     printf("请输入题目的个数:");
     25     ret=scanf("%d",&n);
     26     getchar();
     27     while(ret==0)
     28         {
     29                 printf("请重新输入:");
     30                 ret=scanf("%d",&n);
     31                    getchar();
     32         }
     33     x=n;
     34     while(n>0)
     35     {
     36         srand(time(NULL));
     37              a=rand()%49+1;
     38             b=rand()%49+1;
     39              a1=rand()%6+42;
     40             while(a1==44||a1==46)
     41             {
     42                 a1=rand()%6+42;}
     43         while(S.A[S.top]==a&&S.B[S.top]==b&&S.ch[S.top]==a1)
     44         {
     45             srand(time(NULL));
     46              a=rand()%49+1;
     47             b=rand()%49+1;
     48              a1=47rand()%6+42;
     49             while(a1==44||a1==46)
     50             {
     51                 a1=rand()%6+42;}
     52         }
     53             S.top++;
     54             S.A[S.top] =a;
     55             S.B[S.top]=b;
     56             S.ch[S.top]=a1;
     57         if(a1!=47)
     58         {printf("%.0f%c%.0f=",a,a1,b);
     59             ret=scanf("%f",&c);
     60             while(ret==0)
     61             {
     62                 printf("请重新输入:");
     63                 getchar();
     64                 ret=scanf("%f",&c);
     65                 getchar();
     66             }
     67         }
     68         else
     69         {
     70             if(S.ch[S.top-1]!=47)
     71                 if(S.top==-1)
     72                      getchar();
     73         printf("%.0f%c%.0f=",a,a1,b);
     74             gets(ch);
     75         }
     76         switch(a1){
     77         case 42:
     78             sum=a*b;break;
     79         case 43:
     80             sum=a+b;break;
     81          case 45:
     82             sum=a-b;
     83              break;
     84         case 47:
     85             sum=a/b;
     86             break;
     87         }
     88         if(a1!=47)
     89         {
     90         if(c==sum)
     91         {
     92                 printf("√%.0f\n",sum);
     93                 m++;
     94             }
     95             else
     96                 printf("×%.0f\n",sum); 
     97         }
     98         else
     99         {
    100             m=fenshu(a,b,a1,ch,m);
    101         }
    102         n--;
    103     }
    104      printf("你总共:\n");
    105     printf("√%d\n",m);
    106     printf("×%d\n",x-m);
    107 }
    108 int fenshu(int a,int b,int a1,char ch[10],int m)
    109 {
    110     int i,k=0;
    111     int sz1=0,sz2=0;
    112     i=b<a?b:a;
    113         for(;i>1;i--)
    114         {
    115             if(a%i==0&&b%i==0)
    116             {
    117                 a=a/i;
    118                 b=b/i;
    119             }
    120         }
    121         if(a!=b&&b!=1)
    122         {
    123         for(i=strlen(ch)-1;i>=0;i--)
    124         {
    125             if(ch[i]=='/')
    126                 {
    127                     k=0;
    128                     sz2=sz1;
    129                     sz1=0;
    130                 }
    131             while(ch[i]>'9'||ch[i]<'0'&&ch[i]!='/'&&ch[i]!=' ')
    132             {    
    133                      printf("输入有误!请重新输入:");
    134                          getchar();
    135                      gets(ch);
    136             }
    137             if(ch[i]<'9'||ch[i]>'0'||ch[i]=='/'||ch[i]==' ')
    138             {
    139                 if(ch[i]!='/'&&ch[i]!=' ')
    140                 {
    141                     sz1=sz1+(ch[i]-'0')*pow(10,k);
    142                     k++;
    143                 }
    144             }
    145         }
    146         }
    147         else
    148         {
    149              if(a==b)
    150                 sz1=sz2=1;
    151                else
    152             {
    153                  sz1=a;
    154                 sz2=1;
    155             }
    156         }
    157         sz1==a&&sz2==b?printf(""),m++:printf("×");//,
    158         if(abs(b)==1)
    159             printf("%d\n",a/b);
    160         else
    161         {
    162             if(a>b) 
    163                 printf("%d又%d/%d\n",a/b,a%b,b);
    164              else
    165                 printf("%d/%d\n",a,b);    
    166         }
    167         return m;
    168 }

    虽然花费了很长的时间完成的,但是我个人认为在容错方面有点小缺陷,其他的暂时还没发现。最后我发现做小程序容易,想要完美却不易。

  • 相关阅读:
    集合
    3/11
    字典
    3/10
    字符串之不常用方法
    字符串的索引和切片
    数据类型的转化
    Markdown在线编辑器
    3/9
    Django:RestFramework之-------渲染器
  • 原文地址:https://www.cnblogs.com/shishaotao/p/4376414.html
Copyright © 2011-2022 走看看