c语言,已知有一个字符串,字符串中单词由各种符号分割,试逆序输出每个单词

作者&投稿:运栏 (若有异议请与网页底部的电邮联系)
c语言,已知有一个字符串,字符串中单词由各种符号分割,试逆序输出每个单词。~

#include#includeint main(){ char spit[4]; char str[100]; int len,p,q; printf("请输入字符串:
"); scanf("%s",str); printf("请输入4种(可小于)分隔符:
"); scanf("%s",spit); printf("处理结果为:
"); len=strlen(str); p=q=len-1; while(p>=0) { if(str[p]!=spit[0]&&str[p]!=spit[1]&&str[p]!=spit[2]&&str[p]!=spit[3]) p--; else { int i=p+1; for(;ip+1) printf(" "); q=--p; } } if(q>=0) for(int i=0;i<=q;i++) printf("%c",str[i]); printf("
");}
该方式的优点:边扫描边输出,没有额外的内存负担。
算法思想:通过p和q两个指针,从字符串后面往前扫描,扫描不是分隔符p++,如果是分隔符,那么就输出p与q之间的字符串,然后把p和q同时指向分隔符前面的字符串, 继续扫描。跳出循环后,输出最后一组数据(如果有数据的话,判断方式q>=0)

没按你的要求,我自己写了一个,,,满意望采纳...
#include
#include
int main()
{
char s[3000],c[1000][20]={0};//c[j]来储存单词,k是单词中的字母
int i,j=0,k=0;
gets(s);
for(i=0; i<strlen(s); i++)
{
if(s[i]==' ')
{
j++; //遇空格换下一个单词,k归零
k=0;
continue;
}
c[j][k]=s[i];
k++;
}
for(i=j; i>=0; i--)//逆序输出
printf("%s ",c[i]);
}

#include <stdio.h>
#include <string.h>
void reversePrintWordsInString(const char * str)
{
 int l;
 l=strlen(str);
 int i,j;
 int p=l,q=l;
 for(i=0;i<l;i++)
 {
  if(str[i]>96&&str[i]<123)
  {
   p=i;
   goto loop1;
  }
 }
loop1:for(j=p;j<l;j++)
   {
    if(str[j]<97||str[j]>122)
    {
     q=j;
     goto loop2;
    }
   }
loop2:if(q!=l)
   {
    const char *t=str+q;
    reversePrintWordsInString(t);
   }
   printf("\"");
   for(i=p;i<q;i++)
   {
    printf("%c",str[i]);
   }
   printf("\"");
}
void main()
{
 char str[100];
 scanf("%s",&str);
 reversePrintWordsInString(str);
 
}//望采纳



从古到今,为什么一种语言只能有一种文字去表达?
一般来说,各个民族都有自己的语言,语言是民族的重要特征之一。汉语、英语、西班牙语、俄语、阿拉伯语、法语是世界上的主要语言,也是联合国的工作语言。汉语是全球母语人口最多的语言,英语是全球使用最广泛的语言。语言和文字是两个概念,往往是先有语言,后产生文字。 语言的三要素是语音、语法和词汇,...

易语言如何利用关键字查找一个文本内容,然后把包含这个关键字的完整内...
寻找文本命令 然后用文本替换方法替换出来 或者用正则匹配出来 再懒一点的话 可以用模块 有一些模块可以直接取指定文本的内容出来的

微信不回和只回一个字,哪个更伤人?为什么?
其实不回信息还有在一种情况下还是有好处的,比如,当一个不喜欢的人追求你,不停的给你发信息,这时候,选择不回信息,时间一长他知道你的意思,也就不会再过多的打扰你。 所以,综上我觉得微信不回和只回一个字的时候,要看当时的具体意境环境,不过个人觉得回一个比较伤人,总有种被敷衍的感觉。 我觉得微信不回...

sql语言,有一个成绩单表,已知学生姓名,如何查询名次?
1、创建测试表,create table test_score(name varchar2(20), score number);2、插入测试数据 insert into test_score values('张三', 85);insert into test_score values('李四', 90);insert into test_score values('王二', 95);insert into test_score values('吴七', 83);insert into ...

...小框框不见了,而且用智能全拼输入拼音后,只显示一个字?
如果是98,你可以这样做:开始〉设置〉控制面板〉输入法 把“在任务栏上启用指示器”打上对钩就可以了 关于智能全拼输入拼音后,只显示一个字的问题(估计你的意思是看不见被选字),你可以再打开一个窗口,按ALT+Tab切换一下,再切换到你输入汉字的窗口中,就可以选字了。参考资料:脑袋 ...

八面玲珑的说话艺术
让自己成为“字字值千金”的人 言之有术:要把话说好 生活离不开语言。话说得巧、说得好,生活才能多姿多彩。言之有术的人能将对他人的关怀说得温暖、甜蜜;不会刀子嘴豆腐心,惹人厌烦;言之有术的人能将话说进人的心坎里,让人乐于接受...学会说话的技巧,做一个能把话说好、会说好话的人,生活才能多一分精彩...

C语言初学者必学必会的C语言必背代码
13、C语言必背代码之查找 在一个字串s1中查找一子串s2,若存在则返回子串在主串中的起始位置,不存在则返回-1。14、C语言必背代码,用指针变量输出结构体数组元素。15、C语言必背代码之十五 建立一个有三个结点的简单链表。16、C语言必背代码之冒泡排序 冒泡排序,从小到大,排序后结果输出到屏幕...

关于汇编语言的一个基础问题
如果这个数组没有保存的内容,你直接在把-1写到0b00h-0b01h这个字里面,如果有内容,你把里面的内容顺序往高地址移一个字,再把-1写到第一个字里。

在C语言中,‘1'、1、“1”有什么区别,他们在内存中分别...
'1'是一个字符,为char型数据,它在内存中占1个字节,即一个ASCII码(值为0x30),并由char型变量名直接指向。如char ch = '1'。1是一个int型数据,在内存中占四个连续的字节,并由int型变量名直接指向。如:int i=1."1"是一个字符串,以一个ASCII码(0x30)加一个空字符('\\0')保存,由char*型指针指向。

为什么汉语是世界上最难学的语言之一?
因为汉语的历史非常悠久,是一古门老的语言,并且同一个字表达的意思,语调,音调经过变化后都会不一样,这个就让很多欧美人感到望而却步,并且汉字要把它写好是很难的,不是中华文化圈的国家,根本写不好。大家都知道汉语是世界上使用人数最多的语言,同时也是历史非常悠久的一种语言,因为如今我国的...

华坪县15222669758: c语言,已知有一个字符串,字符串中单词由各种符号分割,试逆序输出每个单词 -
象石安度: #include void reversePrintWordsInString(const char * str) { int l; l=strlen(str); int i,j; int p=l,q=l; for(i=0;i { if(str[i]>96&&str[i] { p=i; goto loop1; } } loop1:for(j=p;j { if(str[j]122) { q=j; goto loop2; } } loop2:if(q!=l) { const char *t=str+q; reversePrintWordsInString...

华坪县15222669758: c语言编程在一个已知的字符串中查找最长单词,假定字符串中只含字母和空格,空格用来分隔不同单词 -
象石安度: #include<stdio.h>#include<string.h>#define M 1000 int main() { int low; // 单词的起始下标 int high; // 单词的结束位置 int i; // 循环变量int count; // 统计最长单词的长度 int temp; // 中间变量int low_temp; int high_temp; char p[M]; // 存储有...

华坪县15222669758: C语言 - 删除字符串中的字符. -
象石安度: c语言中书写删除字符串中某个字符的程序的具体操作步骤如下: 1、编写头函数,包括“#include <stdio.h>.”与“#include <string.h>.“. 2、定义两个相同容量的字符串储存的变量 char a【100】; char b【100】.以及整数变量 int c;int i=0,j...

华坪县15222669758: 用c语言编程实现“有一个字符串,今输入一个字符,将字符串中该字符删掉” -
象石安度: #include void Delete( char a[] , int n , char del ) { int i,j; for( i = 0 ; i{ if(a[i]==del) { for(j = i ; j{ a[j] = a[j+1]; } i--; } } } int main() { char s[10000],c; while( gets(s) ) { c = getchar(); Delete( s, strlen(s) , c ); puts(s); gets(s); } return 0; }

华坪县15222669758: C语言:有一个字符串,包含n各字符.写一个函数将此字符串中从第m个字符处开始的全部字符复制成另一个字符 -
象石安度: 已运行成功.#include <stdio.h>#include <string.h>#define N 80 void fun(char a[N],int m) {char *p1,b[N];int i,l; p1=a;i=1;l=0; while(i<m){i++;p1++;} while(*p1!='\0') {b[l]=*p1; p1++; l++; } b[l]='\0'; puts(b); } main() {char a[N];int m,n; printf("\nEnter a ...

华坪县15222669758: 编程一个已知的字符串中查找最长字符.假定字符串中只含有字母和空格,空格用来分隔不同单词. -
象石安度: // 假定字符串以','、'.'、' '和'"'为分隔符#include int main() { int i,len = 0,maxlen = 0; char *p,*pt,s[1024],subs[100]; printf("请输入字符串: "); gets(s); for(pt = s;*pt != '\0';pt++) { if((*pt != ',') && (*pt != '.') && (*pt != ' ') && (*pt != '"') && (*pt != '\...

华坪县15222669758: c语言统计将已知字符串中数字符的个数;请纠正程序中存在错误, -
象石安度: #include<stdio.h> int digits(char *s) {int c=0;while(*s!='\0')//这儿改了一下{if(*s >='0'&&*s<='9')//字符串中的数字要看成是字符c++;s++;} return c; } void main() { char s[80]; printf("请输入一行字符\n"); gets(s); printf("字符长度是:%d\n",digits(s)); }

华坪县15222669758: c语言 删除字符串中的一个字符 -
象石安度: #include "stdio.h" main() {char a[50],ch; int i,j; printf("输入字符串:"); scanf("%s",a); fflush(stdin); printf("输入要删的字符:"); scanf("%c",&ch); for(i=0,j=0;i

华坪县15222669758: C语言如何取一串字符串中的某个字符 -
象石安度: C中的字符串就是一个字符数组. 如: char s[10]="wo shi SB"; char c; 取最左边的字符,就是c=s[0];

华坪县15222669758: 有一个字符串,内有若干字符,今输入一个字符要求将字符串中的该字符删去 -
象石安度: 字符串:abcdefabcab 输入字符:a 操作字符串…… 字符串变为:bcdefbcb(没a了)#include<stdio.h>void del(char s[],char c){ int i=0,j; while(s[i]!='\0') { if(s[i]==c) { j=i; while(s[j]!='\0') { s[j]=s[j 1]; j ; } } else i ; }}main(){ char str[100]; char c; puts("请...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网