只是数字在变
#include "stdio.h"
#include "ctype.h"
main()
{
char str[80],a[80]={0};
int i=1,j=0,b;
scanf("%c\0",&str[0]);
while(scanf("%c\0",&str[i])&&str[i++]!='\n');
i=0;
while(str[i]!='\n'){
if(isalpha(str[i]))
{
for(b=0;b<4;b++)
if(str[i]==('a'+b)) {a[j]='z'-b;break;}
if(str[i]!=('a'+b))
a[j]=str[i]-4;
}
if(isdigit(str[i])) a[j]=((str[i]-48+2)%10)+48;
b=j;
j++;
if(isspace(str[i])) j=b;
i++;
}
printf("%s\n",a);
getch();
}
这下可以了,以前那个空格多了就错了,这个可以的哦,另外红色的是a--z,循环改过的,中午走太急忘了那个字母循环了,
[此贴子已经被作者于2007-6-21 19:15:13编辑过]
还有楼上那位大哥的好像不行的,wintc,tc2.0都不通过的,,我改了下但是不对。
而且运行结果错误......
#include<stdio.h>
#include<ctype.h>
void main()
{
int count=0,n,i;/*要知道在tc里同等级定义变量是不能由执行过语句分开的,你怎么能够说对呢?!!!*/
char c,h[100],s[100];
printf("%s\n","Enter a line of text:");
while((c=getchar())!='\n')
{
s[count++]=c;
}
s[count]='\0';
puts(s);
n=0;
for(i=0;i<=count;i++)
{
int j=0;
if((s[i]>=65)&&(s[i]<=90)) j=1;
if((s[i]>=97)&&(s[i]<=122)) j=2;
if((s[i]>=48)&&(s[i]<=55)) j=3;
if((s[i]==56)||(s[i]==57)) j=4;
if(isspace(s[i])) j=5;
switch(j)
{
case 1:
h[i-n]=s[i]-4;break;
case 2:
h[i-n]=s[i]-4;break;
case 3:
h[i-n]=s[i]+2;break;
case 4:
h[i-n]=s[i]-8;break;
case 5:
n++;break;
default:
h[i-n]=s[i];break;
}
}
h[i-n-1]='\0';
puts(h);
return ;
}
[此贴子已经被作者于2007-6-21 19:51:59编辑过]