航空机务工作总结:请c高手帮忙

来源:百度文库 编辑:查人人中国名人网 时间:2024/03/29 19:16:53
#define CHANGE(j) 1*j
char convert (char)
main()
{int x,i;
char a[];
gets(a);
scanf("%d",&x);
for (i=0;CHANGE(x)==1,a[i]!='\0';i++)
{printf("%s",convert(a[i]));}
for (i=0;CHANGE(x)==0,a[i]!='\0';i++)
{printf ("%s",convert(a[i]));
}
convert(char y)
{char y;
if ('y'>=97 && 'y'<=123)
{if ('y'==97) y='z';}
else y=y-1;
return(y);
}

declaration syntax error
请问到底是哪里错了

你的错误有以下一些:
一.convert函数:
1.char convert (char)函数声明,这是一个语句,所以后面必须要有个分号";".
2.函数定义第二行char y是多余的,因为在第一行参数表里已经有char y了,重复定义是错误的.
3.if ('y'>=97 && 'y'<=123)中y不不应该加单引号,加单引号表示字符y,不加单引号才表示字符变量y.
4.if ('y'>=97 && 'y'<=123)中后面应该是y<=122.
5.{if ('y'==97) y='z';} 语句中两边大括号要去掉,因为后面的else语句是和此语句中if结合的.
二.主函数
1.没有头文件.
2.在最后面没有结束的大括号 } .
3.printf语句中要用%c输出字符,而不是用%s输出字符串.
4.在for循环里中间的判断表达式CHANGE(x)==1,a[i]!='\0';这是一个逗号运算式,其值为a[i]!='\0'的值,CHANGE(x)==1对程序没有任何影响,所以x量就没有用了.两个循环语句相当于一样的.如果输入b,Z则输出aa.

错误就以上这么多,看起来你似乎是一个初学者.
看我打这么多累了够戗的分上, 你就给我点追加分吧.
你如果以后还要学C语言的话可以把QQ告诉我,我比较喜欢帮助师弟们解决问题.

我再加一点,就是楼上的运行出错原因是我上诉的主函数第三个错误.

char convert (char y);/*加 ; */

main()
{int x,i;
char a[]; /*需要大小*/
gets(a);
scanf("%d",&x);
for (i=0;CHANGE(x)==1,a[i]!='\0';i++)
{printf("%s",convert(a[i]));}
for (i=0;CHANGE(x)==0,a[i]!='\0';i++)
{printf ("%s",convert(a[i])); }/*少花括号*/
}
char convert(char y) /*没有定义返回值类型*/
{/*char y; 多余*/
if ('y'>=97 && 'y'<=123)
{if ('y'==97) y='z';}
else y=y-1;
return(y);
}

申明函数错误....
char convert (char)
是原形的话应放在main的花括号内及调它(convert)的语句前。
一般也可直接在main前定义出函数的全部(还有,行参自动定义了,不能再在函数内定义)...
还有,数组要给长度。
如下可过gcc编译,但是执行会出错,自己看看是不是思想有问题(不过我是随意给的输入,或许不合程序意思),自己拿去看看吧。
#define CHANGE(j) 1*j
char convert(char y)
{
if ('y'>=97 && 'y'<=123)
{if ('y'==97) y='z';}
else y=y-1;
return(y);
}
main()
{int x,i;
char a[20];
gets(a);
scanf("%d",&x);
for (i=0;CHANGE(x)==1,a[i]!='\0';i++)
{printf("%s",convert(a[i]));}
for (i=0;CHANGE(x)==0,a[i]!='\0';i++)
{printf ("%s",convert(a[i]));
}