请教一下还有2个错误点在哪

7-80 单词长度
你的程序要读入一行文本,其中以空格分隔为若干个单词,以.结束。你要输出每个单词的长度。这里的单词与语言无关,可以包括各种符号,比如it's算一个单词,长度为4。注意,行中可能出现连续的空格;最后的.不计算在内。

输入格式:
输入在一行中给出一行文本,以.结束

提示:用scanf("%c",);来读入一个字符,直到读到.为止。

输出格式:
在一行中输出这行文本对应的单词的长度,每个长度之间以空格隔开,行末没有最后的空格。

输入样例:
It's great to see you here.
输出样例:
4 5 2 3 3 4

#include<stdio.h>
int main(){
    int cnt=0;
    char c;
    while((c=getchar())!='.'){
        if(c==' '){
            if(cnt==0){
                continue;
            }
            printf("%d ",cnt); 
            cnt=0;
            continue;
        }
        cnt++;        
    }
    printf("%d",cnt);
}

img

这么改,供参考:

#include<stdio.h>
int main() {
    int cnt = 0, k = 0;
    char c;
    while (scanf("%c", &c) && c != '.') {
        if (c == ' ') {
            if (cnt)
                printf(k++ ? " %d" : "%d", cnt);
            cnt = 0;
        }
        else
            cnt++;
    }
    if (cnt)
        printf(k ? " %d" : "%d", cnt);
    return 0;
}
  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7605349
  • 你也可以参考下这篇文章:[C语言编程练习][20]初始化顺序表(顺序表中元素为整型),里边的元素是1,2,3,然后通过scanf读取一个元素(假如插入的是6),插入到第2个位置,打印输出顺序表
  • 除此之外, 这篇博客: 【C语言上机练习题目-代码+运行结果】中的 2.3 输入三角形三边长 ,求三角形周长和 面积 。用scanf输入数据,输出计算结果,输出时要求有文字说明,取消书店后两位小数。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
    • 源代码
    # include <stdio.h>
    # include <math.h>
    
    int main ()
    {
    	float a,b,c,l,s,p;
    	printf("请输入三角形三边:");
    	scanf ( "%f%f%f",&a,&b,&c);
    	if (a+b>c&&a+c>b&&b+c>a&&a-b<c&&a-c<b&&b-c<a)//三角形成立的条件是 任意两边和大于第三边,任意两边差小于第三边
    	{
    	l=a+b+c;
    	p=l/2;
    	s=sqrt(p*(p-a)*(p-b)*(p-c));
    	printf("\n三角形三边分别为:\n \na=%7.2f\tb=%7.2f\tc=%7.2f\n\n",a,b,c);
    	printf("三角形的边长为:%7.2f\n\n三角形的面积为:%7.2f\n\n",l,s);
    
    	}
    	else
    		printf("三边不能构成三角形\n");
    	return 0;
    }
    
    
    • 运行结果
      构成三角形的情况
      在这里插入图片描述

    不能构成三角形的情况
    在这里插入图片描述


  • 以下回答由chatgpt基于相关博客总结生成:

    根据问题描述,主要是编写一个程序来统计单词的长度,代码实现如下:

    #include <stdio.h>
    #include <string.h>
    
    int main () {
        char sentence[100];
        printf("请输入一行文本:");
        scanf("%[^\n]", sentence);  // 使用%[^\n]来读取一行文本,遇到换行符\n结束
        int len = strlen(sentence);
        int count = 0;
        int wordLength = 0;
        for (int i = 0; i < len; i++) {
            if (sentence[i] == ' ' || sentence[i] == '.') {
                if (wordLength > 0) {
                    printf("%d ", wordLength);
                    count++;
                }
                wordLength = 0;
            } else {
                wordLength++;
            }
        }
        if (count == 0) {
            printf("没有单词\n");
        }
        return 0;
    }
    

    代码解释:

    • 首先声明一个字符数组sentence用来存储输入的文本,长度为100。
    • 使用scanf函数和%[^\n]格式串读取一行文本,%[^\n]表示读取除了回车符之外的所有字符,遇到换行符\n结束。
    • 使用strlen函数获取字符串的长度。
    • 使用循环遍历字符串,当遇到空格或者句号时,表示一个单词结束,此时将单词的长度wordLength打印出来,并将wordLength重置为0。
    • 最后判断是否有单词被统计,如果没有,则输出"没有单词"。

    注意事项:

    • 由于需要读取一行文本,所以在读取文本之前需要清空输入缓冲区,可以在scanf之前加入getchar语句来清空缓冲区。
    • 代码中使用了strlen函数和字符串操作,所以需要包含头文件string.h
    • 代码中使用了strlen函数和scanf函数,所以需要包含头文件stdio.h
    输入一行文本,示例:It's great to see you here.
    输出单词的长度,示例:4 5 2 3 3 4
    

    以上为单词长度统计的代码及解答,希望能对你有所帮助。如果有疑问,请及时追问。