之前还可以用的,正常删除字符串里的错误字符什么的,结果我加了一个do while循环以后就不能用了,把do while删了也不能用了!我之前也没保存写的程序,明天就要答辩了,完蛋了!
下面是我的程序。没有语法错误,就是输出有问题!😭😭😭😭😭😭
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include<string.h>
#include<ctype.h>
#define My_Pi 3.14159
int main( )
{
float f(float s);
float sqrt1(float s);
float cos1(float deg);
float sin1(float deg);
float tan1(float deg);
float operate(float x,char c,float y);
//引用我定义的函数
float deg,a,b,s,x,y;
char c;
int num,k,l;
printf("如果想算加减乘除请按1,开方请按2,cos请按3,sin请按4,tan请按5\n");
scanf("%d",&num);
//通过输入进行操作
if(num==1)
{
printf("请输入数字和符号进行接下来的加减乘除运算。\n");
a=f(s);
}
if(num==2)
{
printf("请输入一个数字。\n");
scanf("%f",&s);
a=sqrt1(s);
}
if(num==3)
{
printf("请输入角度deg");
scanf("%f",°);
a=cos1(deg);
}
if(num==4)
{
printf("请输入角度deg");
scanf("%f",°);
a=sin1(deg);
}
if(num==5)
{
printf("请输入角度deg");
scanf("%f",°);
a=tan1(deg);
}
//保留运算结果继续运算
l=0;
printf("接下来将保留结果运算几次?请输入。");
scanf("%d",&k);
do{
printf("输入想进行的运算和数字.\n");
printf("%.3f",a);
scanf("%c%f",&c,&y);
b=operate(a,c,y);
printf("运算结果为%.3f",b);
a=b;
l++;
}
while(l!=k);
return 0;
}
float f(float s)
//这个是删除错误字符的函数
{
float exchange(char str[20]);
// float x,y;
// char c;
char str[20],str1[20],str2[20];
int i,a,b;
scanf("%s",&str);
i=0,a=0,b=0;
while(str[i]!='\0')
{
if((str[i]>=''&&str[i]<='9'))
{
str1[a]=str[i];
//正确字符放在str1
a++;
}
else
{
str2[b]=str[i];
//错误字符放进str2
b++;
}
i++;
}
printf("%s\n",str1);
if(b!=0)
printf("有错误字符输入\n");
s=exchange(str1);
//进行操作
return s;
}
//下面这个函数主要是为了计算多位数写的.
float exchange(char str[20])
{
float operate(float x,char c,float y);
char *p[20],c;
float P[20];
float x,y,a;
int num=strlen(str),i,n=0,sum=0;
for(i=0;i<num;i++)
{
if(!isdigit(str[i])&&str[i]!='.')
//当str1[i]里面不是数字或小数时,在将符号赋予c的同时用空格代替。
{
c=str[i];
str[i]='\0';
}
}
for(i=0;i<num;i++)
{
if((str[i-1]=='\0')&&((str[i]<='9'&&str[i]>='0')||(str[i]=='.')))
//非常重要的判定,要仔细思考情况。
{
p[n]=str+i;
//将str1[i]里的数字或者符号指向p[n].
n++;
}
}
for(i=0;i<n;i++)
{
P[i]=atof(p[i]);
//运用atof函数将p[i]里面的值整合放入P[i]里.
}
x=P[0];
y=P[1];
a=operate(x,c,y);
printf("运算结果为%.3f\n",a);
return a;
}
//开方运算函数
float sqrt1(float s)
{
s=sqrt(s);
printf("开方结果等于%.3f",s);
return s;
}
//以下为三角函数运算函数
float cos1(float deg)
{
deg=cos(deg/180My_Pi);
printf("运算过后得cos值为%.3f",deg);
return deg;
}
float sin1(float deg)
{
deg=sin(deg/180My_Pi);
printf("运算过后得sin值为%.3f",deg);
return deg;
}
float tan1(float deg)
{
deg=tan(deg/180My_Pi);
printf("运算过后得tan值为%.3f",deg);
return deg;
}
//这是最简单的加减乘除运算函数。
float operate(float x,char c,float y)
{
float s;
switch(c)
{
case'+':{
s=x+y;
}
break;
case'-':{
s=x-y;
}
break;
case'':{
s=xy;
}
break;
case'/':if(y==0)
{
printf("出错了,请重新输入\n");
}
else
{
s=x/y;
}
break;
default:
{
printf("花田里犯了错\n");
break;
}
}
return s;
}
!明天答辩!输出老是不对!计算器功能实现
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
3条回答 默认 最新
- CSDN专家-link 2021-12-23 06:15关注
str1并没有字符串结束符,用%s输出会有乱码的
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 对于知识的学以致用的解释
- ¥50 三种调度算法报错 有实例
- ¥15 关于#python#的问题,请各位专家解答!
- ¥200 询问:python实现大地主题正反算的程序设计,有偿
- ¥15 smptlib使用465端口发送邮件失败
- ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
- ¥15 对于squad数据集的基于bert模型的微调
- ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
- ¥20 steam下载游戏占用内存
- ¥15 CST保存项目时失败