习题7-7 字符串替换 (15分)
本题要求编写程序,将给定字符串中的大写英文字母按以下对应规则替换:
原字母 | 对应字母 |
---|---|
A | Z |
B | Y |
C | X |
D | W |
… | … |
X | C |
Y | B |
Z | A |
输入格式:
输入在一行中给出一个不超过80个字符、并以回车结束的字符串。
输出格式:
输出在一行中给出替换完成后的字符串。
输入样例:
Only the 11 CAPItaL LeTtERS are replaced.
输出样例:
Lnly the 11 XZKRtaO OeGtVIH are replaced.
核心思想:
‘Z’+‘A’=155 |
---|
‘B’+‘Y’=155 |
‘C’+‘X’=155 |
… |
我写的
#include <stdio.h>
#include <stdlib.h>
#include<string.h>
int main()
{
char t[80];
int i,j;
gets(t);
int len=strlen(t);
for (i= 0;i<len;i++)
{
if (t[i]>='A'&&t[i]<='Z')
{
t[i]= 155 - t[i];
printf("%c",t[i]);
}
else{
printf("%c",t[i]);}
}
return 0;
}
但显示
用codeblocks测试
(也不知道这里有没有80个字符)但最后一位不符合要求
目前暂时不知道原因出在哪里。
#include<stdio.h>
int main(){
char a[100];
int i=0,j;
while((a[i]=getchar())!='\n'){
i++;
}
a[i]='\0';
for(j=0;j<i;j++){
if(a[j]>='A'&&a[j]<='Z'){
a[j]=155-a[j];
// a[j]='Z'+'A'-a[j];别人的思路,还没有弄清楚关系;
printf("%c",a[j]);
}else{
printf("%c",a[j]);
}
}
return 0;
}
(另外一位博主的(也是看了她的才有的’A’+‘Z’=155的思路)不妥 删)
差别在于for循环的次数(?)
猜想:我用的strlen算的字符个数,他用的while循环+(i++)来统计字符个数,或许我的错误就是这里的原因(?