例題 3-2
阿新 • • 發佈:2018-11-23
題目:
把手放在鍵盤上時,稍不注意就會往右錯一位。這樣,輸入Q會變成輸入W,輸入
J會變成輸入K等。輸入一個錯位後敲出的字串(所有字母均大寫),輸出打字員本來想打出的句子。輸入保證合法,即一定是錯位之後的字串。例如輸入中不會出現大寫字母A。
樣例輸入:
O S,GOMR YPFSU/
樣例輸出:
I AM FINE TODAY.
書上給的程式碼,寫了一遍然而並沒有出現樣例的輸入和輸出。
書上原始碼:
#include <stdio.h>
char s[] = "`1234567890-=QWERTYUIOP[]\\ASDFGHJKL;'ZXCVBNM,./" ;
int main(){
int i, c ;
while((c = getchar()) != EOF){
for(i = 1; s[i] && s[i] != c; i++){
if(s[i]) putchar(s[i-1]);
else putchar(c);
}
}
return 0;
}
然後,在網上找的了這個程式碼
#include "iostream"
#include "cstdio"
using namespace std;
char a[ ] = "`1234567890-=QWERTYUIOP[]\\ASDFGHJKL;'ZXCVBNM,./";
int main(){
int i,c;
while ((c = getchar())!=EOF){
for(i = 1; a[i];i++){
if(c == a[i]){
break; // 在字串中尋找c 如果相等就保留下標,在下面處理
}
}
if(a[i]){
cout << a[i-1] ; // 找到輸出前一個
}
else{
cout << c ;
}
}
return 0;
}
---------------------
作者:SihgYu
來源:CSDN
原文:https://blog.csdn.net/qq_37866486/article/details/81388599
版權宣告:本文為博主原創文章,轉載請附上博文連結!
執行的時候發現,當輸入空格時,下一行輸出會出現空格的ASCII碼。然後改動了一下,感覺是輸出問題。
#include "iostream"
#include "cstdio"
using namespace std;
char a[] = "`1234567890-=QWERTYUIOP[]\\ASDFGHJKL;'ZXCVBNM,./";
int main(){
int i,c;
while ((c = getchar())!=EOF){
for(i = 1; a[i];i++){
if(c == a[i]){
break; // 在字串中尋找c 如果相等就保留下標,在下面處理
}
}
if(a[i])
printf("%c",a[i-1]); // 找到輸出前一個
else{
printf("%c",c);
}
}
return 0;
}