c语言输入格式的简单问题

入门的作业题,要求输入3 3输出(3+3)(3+3)=36,输入3,3就是没问题的,输入3 3就变成错误结果了,问一下是为什么

img

  • scanf 里面是原样输入, 你写的要输入三个数【并且逗号分隔】,只需要输入 a 和 b就行了,c是用来 计算的
  • 改成如下:

#include<stdio.h>
int main() 
{
    int a, b, c;
    scanf( "%d %d", &a , &b);
    c = (a + b)* (a + b) ;
    printf( "(%d+%d)( %d+%d)=%d", a, b, a, b, c);
}

这个问题的原因在于你使用的是字符串(string),而不是整数(integer)。当你输入一个整数时,C语言可以正确地将其转换为整数变量,然后进行数学运算。但是,当你输入一个字符串时,C语言将其视为字符数组,并将其解释为一个字符一个字符地读取。在这种情况下,读取到的是字符'3'和'3',而不是整数33。

因此,如果你希望能够正确地执行数学运算,你需要将输入的字符串转换为整数,然后再进行运算。可以使用C语言提供的函数atoi将字符串转换为整数,例如:


#include <stdio.h>
#include <stdlib.h>

int main() {
    char str[10];
    int num;

    printf("Enter a number: ");
    scanf("%s", str);

    num = atoi(str);
    printf("(%d+%d)(%d+%d)=%d\n", num, num, num, num, (num+num)*(num+num));

    return 0;
}

在上述代码中,atoi函数将输入的字符串str转换为整数num,然后使用num进行数学运算。

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^