第七章习题参考答案
一、选择题
B D D A A B D C C B
二、问答题
1. p[2][3]、 (*(p+2))[3]、*(*(p+2)+3)
2. 传地址和传值;第一个参数是指向型如函数(* int (float,char))的指针,按地址传递的方式传递;第二个参数按值传递。
3. 用new分配数组空间时,需要用[]指明数组的大小;delete运算符释放内存时,如果是数组空间,需要用delete []的形式。
4. 本题印刷有误,应为“for(i=3;i>=0;i--,i--)”
一、变量p是指针数组;
二、B
三、L
四、SO
五、LO
5.
一、1、3、4、5、7
二、3、4
三、1、5、7
三、阅读程序,回答问题
1.
*p:60
60,50,40,30,20,
20,30,40,50,60,
*p:30
2.
将程序中for(i=0;i<9;;i++)改为for(i=0;i<6;i++),则输出为:
Sum=30
Sum=34
Sum=21;
30,0,34
21,0,3
四、完善程序题
float()函数1.
①int n
②n==1
③x+1
④a
2.
①sum+a[i];
②return i;
③data,sizeof(data)/4,x,s或data,9,x,s
④index==-1
⑤data[index]或x
⑥index+1
五、程序设计题
1.
#include <iostream.h>
#include <string.h>
void catlog(char *s1, char *s2,char *s3)
{
while(*s3++=*s1++);
s3--;
while(*s3++=*s2++);
}
void main()
{
char s1[]="I am a student,";
char s2[]="You are a teacher!";
int n=strlen(s1)+strlen(s2)+1;
char *p=new char [n];
catlog(s1,s2,p);
cout<<p<<endl;
delete[] p;
}
2.
#include <iostream.h>
void insert(float * &p,float x,int n)
{
float *p1;
if(n==1){
p1=new float[n];
p1[n-1]=x;
p=p1;
return;
}
else{
p1=new float[n];
for(int i=n-2;i>=0;i--){
if(x>=p[i]){
for(int j=0;j<=i;j++)p1[j]=p[j];
p1[i+1]=x;
for(j=i+2;j<n;j++)p1[j]=p[j-1];
delete []p;
p=p1;
return ;
}
}
for(i=1;i<n;i++)p1[i]=p[i-1];
p1[0]=x;
delete []p;
p=p1;
return;
}
}
void main()
{
float *p;
float x;
int n=0;
cout<<"请输入要插入数组的实数:";cin>>x;
while(x!=-1){
n++;
insert(p,x,n);
cout<<"请输入要插入数组的实数:";
cin>>x;
}
for(int j=0;j<n;j++)
cout<<p[j]<<endl;
delete[] p;
}
3.
#include <iostream.h>
void main()
{
int num[26]={0};
char str[100];
cin>>str;
int i=0;
while(str[i]){
if(str[i]<97)str[i]+=32;
num[str[i]-97]++;
i++;
}
for(i=0;i<26;i++)
if(num[i])
cout<<char(i+97)<<'='<<num[i]<<endl;
}
4.
student *ssort(student *head)
{ //本排序算法为:
// 1.定义一个空的指针head1;
// 2.从head链取下一个节点p;
// 3.将p插入到head1中去
// 4.重复2、3,直到head为空。
student *head1=NULL,*p,*p1,*p2;
while(head)
{ p=head; //取下head链首结点
head=head->next;
p->next=NULL;
if(head1==NULL) head1=p;
else
{ p1=p2=head1;
while(p2&&p2->num<p->num) //在head1中查适合p->num的位置
{ p1=p2;p2=p2->next; }
if(p1==head1)head1=p; //插在链首
else p1->next=p; //插在链中或链尾
p->next=p2;
}
}
return head1;
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论