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);
}
这么改,供参考:
#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;
}
# 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;
}
不能构成三角形的情况
根据问题描述,主要是编写一个程序来统计单词的长度,代码实现如下:
#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
以上为单词长度统计的代码及解答,希望能对你有所帮助。如果有疑问,请及时追问。