#include<stdio.h>
#include<string.h>
void main ()
{
char c[100]={0,0};
int i;
printf("请输入您要加密的单词(区分大小写):");
scanf("%s",c);
printf("加密后的单词是:");
{for (i=0;i<=100;i++)
{if(c[i]>=87&&c[i]<=90)
c[i]=c[i]-26;
if(c[i]>=119&&c[i]<=122)
c[i]=c[i]-26;
c[i]+=4;
printf("%c",c[i]);
}
}
}我怎么把后面那些东西去掉。只让结果输出英文字符?
你好. 你程序中的for循环是将字符串数组全部加密. 所以会输出后面的一大串.
在for循环中将i的上界改成字符串c中的实际长度.就没问题了.
代码如下:
#include<stdio.h>
#include<string.h>
void main ()
{
char c[100]={0};
int i;
printf("请输入您要加密的单词(区分大小写):");
scanf("%s",c);
printf("加密后的单词是:");
for (i=0;i<strlen(c);i++) //只对输入的字符进行加密操作. 其他空白字符不操作.
{
if(c[i]>=87&&c[i]<=90)
c[i]=c[i]-26;
if(c[i]>=119&&c[i]<=122)
c[i]=c[i]-26;
c[i]+=4;
printf("%c",c[i]);
}
printf("\n"); //用来区分加密后的输出和编译器结束的press any key...
}
附图: