Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C语言中对字符执行算术_C_String_Math_Char_Int - Fatal编程技术网

在C语言中对字符执行算术

在C语言中对字符执行算术,c,string,math,char,int,C,String,Math,Char,Int,我正在尝试编写一个程序,可以对字符串进行加、减、乘和除。我现在正在研究如何将输入字符串拆分为两个字符串,然后执行相应的+-/* 输入应类似于abc+aaa 它的输出应该是abc+aaa=bcd 如何将字符串转换为整数字符串 #include <stdio.h> #include <math.h> #include <string.h> int main() { printf("This is a pseudo arithmetic program");

我正在尝试编写一个程序,可以对字符串进行加、减、乘和除。我现在正在研究如何将输入字符串拆分为两个字符串,然后执行相应的+-/*

输入应类似于abc+aaa

它的输出应该是abc+aaa=bcd

如何将字符串转换为整数字符串

#include <stdio.h>
#include <math.h>
#include <string.h>

int main() {

printf("This is a pseudo arithmetic program");

char input[10];
input[10] = '\0';
char first [9];
first[9] = '\0';
char last [9];
last[9] = '\0';

int i = 0; 
int b; 
int e;

while (input[0] != '0') {

if (input[0] == 0){
return -1;
}

printf("\nEnter a math problem in SOS format using only lowercase letters up to 9    characters");
printf("\nEx: abc+abc... type '0' to quit \n");
scanf("%s", input);

int x = 0;
x = strlen(input); 

    if (strchr(input, '+')){
    for (i = 0; i <= x; i++) {
         if (i == '+')
         strncpy(first, &input[0], i-1);
         i = 0;
    }
    for (i = x; i >= input[0]; i--) {
         if (i == '+')
         strncpy(last, &input[i], x);
         i = 0;    

    } 

     printf("%s", first);     
     printf(" + ");
     printf("%s", last);
     printf(" = %d", first + last);
    }
#包括
#包括
#包括
int main(){
printf(“这是一个伪算术程序”);
字符输入[10];
输入[10]='\0';
字符优先[9];
第一个[9]='\0';
最后一个字符[9];
最后[9]='\0';
int i=0;
int b;
INTE;
while(输入[0]!=“0”){
如果(输入[0]==0){
返回-1;
}
printf(“\n以SOS格式输入一道数学题,仅使用小写字母,最多9个字符”);
printf(“\nEx:abc+abc…键入“0”退出\n”);
扫描频率(“%s”,输入);
int x=0;
x=strlen(输入);
if(strhr(输入“+”)){
对于(i=0;i=input[0];i--){
如果(i='+')
strncpy(最后一个,&输入[i],x);
i=0;
} 
printf(“%s”,第一个);
printf(“+”);
printf(“%s”,最后一个);
printf(“=%d”,第一个+最后一个);
}

您的代码似乎存在多个问题:

  • 几乎所有阵列都存在一个超出边界的阵列:

    字符输入[10];
    输入[10]='\0'

  • 在本例中,如果要用“\0”初始化最后一个字符,则应为

    input [9] = '\0'
    
    数组索引始终从0开始

  • 不清楚以下行的用途:

    while(输入[0]!='0'){if(输入[0]==0){return-1;}

  • 在输入字符串时,为什么要提示用户输入0来结束它

  • strrchr返回从搜索字符开始的指针。因此,您可以使用它本身来确定“+”符号的位置,并将字符串拆分为两个,而不是while循环。请参阅

  • 此外,您添加字符的想法也不清楚。从您的示例来看,您似乎正在考虑a=1、b=2等。在这种情况下,如果您的代码不区分大小写,那么您可以将所有输入转换为大写,然后执行
    (输入[0]-“a”)+1
    将字母a、b、c转换为1、2、3等


  • 希望这些指针能有所帮助。建议您再次检查问题陈述,并相应地重构代码。

    那么输入字符串的基数是多少?看起来可能是基数26,a=(第一个非零值)?如果是这样,那么零值是多少?我可能只是愚蠢地不知道SOS格式是什么,但谷歌似乎没有帮助。只需将2个字符相加,然后减去字符
    'a'
    。我不确定你所说的基数是什么意思,但我相信a-z等于0-25,而a-z等于26-41。如果程序是要解决这个问题a-a,那么答案应该是Z。我认为根本不存在零值。NHAHDH你能详细说明一下吗?