对题中要求的指针数组不太了解,不知道代码哪里出了问题。
在所给的10个单词中找出不包含元音字母(a,e,i,o,u)的单词,将符合条件的单词的个数以及这些单词按ASCII字典顺序输出。
⑴ 编写函数int FindNoVowel(char *str[],int num,char res[][20]),str指向的指针数组中保存若干单词字符串的首地址,num保存单词的个数,res指向的数组保存找到的符合条件的单词字符串,每行存放一个单词,要求将符合条件的单词按字典顺序存储,函数返回符合条件的单词个数。
⑵ 编写main()函数,声明数组并用测试数据初始化数组,调用函数FindNoVowel,将符合条件的所有单词按字典顺序输出,单词之间用空格隔开。
测试数据,10个字符串为:"ftp","qq","msn","internet","web","google","bbs","mp3","blog","ibm"
运行结果:bbs ftp mp3 msn qq
#include<stdio.h>
#include<string.h>
int FindNoVowel(char *str[][20],int num,char res[][20]);
int main()
{
char *str[20]={"ftp","qq","msn","internet","web","google","bbs","mp3","blog","ibm"};
char res[][20]={0};
int num=10,k,i;
k=FindNoVowel(str,num,res);
for(i=0;i<k;i++)
printf("%s",res[i]);
return 0;
}
int FindNoVowel(char *str[][20],int num,char res[][20])
{
int i,j,k=0,flag;
char temp[20];
for(i=0;i<num;i++)
{
flag=0;
for(j=0;j<strlen(str[i]);j++)
{
if(*(str[i]+j)=='a' || *(str[i]+j)=='e' || *(str[i]+j)=='i' || *(str[i]+j)=='o' || *(str[i]+j)=='u')
flag++;
}
if(flag==0)
{
strcpy(res[k],*str[i]);
k++;
}
}
for(i=0;i<k-1;i++)//字典序排序
for(j=0;j<9-k;j++)
{
if(strcmp(res[j],res[j+1])>0)
{
strcpy(temp,res[j]);
strcpy(res[j],res[j+1]);
strcpy(res[j+1],temp);
}
}
return k;
}
修改如下,供参考:
#include<stdio.h>
#include<string.h>
#define N 10
int FindNoVowel(char *str[],int num,char res[][20]);
int main()
{
char *str[20]={"ftp","qq","msn","internet","web","google","bbs","mp3","blog","ibm"};
char res [N][20]={0};
int num=N,k,i;
k=FindNoVowel(str,num,res);
for(i=0;i<k;i++)
printf("%s ",res[i]);
return 0;
}
int FindNoVowel(char *str[],int num,char res[][20])
{
int i,j,k=0,flag;
char temp[20];
for(i=0;i<num;i++)
{
flag=0;
for(j=0;j<strlen(*str);j++)
{
if(*(*str+j)=='a'||*(*str+j)=='e'||*(*str+j)=='i'
||*(*str+j)=='o'||*(*str+j)=='u')
{flag=1; break;}
}
if(flag==0)
{
strcpy(res[k],*str);
k++;
}
str++;
}
for(i=0;i<k-1;i++)//字典序排序
for(j=0;j<k-i-1;j++)
{
if(strcmp(res[j],res[j+1])>0)
{
strcpy(temp,res[j]);
strcpy(res[j],res[j+1]);
strcpy(res[j+1],temp);
}
}
return k;
}
需要调试一下看看,这么改了一下,不知道适不适合你用
#include<stdio.h>
#include<string.h>
int FindNoVowel(char *str[10],int num,char *res[10]);
int main()
{
char *str[10]={"ftp","qq","msn","internet","web","google","bbs","mp3","blog","ibm"};
char *res[10];
int num=10,k,i;
for(i=0;i<10;i++)
res[i] = new char[10];
k=FindNoVowel(str,num,res);
for(i=0;i<k;i++)
printf("%s\n",res[i]);
return 0;
}
int FindNoVowel(char* str[10],int num,char* res[10])
{
int i,j,k=0,flag;
char temp[20];
for(i=0;i<num;i++)
{
flag=0;
for(j=0;j<strlen(str[i]);j++)
{
if(*(str[i]+j)=='a' || *(str[i]+j)=='e' || *(str[i]+j)=='i' || *(str[i]+j)=='o' || *(str[i]+j)=='u')
flag++;
}
if(flag==0)
{
strcpy(res[k],str[i]);
k++;
}
}
for(i=0;i<k-1;i++)//字典序排序
for(j=0;j<k-i-1;j++)
{
if(strcmp(res[j],res[j+1])>0)
{
strcpy(temp,res[j]);
strcpy(res[j],res[j+1]);
strcpy(res[j+1],temp);
}
}
return k;
}
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps: 问答会员年卡【8折】购 ,限时加赠IT实体书,即可 享受50次 有问必答服务,了解详情>>>https://t.csdnimg.cn/RW5m