int main(){ char a;//a用于存储运算符 int n,c,d;//n存储个数不解释,cd存储两个数字 char s[100],b[10];//s存储最终的字符串,b临时变量 cin>>n; for(int i=0;i<n;i++){ cin>>b;//输入一串字符,有可能是运算符,也有可能是数字 if(b[0]>='a' && b[0]<='z'){ a=b[0];//如果是运算符就存入a,然后输入数字 cin>>c>>d; }else{ sscanf(b,"%d",&c);//如果是数字就转换b为int存储到第一个数字 cin>>d;//然后输入剩下的第二个数字 } memset(s,0,sizeof(s));//清空原有的字符串,防止长度判断错误 if(a=='a')//用sprintf格式化 sprintf(s,"%d+%d=%d",c,d,c+d); else if(a=='b') sprintf(s,"%d-%d=%d",c,d,c-d); else if(a=='c') sprintf(s,"%d*%d=%d",c,d,c*d); cout<<s<<endl<<strlen(s)<<endl;//输出字符串和字符串长度 } return 0; }请改成C语言
时间: 2024-04-01 09:35:41 浏览: 23
#include <stdio.h>
#include <string.h>
int main(){
char a;
int n,c,d;
char s[100],b[10];
scanf("%d", &n);
for(int i=0;i<n;i++){
scanf("%s", b);
if(b[0]>='a' && b[0]<='z'){
a=b[0];
scanf("%d%d", &c, &d);
} else{
sscanf(b,"%d",&c);
scanf("%d", &d);
}
memset(s,0,sizeof(s));
if(a=='a')
sprintf(s,"%d+%d=%d",c,d,c+d);
else if(a=='b')
sprintf(s,"%d-%d=%d",c,d,c-d);
else if(a=='c')
sprintf(s,"%d*%d=%d",c,d,c*d);
printf("%s\n%d\n", s, strlen(s));
}
return 0;
}
相关问题
c语言 请输入一个分数计算式(格式为a/b_c/d,其中_处为加/减/乘/除号)
好的,以下是一个简单的C语言程序,可以实现输入一个分数计算式,并输出计算结果:
```c
#include <stdio.h>
int main() {
int a, b, c, d;
char op;
printf("请输入一个分数计算式(格式为a/b_c/d,其中_处为加/减/乘/除号):");
scanf("%d/%d %c %d/%d", &a, &b, &op, &c, &d);
int numerator, denominator;
switch (op) {
case '+':
numerator = a*d + b*c;
denominator = b*d;
break;
case '-':
numerator = a*d - b*c;
denominator = b*d;
break;
case '*':
numerator = a*c;
denominator = b*d;
break;
case '/':
numerator = a*d;
denominator = b*c;
break;
default:
printf("无效的运算符!\n");
return 1;
}
printf("计算结果为:%d/%d\n", numerator, denominator);
return 0;
}
```
你可以将以上代码复制到本地的C语言开发环境中进行编译运行。
/* 函数功能:求一个后缀表达式的值 / double evalpost(char f[]); / 函数功能:判断一个字符是否为运算符 / int is_operation(char op); / 函数功能:将一个中缀表达式e转换为与它等价的后缀表达式f / void postfix(char e[], char f[]); / 函数功能:求运算符的优先级 / int priority(char op); / 函数功能:将数字字符串转变成相应的数 */ double readnumber(char f[], int i); / 函数功能:判断表达式括号是否匹配 */ int match_kuohao(char c[]); 为这段代码编写C语言测试代码,要求在同一个main文件里测试,不需要输入
以下是一份可能的测试代码,可以在同一个main文件里进行测试:
#include <stdio.h>
#include <string.h>
double evalpost(char f[]);
int is_operation(char op);
void postfix(char e[], char f[]);
int priority(char op);
double readnumber(char f[], int i);
int match_kuohao(char c[]);
int main() {
char e[100], f[100];
double result;
int match;
// 测试evalpost函数
strcpy(f, "23+4*");
result = evalpost(f);
printf("后缀表达式的值为:%f\n", result);
// 测试is_operation函数
char op = '+';
if (is_operation(op)) {
printf("%c是运算符\n", op);
} else {
printf("%c不是运算符\n", op);
}
// 测试postfix函数
strcpy(e, "2+3*4");
postfix(e, f);
printf("转换成后缀表达式为:%s\n", f);
// 测试priority函数
op = '+';
int p = priority(op);
printf("%c的优先级为:%d\n", op, p);
// 测试readnumber函数
strcpy(f, "3.14");
double num = readnumber(f, 0);
printf("转换成的数字为:%f\n", num);
// 测试match_kuohao函数
strcpy(e, "(2+3)*4");
match = match_kuohao(e);
if (match) {
printf("括号匹配\n");
} else {
printf("括号不匹配\n");
}
return 0;
}