C语言字符串首字母大小写转换

默认分类 未结 1 1008
①顆☆星飘过
①顆☆星飘过 2023-03-16 21:32
1条回答
  • 2023-03-16 22:15

    基本也就只能这么做了,不过有问题是不是这个? if(a[0]>='A' && a[0]<'a')改成 if(a[0]>='A' && a[0]<='Z')就好了? ----------------------------------------------------这个问题是这里引起的:for(i=0; i<10 ;i++)因为字串默认是在\0就终止了,但是你非得把10个全都安%c输出,结果当然会比较诡异。改成:for(i=0;i<10 && a[i]!='\0';i++) //(或者b[i])就可以了。

    关键你没有理解字符数组和字符串的区别,你用的是字符数组,输入字符串,字符数组可用数组下标控制,而字符串要用结尾的结束字符‘\0’控制,具体的你去看看书吧,将你的代码与下面的代码进行对比,你就会发现错在哪了#include#includemain(){chara[10],b[10];gets(a);gets(b);if(a[0]>='a'&&a[0]<='z')a[0]-=32;elseif(a[0]>='A'&&a[0]<='Z')a[0]+=32;if(b[0]>='a'&&b[0]<='z')b[0]-=32;elseif(b[0]>='A'&&b[0]<='Z')b[0]+=32;puts(a);puts(b);}

    基本也就只能这么做了,不过有问题是不是这个?if(a[0]>='A'&&a[0]<'a')改成if(a[0]>='A'&&a[0]<='Z')就好了?----------------------------------------------------这个问题是这里引起的:for(i=0;i<10;i++)因为字串默认是在\0就终止了,但是你非得把10个全都安%c输出,结果当然会比较诡异。改成:for(i=0;i<10&&a[i]!='\0';i++)//(或者b[i])就可以了。

    关键你没有理解字符数组和字符串的区别,你用的是字符数组,输入字符串,字符数组可用数组下标控制,而字符串要用结尾的结束字符‘\0’控制,具体的你去看看书吧,将你的代码与下面的代码进行对比,你就会发现错在哪了#include#includemain(){ char a[10],b[10]; gets(a); gets(b); if(a[0]>='a'&&a[0]<='z') a[0]-=32; else if(a[0]>='A'&&a[0]<='Z') a[0]+=32; if(b[0]>='a'&&b[0]<='z') b[0]-=32; else if(b[0]>='A'&&b[0]<='Z') b[0]+=32; puts(a); puts(b);}

    做个循环即可输入后逐个判断数组中的字母,如果不是字母不处理,如果是小写字母不处理,如果是大写减32。 你没有判断字符是否是字母,应该把有效的字符限定在字母的范围内,否则应该输出一个指定的标示错误的字符

    0 讨论(0)
提交回复