}
4.下列程序的功能是:
将字符串中连续出现的数字作为一个整数取出依次存入b数组中。
如,若字符串的值为“45as8hgyu86trfg2356hfg877df”,则b数组中的各元素值分别是整数45、8、86、2356、8。
函数的返回值为所提取整数的个数。
#include
intselect(char*a,int*b);
voidmain()
{inti,count,b[10];
chara[100];
cout<<"pleaseinputasting:
";
cin.getline((20));
count=select((21));
cout<<"count="<for(i=0;icout<
}
intselect(char*a,int*b){
char*p=(22);
intj=0;
while((23)){
b[j]=0;
while((*p<='0'||*p>='9')&&*p!
=0)
p++;
while((24)&&*p!
=0)
b[j]=(25);
j++;
}
returnj-1;
}
5.以下程序的功能是:
从给出的字符串中依次取出被空格隔开的子串,将各子串分别存入动态分配的内存空间,让一维指针数组的各指针依次指向各个动态空间中的子串。
例如:
给出的字符串为“copyfile.datfile2.dat”,则p指针数组分别指向子串“copy”,“file.dat”、“file2.dat”。
#include
intfun(char*s,char*p[]);
voidmain()
{char*p[5],s[100]="copyfile.datfile2.dat";
intn;
n=fun(s,p);
cout<<"n="<for(inti=0;ifor(i=0;iintfun(char*s,char*p[]){
inti=0;
char*ps,*ts;
while(*s){
while(*s=='')s++;//跳过子串前的空格
ps= (28) ;
while(*s!
=''&&*s!
=0)s++;//扫描子串
if(ps
p[i]=ts=(29);
while(ps
*ts=0;i++;}}
return(31);}
6.下列程序的功能是:
将两个已升序排好的数组合并为一个升序排序的数组(归并)。
程序说明:
两数组合并时,从第一个元素开始比较两数组对应元素,小的取下来,顺序放入新的数组;取下所指元素的下标后移,再比较,依此类推;直到其中一个数组的元素已全部放入新数组,再把另一数组余下的元素全部顺序放入新数组,归并完成。
#include
voidmain()
{inta[5]={1,3,5,7,9},b[5]={2,4,6,8,10},c[10],i,k,j=0;
for(i=0,k=0;i<5&&k<5;)
{if(a[i]
elsec[j]=b[k],k++,j++;}
if((34))
for(;k<5;k++)c[j++]=b[k];
else
for(;i<5;i++)c[j++]=(35);for(j=0;j<10;j++)//输出
{cout<if((j+1)%5==0)cout<7.下面程序先建立一条单向链表,其中第一个结点包含产品名称和产品类别。
然后对链表中的结点按产品类别进行分类,将同类型产品的结点放到一起。
具体实现过程为:
依次从已已建立的单向链表中取下一个结点,根据该结点的产品类别值插入到新的链表中。
插入过程为:
若新链表上已有该产品类别的结点,则将该结点插入到同类别结点的最后一个结点的后面;否则,将该结点插入到新链表的最后一个结点的后面。
最后输出分类后链表上各个结点的信息。
[程序](5分)
#include
#include
structnode{
charproduct[20];//产品名称
charcategory[10];//产品类别
nude*next;
}
(16)create(void){//创建链表
nodetemp,*p2=&temp;
charproduct[20],category[10];
while
(1){
cout<<"输入产品名称和类别,当输入产品名称为end时,表示结束:
";
cin>>product>>category;
if(strcmp(product,"end")==0)break;
p2->next=newnode;
p2=p2->next;
strcpy(p2->product,product);
strcpy(p2->category,category);
}
(17)
returntemp.next;
}
voidprint(node*h){
while(h){
cout<product<<'\t'<category<h=h->