.编写函数,将给定字符串的大写字符转换为小写字符。在主函数中输入字符串并调用函数,输出转换后字符串.
#include<stdio.h>chartran(chara[100]){charb[100];intL,j;L=strlen(a);for(j=0;j<L;j++){...
#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;
}
请问上面的程序出了什么问题?谢谢~~ 展开
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;
}
请问上面的程序出了什么问题?谢谢~~ 展开
3个回答
展开全部
#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个字符。
#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;
}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询