c语言有人会吗? 20

做很久了,还是不行... 做很久了,还是不行 展开
 我来答
xgn911
2022-11-11 · TA获得超过1363个赞
知道小有建树答主
回答量:1493
采纳率:96%
帮助的人:641万
展开全部

使用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;

}

紫薇参星
科技发烧友

2022-11-10 · 有一些普通的科技小锦囊
知道大有可为答主
回答量:5983
采纳率:92%
帮助的人:3537万
展开全部

按照题目要求编写的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;

}

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dream030607
2022-11-11 · 超过27用户采纳过TA的回答
知道答主
回答量:91
采纳率:88%
帮助的人:11.4万
展开全部
#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;

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式