puts遇到空格无法输出_输入一句英文,只包含字母和空格,如何输出这句英文中.....-黑马程序员技术交流社区...
//输入一句英文,只包含字母和空格,如何输出这句英文中的最长单词?再把每个单词的首字母转换成大写!
#include
#include
int main(int argc, const char * argv[])
{
//让用户输入一段英文,
printf("请输入一段英文:\n");
char chr[50]={'a'};
fgets(chr, 50, stdin);
if (chr[strlen(chr)-1]=='\n')
{
chr[strlen(chr)-1]=' ';
}
//声明一个二维字符数组用来保存字符单词
char ch[10][20]={'a'};
//声明一个数组用来保存/n的位置
int num[10] ={0};
//这里的思路是:让num[0]=0,方便下一步,将英文段中的空格下标全部找出来给整形数组赋值,通过空格的下标来将英文段的每个字母赋值给字符二维数组;
int j = 0;
for (int i = 0; i < 50; i++)
{
if (chr[i]==' ')
{
num[++j]=i;
}
}
//将一段英文中的内容赋值到二维数组中
for (int i = 1; i <= 10; i++)
{
int k = 0;//定义一个变量,每次让k从0开始
for (int j = num[i-1]; j
{
if (chr[j]!=' ')
{
ch[i-1][k++]=chr[j];
}
}
}
//声明一个指针变量用来指向二维数组的第0个元素,找出整个二维数组中的最长
char *t = ch[0];//因为字符数组的地址是常量无法改变,声明一个字符指针,首先指向第0行和其他行的字符串作比较,如果大于第0行就将长的字符串地址赋值给指针变量,输出指针变量就是最长字符串
for (int i = 1; i< 10; i++)
{
if (strlen(t)
{
t = ch[i];
}
}
printf("最长单词为:%s\n",t);
//转换为大写的思路就简单了,找到每一行的每一列的第一个元素,将他们减去32,就得到他们大写,再打印出来;
for (int i = 0; i < 10; i++)
{
*ch[i]=*ch[i]-32;
}
//循环输出时,会打印出其他代码,可以选择性的打印
for (int i = 0; i< 10; i++)
{
if (*ch[i]!='\340')
{
printf("%s ",ch[i]);
}
}
printf("\n");
return 0;
}
总结
以上是生活随笔为你收集整理的puts遇到空格无法输出_输入一句英文,只包含字母和空格,如何输出这句英文中.....-黑马程序员技术交流社区...的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 怎样完成梦幻西游“小雷音寺”剧情任务?
- 下一篇: jq获取同级元素_jq获取上级、同级、下