|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
要求:
1.输入一个英文句子,你的程序将这个字符串按空格进行分割,返回由单词组成的二维数组。
2.分割后的结果存放在 result 二维数组中,这个二维数组的尺寸是根据用户输入的单词长度而定的。
3.不论是一个空格还是多个空格,你的程序都能够正确识别出单词来。
如:
我编写的程序代码:
- #include<stdio.h>
- int main()
- {
- char a[5][10];//存放输入的字符串
- int ch;
- int i=0,j=0;
- int flag=0;
- int row;
- int max=0;
-
- printf("请输入一个英文句子:");
-
- while((ch=getchar())!='\n');
- {
- if(ch!=' ')//只要输入的字符不是空格,字符就会被存放在a数组中
- {
- a[i][j++]=ch;//i为正在输入句子的第i个单词,j为该单词的第j个字母
- max=max>j?max:j;//记录最长单词的长度
- flag=1;//flag没有置0就说明还在输入第i个单词
- }
-
- if(flag&&(ch==' '))//表示第i个单词输入完毕
- {
- a[i][j]='\0';
- j=0;//准备记录下一个单词的长度
- i++;
- flag=0;//防止连续输入两个空格导致i++
- }
- }
-
- row=i-1;//记录输入的单词数量
-
- char result[row][max];//用来存放分割后的字符串
-
- for(i=0;i<row;i++)
- {
- for(j=0;j<max;j++)
- {
- result[i][j]=a[i][j];
- }
- }
-
- printf("分割结果已存放到result[%d][%d]的二维数组中...\n",row,max);
-
- printf("现在依次打印每个单词:");
-
- for(i=0;i<row;i++)
- {
- printf("%s\n",result[i]);
- }
- return 0;
- }
复制代码
无论输入什么内容,运行结果都是这样的:
求问是代码哪里写错了
为什么一定要放入二维数组?,一维数组外加一维指针数组效率更高!
- #include <stdio.h>
- int main(void)
- {
- char c , s[2048] , * p[512] ;
- int f , i , j ;
- for(f = i = j = 0 ; (c = getchar()) != '\n' ; ) {
- if(c == ' ' || c == '\t') {
- if(f) {
- s[i ++] = '\0' ;
- f = 0 ;
- }
- } else {
- if(! f) {
- p[j ++] = & s[i] ;
- f = 1 ;
- }
- s[i ++] = c ;
- }
- }
- if(f) s[i] = '\0' ;
- for(i = 0 ; i < j ; i ++) printf("%s\n" , p[i]) ;
- }
复制代码
编译、运行实况:
- D:\[00.Exerciese.2022]\C>g++ -o x x.c
- D:\[00.Exerciese.2022]\C>x
- I love FishC.com!
- I
- love
- FishC.com!
- D:\[00.Exerciese.2022]\C>
复制代码
|
|