怎么样让除法的结果为小数而不是整数,求大神指点修改~

(1)任意生成10道题,每道题有两个运算数,且都在1到100间。

(2)在所抽选的题目中,每次都会需要不相同的函数的加减乘除,计算机随机抽取其中的运算符,进行计算。

(3)每次的输入都必须要指出正确的结果,并且要准确判断所输入结果的正确性,可以迅速打分。

(4)设计的分数为100,所以,在这个程序中,要有十个函数要输出,十个答案需要学生输入,每道题设计分数为10分,即对一道题就加10分,不正确的就不加分。

#include#include#define N 10

#define M 100

void main()

{ inta[N],c[N],m[N],p[N],ljx[M],lh[M],i,j,k,h,sco=0;

char b[N],n[]={'+','-','*','/'};

ljx[0]=1;lh[0]=1;

for(i=1;i<M;i++) //对数组ljx[100]和lh[100]赋值

{ ljx[i]=ljx[i-1]+1;

lh[i]=lh[i-1]+1;

}

for(i=0;i<N;i++)

{ j=rand()%4; //从0~3中随机取一个数赋值给j

k=rand()%M; //从0~99中随机取一个数赋值给k

h=rand()%M; //从0~99中随机取一个数赋值给h

a[i]=ljx[k];

b[i]=n[j];

c[i]=lh[h];

switch(b[i])

{

case '+': p[i]=a[i]+c[i];break;

case '-': p[i]=a[i]-c[i];break;

case '*': p[i]=a[i]*c[i];break;

case '/': p[i]=a[i]/c[i];break;

}

printf("%d%c%d",a[i],b[i],c[i]); //输出题目

printf("\n");

printf("请直接输入计算结果(输完按enter键):"); //提示输答案

scanf("%d",&m[i]);

if(m[i]==p[i]) sco=sco+10;

}

printf("\n恭喜你得了:%d分\n\n",sco);

for(i=0;i<N;i++)

{ printf("原题:%d%c%d",a[i],b[i],c[i]); //输出原题

printf(" 你的答案:%d",m[i]); //输出用户答案

printf(" 正确答案:%d\n\n",p[i]); //输出正确答案

}

}

第1个回答  2013-06-26
#include#include#define N 10

#define M 100

void main()

{ float a[N],c[N],m[N],p[N],ljx[M],lh[M],i,j,k,h,sco=0;

char b[N],n[]={'+','-','*','/'};

ljx[0]=1;lh[0]=1;

for(i=1;i<M;i++) //对数组ljx[100]和lh[100]赋值

{ ljx[i]=ljx[i-1]+1;

lh[i]=lh[i-1]+1;

}

for(i=0;i<N;i++)

{ j=rand()%4; //从0~3中随机取一个数赋值给j

k=rand()%M; //从0~99中随机取一个数赋值给k

h=rand()%M; //从0~99中随机取一个数赋值给h

a[i]=ljx[k];

b[i]=n[j];

c[i]=lh[h];

switch(b[i])

{

case '+': p[i]=a[i]+c[i];break;

case '-': p[i]=a[i]-c[i];break;

case '*': p[i]=a[i]*c[i];break;

case '/': p[i]=a[i]/c[i];break;

}

printf("%.1f%c%.1f",a[i],b[i],c[i]); //输出题目

printf("\n");

printf("请直接输入计算结果(输完按enter键):"); //提示输答案

scanf("%.1f",&m[i]);

if(m[i]==p[i]) sco=sco+10;

}

printf("\n恭喜你得了:%.1f分\n\n",sco);

for(i=0;i<N;i++)

{ printf("原题:%.1f%c%.1f",a[i],b[i],c[i]); //输出原题

printf(" 你的答案:%.1f",m[i]); //输出用户答案

printf(" 正确答案:%.1f\n\n",p[i]); //输出正确答案

}

}追问

有一个错误啊,运行不了。

追答#include<stdio.h>
#define N 10
#define M 100
void main()

  float a[N],c[N],m[N],p[N],ljx[M],lh[M];
  int i,j,k,h,sco=0;
  char b[N],n[]={'+','-','*','/'};
  ljx[0]=1.0;lh[0]=1.0;
  for(i=1;i<M;i++)         
  {  ljx[i]=ljx[i-1]+1;
      lh[i]=lh[i-1]+1;
  }   for(i=0;i<N;i++)
  { 
j=rand()%4;           
     k=rand()%M;         
     h=rand()%M;         
     a[i]=ljx[k];
     b[i]=n[j];
     c[i]=lh[h];
       switch(b[i])
       { 
        case '+': p[i]=a[i]+c[i];break;
        case '-': p[i]=a[i]-c[i];break;
        case '*': p[i]=a[i]*c[i];break;
        case '/': p[i]=a[i]/c[i];break;
       }
  printf("%.1f%c%.1f",a[i],b[i],c[i]);      
   printf("\n");
   printf("请直接输入计算结果(输完按enter键):"); //提示输答案
   fflush(stdin);
   scanf("%.1f",&m[i]);
   fflush(stdin);
   if(m[i]==p[i])  
sco=sco+10;
   }
    printf("\n恭喜你得了:%.1f分\n\n",sco);
    for(i=0;i<N;i++)
       {  printf("原题:%.1f%c%.1f",a[i],b[i],c[i]); 
              printf("       你的答案:%.1f",m[i]);  
              printf("       正确答案:%.1f\n\n",p[i]); 
       }
}

追问

运行不了。

追答

#include
#include //加上这个头文件

第2个回答  2013-06-26
可以用强制类型转换把除数或者被除数转换成float浮点型,并把除法的结果赋给一个float变量:
int a, b;
float f;
a = 1;
b = 2;
f = (float) a / b;追问

我想问一下,在哪里加哦?你能不能把完整的,修改后的代码发给我哟。

第3个回答  2013-06-26
分送我吧 SAGE.本回答被提问者采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网