当前位置:编程学习 > C/C++ >>

C语言高手帮忙做题~~~急!!!!题目如补充所示:

把一串密码译成明文,密码以字符@表示结束。译码规则如下: (1)如果是字母,转换成字母序列的下三个字母。如字母A译成D、B译成E。 (2)如果是字母Z,译成C。 (3)无论是大小写字母,都译成小写字母。 (4)其他字符一律找原样译出。
答案:#include<stdio.h>
void main()
{
	int i,k=0;
	char a[100];
	printf("输入密文:\n");
	for(i=0;i<100;i++)
	{
		scanf("%c",&a[i]);
		k++;
		if(a[i]=='@')
			break;
	}
		for(i=0;i<k;i++)
		{
		if((a[i]>='a'&&a[i]<='z')||(a[i]>='A'&&a[i]<='Z'))
		{
			if(a[i]=='z')
				a[i]='c';
			else if(a[i]=='Z')
				a[i]='C' ;
			else if((a[i]>='A')&&(a[i]<='Z'))
				a[i]+=32;
			else
				a[i]+=3;
		}
		}
		for(i=0;i<k;i++)
			printf("%c ",a[i]);
}

你看一下,经过运行,没有错误,有什么问题再HI我!
其他:先用if判断出小写字符的,a-w就直接用编码加3在输出。大写的就转化为小写在用前方法,或者是在编码那加3加26,非字母的直接输出。 #include"stdio.h"
void main()
{ 
	char s[81];
	int i,k;
	gets(s);
	for(i=0;s[i];i++)
		if(s[i]>='a'&&s[i]<='z')
		{	k=s[i]-'a';
			k=(k+3)%26;
			s[i]='a'+k;
		}
		else if(s[i]>='A'&&s[i]<='Z')
		{
			k=s[i]-'A';
			k=(k+3)%26;
			s[i]='a'+k;
		}
		printf("%s\n",s);
} #include <stdio.h>
void main()
{
	int i=0;
	char s[100],c;
	while((c=getchar())!='@')
	{	if(c>='A'&&c<='Z')c+=32;//如果c是大写字母则转换成小写字母
		if(c>='a'&&c<='z')c=97+(c+3-97)%26;//字母转换为后三个字母
		s[i++]=c;//存储字母
	}
	s[i]='\0';//存储结束符
	puts(s);//输出转换后的字符
}

上一个:求C/C++源代码!!!!!!!!!!!!!!!!!
下一个:C语言灰常简单的问题

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,