.编写函数,将给定字符串的大写字符转换为小写字符。在主函数中输入字符串并调用函数,输出转换后字符串.

#include<stdio.h>
char tran(char a[100])
{
char b[100];
int L,j;
L=strlen(a);
for(j=0;j<L;j++)
{b[j]=a[j]+32;}
b[L]='\0';
return b[100];
}
main()
{
char n[100],k[100];
printf("请输入一个大写字符串:\n");
scanf("%s",n);
k[100]=tran(n[100]);
printf("转换为小写字符串为:\n");
printf("%s\n",k);
return 0;
}
请问上面的程序出了什么问题?谢谢~~

1、initcap(str)完成对字符首字母大写的转换。

2、在进行首字母大写进行转换的时候如果字符串包含多个单词同样只转换各个单词的首字母。

3、lower函数的作用是将字符串全部转换为小写。

4、upper函数的作用是将字符串全部转换为大写。

5、想把HELLO World 字符首字母大写,其它变为小写。这个时候可以使用嵌套函数。

6、也可以直接使用initcap函数。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-12-15
#include<stdio.h>
#include<string.h>
char *tran(char a[100]) //返回的是地址,故用char *
{
char b[100];
int L,j;
L=strlen(a);
for(j=0;j<L;j++)
{b[j]=a[j]+32;}
b[L]='\0';
return b; //返回数组首地址即可。
}
int main()
{
char n[100],k[100];
printf("请输入一个大写字符串:\n");
scanf("%s",n);
strcpy( k , tran(n) ); //数组不能用=来赋值,字符串操作strcpy可以实现两个字符串的拷贝
printf("转换为小写字符串为:\n");
printf("%s\n",k);
return 0;
}
另:
在函数调用时,tran( ) 里面的参数需要传的是数组的首地址(即:数组名),而n[100]表示n数组中的第101个字符。追问

为什么我输入一个大写字符串,再回车不出结果呢?

追答

你用的是windows系统吧,不知道是什么编译器,在返回前加上个等待键就好了
int main()
{
char n[100],k[100];
printf("请输入一个大写字符串:\n");
scanf("%s",n);
strcpy( k , tran(n) ); //数组不能用=来赋值,字符串操作strcpy可以实现两个字符串的拷贝
printf("转换为小写字符串为:\n");
printf("%s\n",k);
getchar(); //这里加上这两个你再试试
getchar();
return 0;
}

追问

很遗憾。。。不好使。。。求大神指教。。。

追答

报告你的开发环境和测试图片!不然不好帮你解决

本回答被提问者和网友采纳
第2个回答  2013-05-10
缺少返回值!
相似回答