[問題]不知為何 會出現亂碼
我要弄一個依據輸入的xyz值做出運算所得到的M值
在讓輸入的字母進行調換
如 M=3
則 A--->D
程式碼如下 但不知為何輸出會出現亂碼
例如我輸入 1 1 8(enter)
f fd
出現 g ge聶x
請按任意鍵繼續
有請高手們進行指導
剛又試了一下
該不會印出字那邊改成
cout<<str;
就可以了(我試這樣OK)
所以說是沒有字的部分出問題是嗎
#include <iostream>
#include <cmath>
#include <string>
using namespace std;
int main(void)
{
int x,y,z,i;
float temp;
float M;
char str[50];
cin>>x>>y>>z; //輸入x y z 值
cin.get(); //由於按下的一次enter會被讀取,若少這行cin.getline會讀取
// enter的動作而繼續進行後面的程式碼
cin.getline(str,50,'\n'); // 輸入原始字串
temp=pow(x,1.75)-pow(y,1.75); //先算出決定字母要移幾個位的M值的積分部分
M=(float)4/7*temp+(float)8/z; //算出移幾個位的M值
for(i=0;i<50;i++)
{if(str[i]>=65&&str[i]<=90) //使用十進位制以判斷出是大寫的才進行
{str[i]=str[i]+(int)M; // 移位
while(str[i]>=91)
{ str[i]=str[i]-26; //若大於A~Z所被給予的數字範圍,則
//不斷減少26使其回至範圍內
}
while(str[i]<=64) //若小於A~Z所被給予的數字範圍,則不
//斷增加26使其回至範圍內
{ str[i]=str[i]+26;
}
}
else if(str[i]>=97&&str[i]<=122) //使用十進位制以判斷出是小寫的才進行
{str[i]=str[i]+(int)M; // 移位
while(str[i]>=123)
{str[i]=str[i]-26; //若大於a~Z所被給予的數字範圍,則不
// 斷減少26使其回至範圍內
}
while(str[i]<=96) //若小於a~Z所被給予的數字範圍,則不
// 斷增加26使其回至範圍內
{str[i]=str[i]+26;
}
}
else
continue; //若輸入的並非是字母,即非所需做改變
//的intput,便跳回至for迴圈處理下一個
}
for(i=0;i<50;i++) //以迴圈印出output
{
cout<<str[i];
}
system("pause");
return 0;
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.45.66.185
※ 編輯: DiLegend 來自: 114.45.66.185 (02/25 00:47)
推
02/25 01:03, , 1F
02/25 01:03, 1F
→
02/25 01:04, , 2F
02/25 01:04, 2F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章