C语言字符串问题: 输入一个字符串,其中有空格,因此字符串被分为n个单词,要求输出全部单词中重复的字母

作者&投稿:达奚环 (若有异议请与网页底部的电邮联系)
C语言中输入字符串,里面有空格,怎么根据空格把字符串分开,并存在数组里?~

程序源码如下:
#include
#include
int main(void)
{
char str[1000];//定义一个字符串数组
char strnew[1000];//定义一个备用字符串数组
char m[] = " ";//定义空格变量
printf("请输入一串字符:");//文字提示输入字符串
gets(str);//输入字符串
char *p = strtok(str,m);//取str与m的指针
printf("%s
",p); //输出
p = strtok(NULL,m);
while(p) //遍历输出
{
printf("%s
",p); //输出字符串
p = strtok(NULL,m); //指向下一个
}
}
程序输出结果:


扩展资料:
C语言:输入一个字符串放入数组里,删除其中的空格
#include
#include
#define N 100
void main()
{
int i=0,j;
char c,str[N];
printf("输入字符串str:
");
while((c=getchar())!='
')
{
str[i]=c;//输入字符串
i++;
}
str[i]='\0';
for(i=0;str[i]!='\0';i++)
{
if(str[i]==' ')
{
for(j=i+1;str[j]!='\0';j++)
{
str[j-1]=str[j];
}
str[j]='\0';
}
else continue;
}
str[i-2]='\0';
printf("去掉空格后的字符串为:
");
for(i=0;str[i]!='\0';i++)
printf("%c",str[i]);
printf("
");
}

1、首先需要打开编程软件。

2、输入以下程序:#include int main(){ char str[40]; scanf("%s",&str); printf("%s",str); return 0;}。

3、然后按F5运行程序。

4、然后输入想要输入的字符串。

5、按回车键,就会弹出你输入的字符串。

6、注意字符串的大小,改变中括号中的数字改变输入字符串的大小。

#include <stdio.h>
#include <string.h>

int Div(char temp[256],char word[256][256])//划分单词
{
int n=0,i=0,j=0;
while(temp[i]!='\0')
{
if(temp[i]!=' ')
{
word[n][j++]=temp[i++];
}
else if(temp[i]==' ')//说明有一个单词
{
word[n][j]='\0';
j=0;
i++;
n++;
}
if(temp[i-1]==' '&&temp[i]==' ')//若有两个连续空格,则稍加处理一下
{
i++;
n--;
}
}
word[n][j]='\0';
return n;
}

int ZiMu(char word[256][256],int n,char ch[256])//查找不同单词中的相同字母
{
int i=0,j=0,k=0,m=0,p,q,mark;//mark是标记是否重复记录
for(i=0;i<=n;i++)
{
mark=0;
for(p=0;word[i][p]!='\0';p++)//从第一个单词分别与后面其它单词,一次类推
{
for(j=i+1;j<=n;j++)
{
for(k=0;word[j][k]!='\0';k++)
{
if(word[i][p]==word[j][k])
{
for(q=0;q<m;q++)//这个循环是为了使数组ch中字母不重复记录
{
if(word[i][p]==ch[q])
mark=1;//已经找到过该字母
}
if(mark==0)
{
ch[m++]=word[i][p];
}
}
}
}
}
}
return m;
}
void main()
{
char str[256],ch[256];
char word[256][256];
int i,m=0,n=0;
printf("请输入一个字符串:\n");
gets(str);
n=Div(str,word);
printf("共有%d个单词\n",n+1);
for(i=0;i<=n;i++)
printf("%s ",word[i]);
printf("\n");

m=ZiMu(word,n,ch);
if(m==0)
{
printf("没有重复字母!即 no!\n");
}
else
{
printf("全部单词中重复的字母如下:");
for(i=0;i<m;i++)
{
printf("%c ",ch[i]);
}
printf("\n");
}
}
/*程序已完成且VC6.0下运行成功,感觉应该完全符合你的要求,要是有什么问题,可以问我,我也是懂得一点,呵呵,你参考一下吧*/

做你这个题目,20分可赔大了:

#include <stdio.h>
#include <memory.h>

#define N 100
#define M 20

void main()
{
int i=0,j=0,k,l,m,count=0,countch=0;
char str[N],word[M][M],ch[M],*p;
int flag=0;

memset(str,'@',sizeof(char)*N);
memset(word,'@',sizeof(char)*M*M);
memset(ch,'@',sizeof(char)*M);

printf("请输入字符串: \n");
gets(str);

p=str;

while(*p!=NULL)
{
if(*p==' ')
{
word[i][j]='\0';
i++;
j=0;
count++;
p++;
continue;
}

word[i][j]=*p;
j++;
p++;
}

for(i=0;i<=count;i++)
{
for(j=0;word[i][j]!='@';j++)
{
flag=0;
for(k=0;k<=count;k++)
for(l=0;word[k][l]!='@';l++)
{
if(word[i][j]==word[k][l])
{
if((i!=k)&&(j!=l))
flag=1;
}
}
if(flag)
{
for(m=0;m<=countch;m++)
if(word[i][j] == ch[m]) break;

if(m>countch)
ch[countch++]=word[i][j];
}
}
}

if(countch>0)
{
printf("全部单词中重复的字母有:\n");

for(i=0;i<countch;i++)
{
printf("%c\n",ch[i]);
}
}
else printf("no\n");
}

#include < iostream >
#include <string>
//#include <cmath>
using namespace std;
int main()
{
char str[100];
int a[26];
int i,j,t=0;
for(i=0;i<26;i++)
{
a[i] = 0;
}
cin.getline(str,100,'\n');
for(i=0;str[i]!='\0';i++)
{
if('a'<=str[i]&&str[i]<='z')
{
j=str[i]-'a';
a[j]+=1;
}
}

for(i=0;i<26;i++)
{
if(a[i]>1)
{
cout<<char(i+'a');
t++;
}
}
if(0==t)
{
cout<<"NO"<<endl;
}

return 0;
}
//没写注解,有什么问题可以找我讨论的,百度hi我就行了


万源市19316971650: 在C语言中怎么输入一个字符串 -
成超来曲: 在c语言中存储一个字符串,一般有两种方法,一种是字符指针,一种是使用字符数组.比如: const char *str = "hello"; //使用字符串指针 const char str[] = "hello"; //使用字符数组 如果保存的字符串,需要修改.一般使用字符数组.比如: char path[256] = "c:\\windows\\"; strcat(path, "system32");

万源市19316971650: C语言上中怎么样直接输入输出一个字符串 -
成超来曲: C语言中字符串的输入和输出主要有两种方式: 输入使用:scanf("%s",a);对应的输出使用:printf("%s\n",a); 输入使用:gets(b);对应的输出使用:puts(b);字符串或串(String)是由数字、字母、下划线组成的一串字符.一般记为 s=...

万源市19316971650: 一个C语言字符串输入问题 -
成超来曲: 我也试了一下,没问题,你到底是什么问题,是要在s1或s2中输入空格吗?那么用gets函数;gets()函数用来从标准输入设备(键盘)读取字符串直到换行符结束,但换行符会被丢弃,然后在末尾添加'\0'字符. 其调用格式为:gets(s);其...

万源市19316971650: c语言 如何从键盘输入字符串?????? -
成超来曲: c语言从键盘输入字符串的步骤如下: 1.首先我们新建一个dev C++的项目. 2.接下来在项目中新建C语言程序文件. 3.然后在C语言文件中声明一个字节数组. 4.接下来我们通过printf函数提示用户输入字符串,通过scanf接收用户输入的字符串. 5.接着在通过printf函数输出用户输入的内容. 6.最后运行C语言程序,我们输入内容以后就可以输出了.这样就解决了c语言从键盘输入字符串的问题了.

万源市19316971650: C语言编程问题从键盘中输入一个字符串和一个字符,要求从字符串中删
成超来曲: #include int main() { char a[100]=""; char c=''; char * p=a; char * q=a; scanf("%s",a); printf("\n"); scanf("%c",&c); while(p!='\0'){ if(*p==c){ q=p; while(*q!='\0'){ *q=*(q+1); ++q; } } ++p; } printf("%s",a); return 0; }

万源市19316971650: C语言编程问题:输入一个字符串,再输入一个字符ab,将字符串中所有的ab字符删除后输出该字符串. -
成超来曲: 大致思考方法:定义三个字符串:str[], ab[], output[],str是输入的第一个字符串,output放的是最后的结果.设置两个下标 i,j.i指向第一个字符串,j指向第二个子符串;i每次向后移动一个位置,i往后的strlen(ab)个字符是不是和字符串ab匹配,如...

万源市19316971650: C语言输入字符串问题 -
成超来曲: while(scanf("%c",&a[i])==1)这里是以%c字符格式进行接受的,所以你输入11 12 13回车后,一个%c带走一个字符.而且目标数组a也是字符数组char a[100](这个100是最大容量,放的数据小雨100就可以,count起到计数的作用,或者说能...

万源市19316971650: C语言字符串问题: 输入一个字符串,其中有空格,因此字符串被分为n个单词,要求输出全部单词中重复的字母 -
成超来曲: #include <stdio.h>#include <string.h> int Div(char temp[256],char word[256][256])//划分单词 { int n=0,i=0,j=0; while(temp[i]!='\0') { if(temp[i]!=' ') { word[n][j++]=temp[i++]; } else if(temp[i]==' ')//说明有一个单词 { word[n][j]='\0'; j=0; i++; n++; } if(temp[i-1]=...

万源市19316971650: C语言题目,输入一个字符串,计算其有效长度. -
成超来曲: #include "stdio.h" int main() { char a[100]={0}; int i,sum=0; printf("Sample Input:\n"); gets(a); for(i=0;a[i]!='\0';i++) sum++; printf("Sample Output:\n"); printf("%d %s",sum,a); }

万源市19316971650: 快来看看啊!!!急求,,,,在线等!!c语言编程问题:输入一个字符串,将它反向输出. -
成超来曲: #include<stdio.h>#include<math.h> int main(void) { int i,len; char ichar[2]; char zchar[256]={0}; char fchar[256]={0}; printf("请输入字符串:"); i=0; while(1) { scanf("%c",&ichar); //ichar=getc(); if (ichar[0] == 10) break; zchar[i]=ichar[0]; i++; } ...

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