这里面的for循环哪里错了?

来源:百度知道 编辑:UC知道 时间:2024/05/03 02:20:42
#include <stdio.h>
main ()
{
char exchan(char a,int n);
char c[100];
int i;
printf("Please input the cryptic words\n");
scanf("%s",c);
printf("the cryptic words:%s\n",c);
for( i=0;i<=100;i++)
{if(c[i]>=97&&c[i]<=122) {c[i]=exchan(c[i],i);printf("%c",c[i]);}
else if((c[i]='\0')&&(c[i+1]!='\0')) c[i]='\0';
else break;
}
char exchan(char a,int n)
{if(a>=65&&a<=90) {a=155-a;return(a);}/*过程来自于65+(26-(c-65))-1*/
else if(a>=97&&a<=122) {a=219-a;return(a);}/*过程来自于97+(26-(c-97))-1*/
else return(a);
}
printf("\n");
}
是在VC++ 6.0 下编译的

/* 我对你的代码做了如下修改和说明 */

#include <stdio.h>
void main(){
char exchan(char a);
char c[100];
int i;
printf("Please input the cryptic words\n");
scanf("%s", c);
printf("the cryptic words:%s\n", c);
for (i = 0; i <= 100; i++){ /* i <= 100; 应改为 i + 1 < 100; 原因在代码下面详述 */
if (c[i] >= 'a' && c[i] <= 'z'){
/* 倒置转换小写字母 */
c[i] = exchan(c[i]);
printf("%c", c[i]);
}
/* 下面的 2 句 else, 你究竟是要做什么? */
else if ((c[i] = '\0') && (c[i + 1] != '\0')) /* 错误: c[i]='\0' 你原意应是要用 == (双等号) 吧 */
c[i] = '\0';
else
break;
}
printf("\n");
}

char exchan(char a /* , int n */){ /* int n 是多余的参数,根本没使用 */
if (a >= 'A' && a <= 'Z'){
retur