初级C语言编程问题

来源:百度知道 编辑:UC知道 时间:2024/05/23 11:11:39
1、要求将电文的每一个字母用字母表中的后一位代替,比如a用b代替,B用C代替,Z用A代替,z用a代替。
2、其他非字母字符不变。
main()
{
char ch1;
scanf("%c",&ch1);
if((ch1>='a'&&ch1<='y')||(ch1>='A'&&ch1<='Y'))
ch1+=1;
else
if(ch1=='z')
ch1='a';
else
if(ch1=='Z')
ch1='A';
printf("%c",ch1);
getch();
}
我编的这个一次只能改一个字母,当我输入AOW时,实际上只会把A改成B后就结束程序了。
我想实现将一句话都改掉,请问该填加些什么?
其实问题在我提出后几分钟我自己就解决了。
我发现你们给的还要复杂些,其实很简单。
只要在 scanf("%c",&ch1) 前面加个 for(;;) 就行了。
当然scanf到printf("%c",ch1)要用大括号括起来。

给,这么改:
#include<conio.h>
#include<stdio.h>

#define N 50 //定义输入的字符串最长为50个字符

main()
{
char ch1;
char result[N]={NULL}; //用result来存放结果字符串
int i=0;//用i来标识数组result的当前下标

while((ch1=getchar())!='\n') //当输入的字符不为回车时,输入继续
{
if((ch1>='a'&&ch1<='y')||(ch1>='A'&&ch1<='Y'))
ch1+=1;
else
if(ch1=='z')
ch1='a';
else
if(ch1=='Z')
ch1='A';

result[i]=ch1;//记录结果到数组result
i++; //下标加1
}
printf("%s",result); //输出结果
getch();
}

char ch1;
scanf("%c",&ch1);
这段代码实际上每次只取到1个字符,为了取得过个字符需要用gets函数。
另外,原来的变换代码也只是针对单个字符的变换,对整个字符串的变换需要循环整个字符串,这部分可以抽出来单独作为一个函数。请参考下面的代码。

#include<stdio.h>
#include<string.h>

void change(char *str) {
int len = strlen(str);
char ch1;