首页 > 解决方案 > 如何让用户乘以两个数字以及让他们乘以一个字符串?

问题描述

我的意思是,我正在编写一个程序,其中用户输入一个字符串以及一个'*'字符和任何数字,程序将用户输入的字符串乘以该数字

Please enter a string you'd like multiplied: horse*3

output:
horsehorsehorse

我想做的是,如果那个字符串恰好是一个数字,那么像往常一样将这两个数字相乘

Please enter a string you'd like multiplied: 2*2

output:
4

我把我的代码放在下面。

int multStr(char *strMult) //strMult is character array for initial input
{
    //printf("\nRedirected to here!\n");

    printf("Please enter a string and number you'd like to multiply by: ");
    scanf(" %[^\n]s", strMult); //User scans in the string intended for multiplication

    char string[255];           //Character array for the string part
    char number[255];           //Character array for the number the string is to be multiplied by

    int counter=0;
    int i;

    for(i=0;strMult[i] != '*'; i++)
    {
        string[i] = strMult[i];
        counter++;
    }

    if(string[i] >= '0' && string[i] <= '9')
    {
        int strNum = myAtoi(string);
        printf("String: %d", strNum);
    }

    else
        {
        printf("String: %s\n", string);
        }

    counter++;

    for(i=0; strMult[counter] != '\0'; counter++, i++)
    {
        number[i] = strMult[counter];
    }
    //number[i+1] = '\0';
    printf("Number: %s\n", number);


    int num = myAtoi(number);

    //printf("Number after convert: %d\n", num);
    for(i=0; i<num; i++)
    {
        printf("%s", string);
    }

    printf("\n");


    return(0);


}

strMult 是我从 main 调用的 char 数组。我无法使用 stdlib,所以我创建了自己的 Atoi 函数

标签: c

解决方案


你在这里有几个问题。您要做的第一件事是将字符串分成两个char[]sstringnumber. 你似乎这样做没问题。接下来你需要做的是检查这string是一个数字。

if(string[i] >= '0' && string[i] <= '9')
{
    int strNum = myAtoi(string);
    printf("String: %d", strNum);
}

else
{
    printf("String: %s\n", string);
}

这是您正在使用的,但请注意它对程序的其余部分没有影响。你的号码是 if 块的本地号码,然后它就消失了,所以你以后不能使用它。您想要做的是稍后提供该号码。

int isNumber = 1;
int strNum;   

for(int k = 0; k < i; k++){
    if( string[k] >= '0' && string[k]<='9' ){
        //continue checking
    }else{
        isNumber=0;
    }
}

if (isNumber==1){
    strNum = myAtoi(string);
} else{
    // print your string or some such.
}

请注意,我检查了字符串中的所有字符,而不仅仅是第 i 个位置的字符 '*'。这样,如果有人输入 horse42*2,它就会认为它是一个字符串。

此外,您可以通过在分离数字时检查值来改进这一点。


推荐阅读