我来问道无与说 2023-01-31 22:30 采纳率: 100%
浏览 50
已结题

C语言char类型字符串里的数字转换到int就变成0了,六个变了五个,看不出问题

char字符串里都是数字,想转换成int类型进行计算,结果转换出来就是一堆0。
没有报错

#include <stdio.h>
#include <stdlib.h>
//Ax+By=C
//Dx+Ey=F
//x=(CE-BF)/(AE-bD)
//y=(CD-AF)/(BD-aE)
int main(){
    char A[] = "";
    char B[] = "";
    char C[] = "";
    char D[] = "";
    char E[] = "";
    char F[] = "";
    printf("请按照以下格式输入方程组 Ax+By=C;Dx+Ey=F\n");
    char str[32] = "";
    scanf("%s",str);
    printf("方程组为 %s\n", str);
    sscanf(str,"%[^x]",A);
    printf("%s\n", A);
    sscanf(str,"%*[^+]+%[^y]",B);
    printf("%s\n", B);
    sscanf(str,"%*[^=]=%[^;]",C);
    printf("%s\n", C);
    sscanf(str,"%*[^;];%[^x]",D);
    printf("%s\n", D);
    sscanf(str,"%*[^;]%*[^+]+%[^y]",E);
    printf("%s\n", E);
    sscanf(str,"%*[^;]%*[^=]=%s",F);
    printf("%s\n", F);
    int num1, num2, num3, num4, num5, num6, x, y;
    num1 = atoi(A);
    num2 = atoi(B);
    num3 = atoi(C);
    num4 = atoi(D);
    num5 = atoi(E);
    num6 = atoi(F);
    printf("%d\n",num1);
    printf("%d\n",num2);
    printf("%d\n",num3);
    printf("%d\n",num4);
    printf("%d\n",num5);
    printf("%d\n",num6);
    //x = (num1 * num5 -num2 * num6) / (num1 * num5 - num2 * num4);
    //printf("%d,",x);
    //x=(CE-BF)/(AE-bD)
    //y=(CD-AF)/(BD-aE)
    return 0;
}

img

尝试了这样写,结果成功了,但原算法出了什么问题呢

#include<stdio.h>
#include<stdlib.h>
int main()
{
     char b[18];
     int num;
     scanf("%s",b);//对char型数组进行赋值 如:123456789
     num = atoi(b);
     printf("%d",num);
     int C = num + 10;
     printf("%d",C);
     
     
    return 0;
 } 

img


其实就是提取数字计算,但系数为1的情况也没啥思路,是不是要用if,但怎么检测呢,刚学实在没啥见识

  • 写回答

3条回答 默认 最新

  • qzjhjxj 2023-01-31 22:43
    关注

    char A[] = ""; char B[] = "";char C[] = "";char D[] = "";char E[] = "";char F[] = ""; 字符串定义问题,改为:char A[4],B[4],C[4],D[4],E[4],F[4];
    修改如下,供参考:

    #include <stdio.h>
    #include <stdlib.h>
    //Ax+By=C
    //Dx+Ey=F
    //x=(CE-BF)/(AE-bD)
    //y=(CD-AF)/(BD-aE)
    int main(){
        char A[4] = ""; //修改
        char B[4] = ""; //修改
        char C[4] = ""; //修改
        char D[4] = ""; //修改
        char E[4] = ""; //修改
        char F[4] = ""; //修改
        printf("请按照以下格式输入方程组 Ax+By=C;Dx+Ey=F\n");
        char str[32] = "";
        scanf("%s",str);
        printf("方程组为 %s\n", str);
        sscanf(str,"%[^x]",A);
        printf("%s\n", A);
        sscanf(str,"%*[^+]+%[^y]",B);
        printf("%s\n", B);
        sscanf(str,"%*[^=]=%[^;]",C);
        printf("%s\n", C);
        sscanf(str,"%*[^;];%[^x]",D);
        printf("%s\n", D);
        sscanf(str,"%*[^;]%*[^+]+%[^y]",E);
        printf("%s\n", E);
        sscanf(str,"%*[^;]%*[^=]=%s",F);
        printf("%s\n", F);
        int num1, num2, num3, num4, num5, num6, x, y;
        num1 = atoi(A);
        num2 = atoi(B);
        num3 = atoi(C);
        num4 = atoi(D);
        num5 = atoi(E);
        num6 = atoi(F);
        printf("%d\n",num1);
        printf("%d\n",num2);
        printf("%d\n",num3);
        printf("%d\n",num4);
        printf("%d\n",num5);
        printf("%d\n",num6);
        //x = (num1 * num5 -num2 * num6) / (num1 * num5 - num2 * num4);
        //printf("%d,",x);
        //x=(CE-BF)/(AE-bD)
        //y=(CD-AF)/(BD-aE)
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 2月11日
  • 已采纳回答 2月3日
  • 创建了问题 1月31日

悬赏问题

  • ¥15 关于#java#的问题:找一份能快速看完mooc视频的代码
  • ¥15 这种微信登录授权 谁可以做啊
  • ¥15 请问我该如何添加自己的数据去运行蚁群算法代码
  • ¥20 用HslCommunication 连接欧姆龙 plc有时会连接失败。报异常为“未知错误”
  • ¥15 网络设备配置与管理这个该怎么弄
  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!