c语言有人会吗?

做很久了,还是不行

使用fgets依次读入每行内容,注意行尾的换行符'\n'也会读入

先判断读入的内容是否为"stop\n",是的话即跳出循环,停止输入

对于读入的该行字符串,使用while函数依次遍历每个字符

以空格作为单词的间隔统计每个单词的长度,保存其中最长的单词及对应的起始下标

最后输出每行单词的长度之和、每行最长单词即可

C代码如下:

运行结果如下:

输出符合样例,望采纳~

附源码:

#include <stdio.h>

#include <string.h>

#define N 105

int main() {

    char s[N];

    int i, j, cnts, start, maxlen, len;

    while (1) {

        memset(s, 0, N); // 初始化字符数组

        fgets(s, N, stdin);

        if (strcmp(s, "stop\n") == 0)

            break; // 输入stop停止,注意fgets会读入'\n'

        i = 0; cnts = 0; start = 0; maxlen = 0;

        while (s[i] != '\n') {

            len = 0; // 统计每个单词的长度

            while (s[i] != '\n' && s[i] != ' ') {

                len++;

                i++;

            }

            cnts += len;

            if (len > maxlen) {

                maxlen = len; // 保存最长单词的长度

                start = i - len; // i-1-start+1=len,保存最长单词的起始下标

            }

            if (s[i] == '\n')

                break; // 到达行尾

            while (s[i] == ' ') // 跳过单词间的空格

                i++;

        }

        printf("%d ", cnts);

        for (j = start; j < start + maxlen; j++) // 输出最长单词

            printf("%c", s[j]);

        printf("\n");

    }

    return 0;

}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2022-11-10

按照题目要求编写的C语言程序如下

#include<stdio.h>

#include<string.h>

int main(){

 char a[100],max[100],stop[]="stop";

 char *temp,*find;

 int maxlen=0,len,sum=0;

 fgets(a,100,stdin);

 find=strchr(a,'\n');

 if(find) *find='\0';

 while(strcmp(a,stop)!=0){

  temp=strtok(a," ");

  maxlen=0;

  sum=0;

  while(temp){

   len=strlen(temp);

   if(len>maxlen){

    maxlen=len;

    strcpy(max,temp);

   }

   sum=sum+len;

   temp=strtok(NULL," ");

  }

  printf("%d %s\n",sum,max);

  fgets(a,100,stdin);

  find=strchr(a,'\n');

  if(find) *find='\0';

 }

 return 0;

}

第2个回答  2022-11-11
#include<stdio.h>

#include<string.h>
int main(){
char s[100]="",s_longest[100]="";
int length=0;

do{
length+=strlen(s);

if(strlen(s)>strlen(s_longest)){

strcpy(s_longest,s);

}

scanf("%s",s);
}while(strcmp(s,"stop");

printf("%d %s",length,s_longest);

return 0;

}
相似回答