我沒照它題目用那個方式寫。
這是我用自己的想法寫出來的,但是它line 6過不了也不知道為什麼,我自己的電腦類似的數字跑得出來。希望一些高手可以幫幫我~!
char a[1000];
while(gets(a)!='\0'){
int start,end,max=0,count=0,tmp,carry=0;
int num[1000][100]={0},s[1000][1],sum[100]={0};
for(int i=0;i<strlen(a);i++){
if(isdigit(a[i])){
if((isspace(a[i-1]) && i>0) || (i==0 && isdigit(a[i]))){
start=i;
for(int j=i;j<strlen(a);j++){
if(isspace(a[j+1]) || (isdigit(a[j]) && j==strlen(a)-1)){
for(int k=i;k<j+1;k++){
if(isalpha(a[k])){
end=0;
start=0;
i=j+1;
break;
}
}
if(end==0 && start==0)
break;
else{
end=j;
break;
}
}
}
for(int k=start;k<=end;k++){
if(start==0 && end==0){
num[count][k-start]=0;
s[count][0]=1;
}
else{
num[count][k-start]=a[k]-48;
s[count][0]=end-start+1;
}
}
count++;
}
}
if((!isdigit(a[i])&&!isdigit(a[i+1])) && i==strlen(a)-1)
printf("0");
}
for(int i=0;i<count;i++){
if(s[i][0]>max)
max=s[i][0];
}
for(int i=0;i<count;i++){
for(int j=max;j>=0;j--){
num[i][j]=num[i][j-max+s[i][0]-1];
if(j-max+s[i][0]-1==0){
tmp=j;
}
}
for(int k=tmp-1;k>=0;k--){
num[i][k]=0;
}
}
for(int i=max;i>=0;i--){
for(int j=0;j<count;j++){
sum[i]+=num[j][i];
}
sum[i]+=carry;
if(sum[i]<10)
carry=0;
else{
sum[i]=sum[i]-10;
carry=1;
}
}
if(sum[0]!=0){
for(int i=0;i<=max;i++){
printf("%d",sum[i]);
}
}
else{
for(int i=1;i<=max;i++){
printf("%d",sum[i]);
}
}
printf("\n");
}
return 0;
我的想法是先把輸入的字串數字取出來,然後對齊在加起來,可是就是過不了line6,希望有人可以幫幫忙