解题思路:
注意事项:
参考代码:
#include<stdio.h>
#include <string.h>
void change(char n[],int m){ //将数字字符逆序
int i,j;
char t;
i=0;
j=m-1;
while (i<=j){
t=n[i];
n[i]=n[j];
n[j]=t;
i++;
j--;
}
}
int main(){
char a[1000];
char b[1000];
int x[1000]={0}; //全部数字数组都赋值0,以便后面计算!!!
int y[1000]={0};
int z[1000]={0};
int len_a,len_b;
scanf ("%s",a); //要用scanf才会对哦!!!,gets是过不了的
scanf ("%s",b);
len_a=strlen(a);
len_b=strlen(b);
change(a,len_a); //逆序a
change(b,len_b); //逆序b
for (int i=0;a[i]!='\0';i++){ //字符转换成数字
x[i]=a[i]-'0';
}
for (int i=0;b[i]!='\0';i++){ //字符转换成数字
y[i]=b[i]-'0';
}
for (int i=0;a[i]!='\0';i++){ //减法开始
z[i]=x[i]-y[i];
}
for (int i=0;i<len_a;i++){ //处理借位,如果数字数组小于0,向前借位即可
if (z[i]<0){
z[i]+=10;
z[i+1]--;
}
}
int n;
for (int i=len_a;i>=0;i--){ //删去前导零
if (z[i]>0){ //找到不是零的,即最高位,跳出循环
n=i;
break;
}
if (i==0){ //如果一直到最后一位都是0,则输出零即可
printf ("0");
return 0;
}
}
for (int i=n;i>=0;i--){ //输出即可
printf ("%d",z[i]);
}
}
0.0分
0 人评分
C语言程序设计教程(第三版)课后习题8.9 (C语言代码)浏览:690 |
printf基础练习2 (C语言代码)浏览:605 |
C语言训练-排序问题<2> (C++代码)浏览:935 |
C语言程序设计教程(第三版)课后习题7.3 (C语言代码)浏览:643 |
A+B for Input-Output Practice (VII) (C++代码)浏览:643 |
C语言程序设计教程(第三版)课后习题4.9 (C语言代码)浏览:648 |
C语言程序设计教程(第三版)课后习题6.2 (C语言代码)浏览:751 |
用筛法求之N内的素数。 (C语言代码)浏览:711 |
回文数字 (C语言代码)浏览:2539 |
1012题解浏览:938 |