用C语言编辑,输入一个英文句子,删除句子的前导空格和后导空格,并使单词之间只有一个空格。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用C语言编辑,输入一个英文句子,删除句子的前导空格和后导空格,并使单词之间只有一个空格。相关的知识,希望对你有一定的参考价值。

char *cp = " your input world ";
char buf[512] = 0;
int i = 0;
int world = 0;
while(*cp != \'\\0\')
//删除句子的前导空格和多余的中间空格
for(;(*cp == \' \' || *cp == \'\\t\' ) && *cp != \'\\0\'; cp++);
for(;(*cp != \' \' && *cp != \'\\t\' ) && *cp != \'\\0\'; cp++)
buf[i++]=*cp;

if(*cp == \'\\0\')
buf[i]=\'\\0\';
break;
else
buf[i++]=*cp;


//删除句子的后导空格
if(i>1 && (buf[i-1] == \' \' || buf[i-1] == \'\\t\'))
buf[i-1]=\'\\0\';

printf("%s\\n",buf);
参考技术A 是不是这个?
输入一个英语句子: l lll lllll lllll l llll
l lll lllll lllll l llll

#include <stdio.h>

void main()

char t[100];char w[100];
printf("输入一个英语句子:");
gets(t);
int n=0,i,j=0;
while(t[n]!=0)n++;
for(i=0;i<n;i++)
if((t[i]<='z'&&t[i]>='a')||(t[i]<='Z'&&t[i]>='A'))
w[j]=t[i];j++;
if(t[i]==' '&&t[i+1]!=' ')
w[j]=t[i];j++;

w[j]=0;
if(w[0]==' ')
n=0;while(w[n]!=0)n++;
for(i=0;i<n-1;i++)w[i]=w[i+1];
printf("%s\n",w);本回答被提问者采纳
参考技术B #include <stdio.h>
#include <string.h>

int main(void)

char aa[1024];
char *p = NULL;

memset(aa, 0x00, sizeof(aa));
gets(aa);

/* 删除尾部空格 */
p = &aa[strlen(aa) - 1];
while(' ' == *p--)

p[1] = '\0';


/* 删除头部空格 */
p = aa;
while(' ' == *p++);
p--;
strcpy(aa, p);

/* 删除连续空格 */
while(NULL != (p = strstr(aa, " ")))

strcpy(p, &p[1]);


printf("%s\n", aa);

return 0;
参考技术C #include <stdio.h>
#include <stdlib.h>

char word[100];

int main()
//freopen("s.in","r",stdin);
//freopen("s.out","w",stdout);
scanf("%s",word);
printf("%s",word);
while(scanf("%s",word)!=EOF)
printf(" %s",word);

printf("\n");
return 0;

我表示我只是分不够过来混分的...

英文单词数量统计

英文单词数量统计

题目内容:

输入一个英文句子,句子中的单词用空格隔开,隔开单词的空格可能不止一个,现要求去掉单词之间多余的空格,使得两个单词之间只有一个空格,且句子开头无空格,再统计句子中单词的个数并输出。

 

输入格式:

输入占一行,是一个包含空格的英文句子,以回车结束

 

输出格式:

输出包括两行,第一行是去掉多余空格后的英文句子;第二行是一个数值,表示句子中单词的个数。

 

输入样例:

      I  am        happy.

 

输出样例:

I  am  happy.

3

 1 #include <iostream>
 2 using namespace std;
 3 #define N 250
 4 
 5 int main()
 6 
 7     char str[N] = "";
 8     char *p = str,*p1=str;
 9     gets(str);
10     int count = 0;
11     
12     while(*p)
13     
14         if(*p!= )
15                     
16             *p1++ = *p;
17             if(*(p+1)== ||!(*(p+1)))
18             
19                 count++;
20                 *p1++ = -;
21             
22         
23         p++;
24     
25     *(p1-1)=\0;
26     
27     cout<<str<<endl;
28     cout<<count<<endl;
29   
30     return 0;
31 

 

时间类

题目内容:

设计一个时间类(class Time),其中有表示“时、分、秒”的数据成员,设计初始化3个数据成员的构造函数,实参缺省时均初始化为0;设计拷贝构造函数,用一个已经存在的Time对象初始化正在创建的新对象;设计成员函数SetTime设置时间的值;设计成员函数Print以24小时格式输出时间(如“09:20:45”、“14:30:00”)。注意,若表示时、分、秒的数据不在合理范围内,则将不合理的数据取0值。以下是主函数:
int main()

  int h,m,s;
  cin>>h>>m>>s;    //从键盘依次输入时、分、秒的值
  Time t1(h);
  t1.Print();
  t1.SetTime(h,m,s);
  t1.Print();
  Time t2(t1);
  t2.Print();
  return 0;

 

输入格式:

输入3个整型数,分别表示时、分、秒,数据之间以空格隔开。

 

输出格式:

输出包括三行,每行都是一个以24小时格式输出的时间。

 

输入样例:

4 50 66

 

输出样例:

04:00:00

04:50:00

04:50:00

 

请注意:提交代码时,需要完整的程序,即除了类的设计,还需要包括以上主函数。

 1 #include <iostream>
 2 #include <iomanip>
 3 using namespace std;
 4 
 5 class Time
 6     int hour,minute,second;
 7 public:
 8     Time(int h=0,int m=0,int s=0)
 9         if(h>=24) h=0;
10         if(m>=60) m = 0;
11         if(s>=60) s = 0;
12         hour = h;
13         minute = m;
14         second = s;
15     
16     Time(const Time &t)
17     
18         hour = t.hour;
19         minute = t.minute;
20         second = t.second;
21     
22     void SetTime(int h,int m,int s)
23         if(h>=24) h=0;
24         if(m>=60) m = 0;
25         if(s>=60) s = 0;
26         hour = h;
27         minute = m;
28         second = s;
29     
30     void Print()
31         cout<<setw(2)<<setfill(0)<<hour<<":";
32         cout<<setw(2)<<setfill(0)<<minute<<":";
33         cout<<setw(2)<<setfill(0)<<second<<endl;    
34     
35 ;
36 int main()
37 
38     int h,m,s;
39     cin>>h>>m>>s;    //从键盘依次输入时、分、秒的值
40     Time t1(h);
41     t1.Print();
42     t1.SetTime(h,m,s);
43     t1.Print();
44     Time t2(t1);
45     t2.Print();
46   
47     return 0;
48 

 

以上是关于用C语言编辑,输入一个英文句子,删除句子的前导空格和后导空格,并使单词之间只有一个空格。的主要内容,如果未能解决你的问题,请参考以下文章

C语言:统计输入的一行英文句子中的字母及单词个数,带注解!

ZZNUOJ_用C语言编写程序实现1136:首字母变大写(附完整源码)

LeetCode 2042. 检查句子中的数字是否递增

C语言:输入一行字符,统计其中有多少个单词,单词之间用空格分隔开

快乐水题1816. 截断句子

LeetCode 2042. 检查句子中的数字是否递增