黑马程序员技术交流社区
标题: c语言问题求助 [打印本页]
作者: 77媛儿 时间: 2014-3-7 11:52
标题: c语言问题求助
#include<stdio.h>
int main()
{
int i=0;
int len=0;
int max=0;
int j=0;
int m=0;
char a[100];
printf("输入一个只含有字母和空格的字符串,间隔用空格分开");
gets(a);
for (i=0;a!='\0'; i++)
{
if (a!=' ')
{
len++;
continue;
}
if (len>max)
{
max=len;
j=i-len;
m=i;
len=0;
}
}
for (i=j; i<m; i++) {
printf("%c",a);
}
printf("字符串中最长单词为%d\n",max);
}
为什么我加上最后的for循环,max的值就变了呢。
作者: 77媛儿 时间: 2014-3-7 11:53
最后一个循环应该是 printf("%c",a[i]);
作者: apple_victor 时间: 2014-3-7 13:07
主要是 for (i=j; i<m; i++) {
printf("%c",a);
}这段代码,打印printf("%c",a);时候应该把a换成a[i],由于a是一个字符串数组。
你可以打印Log进行试试,那段代码的问题。
作者: 77媛儿 时间: 2014-3-7 13:23
代码在复制粘贴的时候a[i]的中括号没带过来,不好意思,我要问的不是这个问题
作者: 脸皮猴 时间: 2014-3-7 15:02
本帖最后由 脸皮猴 于 2014-3-7 16:58 编辑
/*
你程序里面那个len不能在if里面清除!!因为要是你的MAX比len大的时候,那你的len就没法清除了。还有我帮你修改了下,能考虑到结尾的字符串了·
*/
#include<stdio.h>
int main()
{
int i=0;
int len=0;
int max=0;
int j=0;
int m=0;
char a[100];
printf("输入一个只含有字母和空格的字符串,间隔用空格分开");
gets(a);
for (i=0;i<strlen(a); i++)
{
if(a!=' '&&a[i+1]!='\0')
{
len++;//如果当前的字符不是空且不是最后一个字符则长度加1结束当次for循环
continue;
}
if(a[i+1]=='\0'&&a!=' ')
{
//如果当前字符是最后一个字符且当前字符不是空格的时候让下标i加1 长度len也要加1
i++;
len++;
}
//如果当前记录字符串的长度大于之前最大字符串的长度
if(len>max)
{
//保留最长字符串的长度
max = len;
//保留最长字符串的起始下标
j = i-len;
//保留最长字符串的结尾下标
m = i - 1;
//将长度清0
} len = 0;
}
printf("字符串中最长单词为%d\n",max);
printf("最长的字符串是:");
//打印最长字符串
for (i=j; i<=m; i++)
{
printf("%c",a);
}
printf("\n");
}
作者: Monkey·D·Chas 时间: 2014-3-8 09:29
在定义的时候 你的a是数组所以最后输出的时候你应该也输出数组
for (i=j; i<m; i++) {
printf("%c",a[i]);
}c 语言中没有直接输出数组的 所以需要用for循环每次输出一个!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |