字符加密問題。
#include"stdio.h"
#define N 100
int main()
{
char k,a[N],
int n,i,j=1;
while(j)
{
printf("請輸入要加密的單詞有幾個字母:");
scanf("%d",&n);
printf("請輸入要加密的英文單詞:");
for(i=0;i<n;i++)
{
scanf("%c",&a[i]);
a[i]=a[i]+4;
}
printf("加密後的英文單詞為:");
for(i=0;i<n;i++)
printf("%c",a[i]);
printf("\n");
//scanf("%c",&k);
}
return 0;
}
我的程序問題出在哪裡?
一:就是字符加密出錯,class加密後應該是gpeww。我的結果頭個字符變成了,最後 一個不見了。怎麼回事??
二:還有while循環的最後一句吸收空格回車符的,我理解的還是有點模糊。
就是沒有那一句的話,我輸完class後按回車建,就出現圖一情況,我想說的是第 二次次循環,兩句文字中間不是有個輸入語句,怎麼就直接被忽略了呢。
三:第二個圖就是while循環最後一句沒有注釋掉的。 來個大神給我講講,感激不盡
順便弱弱問一句,怎麼現在用int main() {....不用returned 0;}也行
全部都是scanf()語句帶來的錯誤
在用scanf()語句輸入字符按下回車鍵之後,回車鍵沒有處理。
代碼中a[0]不是'c',而是回車符。因為你在輸入單詞字母個數之後按下了回車,系統把回車符賦給了a[0],所以字符串a應該是“\nclas”。
程序運行過程中多余的字符如果不處理是不會消失的,scanf函數回車後產生的回車字符也是不會消失的只會在下一句scanf語句的時候把回車字符賦值給相應變量。
解決方法:在scanf函數後加上getchar()語句,吸收掉回車字符。