可怜的孩子。。。C语言学成这样。。。看来你上课不怎么认真啊,还是直接就翘课?
首先将你程序中不合理的地方给你指出来如下:
#include
main()//主函数无返回值时,最好写成 void main()
{
char p(char str[]);//这是什么???函数声明应该置于主函数外部,头文件下
char str[81];
gets(str);
printf("%s",p(str));//这个错的太离谱,程序是一个逻辑严密的创造性事物,不要轻易想当然,函数p()有返回值么?
}
char p(char str[])
{
char b[81],c;//c是用来干嘛的?
int i;
for(i=0;str[i]!='\0';i++)
{
if(str[i]>='a'&&str[i]<='z')
b[i]=str[i]-32;//b[i]数组显得多余,可以直接覆盖原数组就行,否则将带来参数传递上的麻烦,这个问题你可以多想想为什么。
else
b[i]=str[i];
}
}
编程是一项创造性的活动,你应该多投入点精力在其中,你会发现真的很有趣,如下给你提供正确的程序:
#include
#include
void p(char str[]);//函数声明
void main()
{
char str[81];
printf("please input a string:\n");
gets(str);
p(str);
printf("%s\n",str);
}
void p(char str[])
{
int i;
for(i=0;str[i]!='\0';i++)
{
if(str[i]>='a'&&str[i]<='z')
str[i]=str[i]-32;
}
return;
}
#include
#include
int main()
{
char p(char str[]);
char str[81];
gets(str);
printf("%s",p(str));
return 0;
}
char *p(char str[])
{
int i;
for(i=0;str[i]!='\0';i++)
{
if(str[i]>='a'&&str[i]<='z')
str[i]=str[i]-32;
}
return str;
}