看了别人的博客感觉自己还是不够认真,认识到了他们的努力,这个平台应该是记录自己成长的地方,总结自己的失败与错误,得到正确结果中间的过程才是重要的,这中间让我学到了很多之前只听课体会不到的东西。
这次的作业题目是在之前的程序上添加一些功能,回来尝试了一番,感觉之前写的函数有些简单了扩展起来需要改写很多东西,基本上等于重新编程另外一个程序,感觉到了自己的不足。然后看了别人的程序,添加功能很方便,然后尝试改写自己的函数。这次代码加入了一部分简单的要求,加入括号的需要在研究一下。。乘除法按照之前的flag随机取值可以加入,数值范围通过:1.减法和除法使被减数(被除数)与减数(除数)互换;2.乘法是把结果大于500的乘法算式中乘数大于20的除以5,把结果控制到500以内更加贴近小学题目。
除法这个要求得出小数点并保留,把之前的int类型改成了float类型,并在输出位置保留2位小数,运行之后显示的很好,也没看出问题来。突然想到了输入的问题,试着输入一个正确结果,程序就死机了。。
case 4:
{
if(a<b)
{
t=a;
a=b;
b=t;
}
printf("%d %.0f/%.0f= \n",n,a,b);
x[n]=a/b;/*这里有错误!*/
n++;
}break;
}
}
printf("输入结果!\n");
for(n=0;n<30;n++)
{
printf("%d, %.2f ",n,x[n]);
}
printf("\n");
for(n=0;n<30;n++)
{
scanf("%.2f",&y[n]);
问题出在电脑做运算的时候没有保留,在网上百度了一下做出修改后的程序代码
// 1.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include "stdlib.h"
#include "time.h"
#define N 30
int *func()
{
static float x[N],y[N];
int n=0,flag,t;
float a,b;
srand((unsigned)time(NULL));
while(n<N)
{
a=rand()%99+1;
b=rand()%99+1;
flag=rand()%4+1;
switch(flag){
case 1:
{
printf("%d %.0f+%.0f= ",n,a,b);
x[n]=a+b;
printf("%.0f\n",x[n]);
n++;
}break;
case 2:
{
if(a<b)
{
t=a;
a=b;
b=t;
}
printf("%d %.0f-%.0f= ",n,a,b);
x[n]=a-b;
printf("%.0f\n",x[n]);
n++;
}break;
case 3:
{
if(a*b>=500)
{
if(a>20)
{
a=a/5;
}
if(b>20)
{
b=b/5;
}
}
else
{
printf("%d %.0f*%.0f= ",n,a,b);
x[n]=float(a*b*1)/1;
printf("%.0f\n",x[n]);
n++;
}
}break;
case 4:
{
if(a<b)
{
t=a;
a=b;
b=t;
}
printf("%d %.0f/%.0f= ",n,a,b);
x[n]=float((int)(a/b*100))/100;/*这里改正之后*/
printf("%.2f\n",x[n]);
n++;
}break;
}
}
printf("输入结果!\n");
for(n=0;n<N;n++)
{
scanf("%f",&y[n]);
if(y[n]==x[n])
{
printf("正确!\n");
}
else
{
printf("错误!正确结果为%.2f\n",x[n]);
}
}
return 0;
}
int main(int argc, char* argv[])
{
func();
return 0;
}
剩下最难改的加括号的多项算式,准备用C++改一下,然后学一下界面。
原文链接: https://www.cnblogs.com/suisx/p/5263145.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/230119
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!