char字符串里都是数字,想转换成int类型进行计算,结果转换出来就是一堆0。
没有报错
#include
#include
//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;
}
尝试了这样写,结果成功了,但原算法出了什么问题呢
#include
#include
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;
}
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;
}
第一种办法:通过charAt(i),把字符串的每位变成char型,然后用当前字符减去字符0 (temp_char-'0'),得到当前字符的int值。
第二种办法:把字符再转成字符串,然后再强制转换成int型
如有帮助请采纳,求求了QAQ。