c语言问题!!!!急!!!

任务说明:
3-4-1、小学生四则运算1(选做题1:sy3-4-1.c) :
让计算机给小学生随机出 10 道 10 以内的四则运算题。程序运行结果如下所示:

2-2=0↙

3+3=6↙

10+6=16↙

10-7=3↙

0+10=10↙

2+0=0↙

6+9=15↙

1*2=2↙

4/2=2↙

10+6=16↙

其中表达式是计算机产生的,答案是用户输入的。蓝色字体显示的为计算机运行时产生的提示信息,红色字体为用户通过键盘输入的数据。

[ 友情提示: ]

① 操作数 1 和操作数 2 是计算机随机产生的 0~10 之间的整数, 注意 除法运算要考虑除数不能为 0 且被除数一定要能够整除除数,减法运算差应>= 0 。

② 运算符为计算机产生的 1~4 之间的随机数,规定 1 为 加法 运算, 2 为 减法 运算, 3 为 乘法 运算, 4 为 除法 运算。

③ 在循环体内设置一个计数器 count 。循环条件: while( count < 10 )

④ 用到的相关函数和头文件:

rand 、 time (NULL) 、 srand ( time ( NULL ) ) 、stdlib.h 、 time.h

且srand ( time ( NULL ) ) 要放在循环体外

3-4-2、小学生四则运算2(选做题2:sy3-4-2.c)

如果将以上题目修改成:答案正确提示 right !否则提示 error !程序又将作何修改?

#include<stdio.h>

#include<stdlib.h>

#include<time.h>

void main(void)

{

    int count=0;    //计数器

 int num1,num2; //操作数1和操作数2

 int oper;      //运算符

 int ans;     //输入的答案

 srand( (unsigned)time( NULL ) );

 while(count<10)

 {

  num1=(int)(10*rand()/(RAND_MAX+1.0));       //0-10之间的随机数

  num2=(int)(10*rand()/(RAND_MAX+1.0));       //0-10之间的随机数

  oper=(int)((3*rand()/(RAND_MAX+1.0))+1);    //1-4之间的随机数

  switch(oper)

  {

  case 1:

   {

    printf("%d+%d=",num1,num2);

    scanf("%d",&ans);        //键盘输入结果ans

    if(ans==(num1+num2))      //判断结果正确性

     printf("right !\n");

    else

     printf("error!\n");

    break;

   }

  case 2:

   {

    while(num1-num2<0)     //若差小于0,重新生成num1和num2

    {

     num1=(int)(10*rand()/(RAND_MAX+1.0));       //0-10之间的随机数

     num2=(int)(10*rand()/(RAND_MAX+1.0));       //0-10之间的随机数

    }

    printf("%d-%d=",num1,num2);

    scanf("%d",&ans);   //键盘输入结果ans

    if(ans==(num1-num2)) //判断结果正确性

     printf("right !\n");

    else

     printf("error!\n");

    break;

   }

  case 3:

   {

    printf("%d*%d=",num1,num2);

    scanf("%d",&ans);    //键盘输入结果ans

    if(ans==(num1*num2))  //判断结果正确性

     printf("right !\n");

    else

     printf("error!\n");

    break;

   }

  case 4:

   {

    while((num2==0)||(num1%num2!=0))     //若除数为 0 或者除数不能够整除除数,重新生成num1和num2

    {

     num1=(int)(10*rand()/(RAND_MAX+1.0));       //0-10之间的随机数

     num2=(int)(10*rand()/(RAND_MAX+1.0));       //0-10之间的随机数

    }

    printf("%d*%d=",num1,num2);

    scanf("%d",&ans);     //键盘输入结果ans

    if(ans==(num1/num2))   //判断结果正确性

     printf("right !\n");

    else

     printf("error!\n");

    break;

   }

  }

  count++;

 }

}

上面是具体的程序,有注释,经验证,没问题~

温馨提示:内容为网友见解,仅供参考
第1个回答  2010-09-25
/*生成计算题*/

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
int a,b,i,x;
char c;
FILE *fp;
srand(time(NULL));
if ((fp=fopen("a.txt","a"))== NULL) {
printf("Can't open ....");
exit(EXIT_FAILURE);
}

for (i=0;i<10;i++){
a=rand()%11;
b=rand()%11;
x=rand()%4;
while (x==3 && b==0)
b=rand()%11;
while (x==3 && a%b!=0) {
a=rand()%11;
b=rand()%11;
}
while (x==1 && (a-b)<0) {
a=rand()%11;
b=rand()%11;
}
switch (x) {
case 0:
c='+';
break;
case 1:
c='-';
break;
case 2:
c='*';
break;
case 3:
c='/';
break;
default:
c='+';
break;
}
fprintf(fp,"%d %c %d = \n",a,c,b);
}

fclose(fp);

fprintf(fp,"\n");
return 0;

}

/*订正答案*/
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int a,b,r,n,i;
char c;
FILE *fp;
if ((fp=fopen("a.txt","r"))==NULL) {
printf("Can't open ....");
exit(EXIT_FAILURE);
}

for (i=0;i<10;i++) {
fscanf(fp,"%d %c %d = %d",&a,&c,&b,&n);

//while (getchar()!='\n');

if (c=='+')
r=a+b;
else if (c=='-')
r=a-b;
else if (c=='*')
r=a*b;
else if (c=='/')
r=a/b;

if (n != r) {
printf("%d %c %d = %d 计算有误\n",a,c,b,n);
exit(EXIT_FAILURE);
}
}

fclose(fp);

printf("恭喜!\n\t计算全部正确!\n");

return 0;
}

请教几个简单的C语言问题!急!在线等!
1、3.4f表示按宽度为3精度为4的单精度浮点型输出。%05d或%.5d表示按宽度为5的整型输出,实际位数少于定义的宽度则在前面补以0。printf("%03d",34)编译运行输出结果为034 其中的0不是针对8进制数,而是表示实际位数少于定义的宽度则在前面补以0。对于单双精度实数%0n1.n2f等同于%n1.n2f.2...

c语言小题目。急急急
1. 编程实现:从键盘上接收10个整数,并对其进行排序(要求排成升序)main(){int a[10],i,j,k,t;for(i=0;i<10;i++) scanf("%d",&a[i]);for(i=0;i<9;i++){k=i;for(j=i+1;j<10;j++)if(a[j]<a[k]) k=j;if(k!=i){t=a[k];a[k]=a[i]; a[i]=t;} ...

C语言中输出的空格问题!!!急!
1、在输出串中直接加空格,改成:printf("%ld ld ld ",f1,f2,f3);2、采用数字输出定长方式(如8字节),不足长的补空格:printf("%8ld%8ld%8ld",f1,f2,f3);

C语言作业,急急急求解答
题分析:这个问题可能是由于软件代码中存在大量的冗余、重复计算或者低效算法等因素导致的。另外,如果软件需要加载大量的数据或者进行网络连接,则也会影响其启动速度。解决方案:为了解决这个问题,我们可以从以下几个方面入手:1.优化程序代码:检查程序中是否存在冗余、重复计算或者低效算法等因素,对代码进行...

C语言问题求解,在线等,急!!!
1、根据题意每天从区间1~N中,依次深度-1,遇到某个深度0时停止作业,所修改的区间就是当日作业区间。2、独立函数实现一天作业(workForDay)。参数flag为1显示作业过程,如不需要传0。3、init函数为输入并返回动态数组。include <stdio.h> include <malloc.h> int len=0;\/\/路面长度 int *init(...

C语言问题,急
逗号运算符。先执行括号内的表达式。a=4*5=20 a*2=40 表达式a=4*5,a*2的值是40,且a的值是20 a+6=20+6=26 逗号运算符,最后一个表达式的值就是整个表达式的值。表达式(a=4*5,a*2),a+6的值是26。

c语言错误!!1,哭着找你们帮忙啊啊!!急!!!
这里不合适 你少了一个参数 应该是 c=m*power(m,n);你应该给power(int m,int n)这个函数一个初值吧 是不是在求一个阿克曼函数?还有下面的循环也不对 根据你写的程序 我改了一下 可以实现功能了 include<stdio.h> include<math.h> int power(int m,int n){ int c=1;if(n==0)retu...

C语言高手帮忙啊!急!!!
;while(p!=NULL){ printf("%d,",p->data);p=p->next;} } void main(){ linklist *L;L=CREAT();LENGTH(L);OUT(L);} 该程序在turboc2.0上运行成功。顺便说一下:其实我这学期刚学《数据结构》,我想你也应该在学这门课吧,不知道可否交个朋友,以后好互相讨教。QQ:729430705 ...

C语言颜色问题,非常急!!!
1=蓝色 2=绿色 3=湖蓝色 4=红色 5=紫色 6=黄色 7=白色 8=灰色 9=淡蓝色 A=淡绿色 B=淡浅绿色 C=淡红色 D=淡紫色 E=淡黄色 F=亮白色 2.改变下一个输出或者输入字体和背景的颜色 采用SetConsoleTextAttribute函数,如 White on Black:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE...

C语言命令问题..急..在线等
1.在程序编辑完后按f9进行编译 2.要返回编辑窗口修改 程序,按f6,修改后运行编辑 3.要运行程序可选择RUM菜单中的RUN命令,也可用快捷键ctrl+f9 4.观察结果alt+f5。f2是保存。其他都忘记了。上学时的笔记上就记了这么多,你看着用吧。我刚翻出我的c程序设计第二版来看。笔记虽然乱了点,但重点...

相似回答