#include <iostream>
#include <string>
#include <cmath>
using namespace std;
int main()
{
char a[7];
int b[7];
while(cin>>a){
for(int i=0;i<7;i++){
int(a[i]);
}
for(int i=0;i<7;i++){
b[i]=abs(a[i+1]-a[i]);
cout<<b[i];
}
}
return 0;
}
目前看到主要有3個問題:
1. int(a[i]); 這樣寫只會回傳int的數值, 實際上並不會將 a[i] 的型態更改為 int ,
另外 C++ 的 char 本身就是儲存 ASCII 的數值(只是相較 int 只有 1Byte 且輸入/輸出時是使用字元),
所以其實可以直接對 char 進行運算是沒問題的~
2. 主要會有問題的地方在於計算差的那個迴圈,
你個for迴圈會使 i 從 0 跑到 6 ,
但當 i = 6 時去執行 abs(a[i+1]-a[i]) 會發現在 a[i+1] 存取到的位址是 a[7] ,
不只超過字串的範圍也超過矩陣的範圍,
所以最後會計算出奇怪的數值出來~
3. 記得每一筆測資都要換行~
以上希望有幫助到你~ OwO