- 1、本文档共26页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
c语言第十一十二十三章课后题答案解读
11-1、
(*p)++表示:先取地址中的内容,将内容表示的数字进行自增运算。
*p++表示:先对p的地址自增运算,再取其中的内容。
结果:
每一句printf语句分析说明:
printf(%d,,*(++p));--------p自增取下一个地址,去除其中的内容为2
printf(%d,,*(p)++);--------引用p现在地址中的内容为2,在进行地址的自增运算
printf(%d,,*p);-------------引用地址的内容为3
printf(%d,,*p);------------应用现在的地址中的内容为3
printf(%d,,*p--);----------先引用p中的内容为3,再进行自减运算
printf(%d,,--(*p));--------先自减运算,再取内容为1
printf(%d\n,*p);-----------取p现在的地址中的内容为1
11-2
(1)
#include stdio.h
void Print(char *arr[],int len);
int main()
{
char *pArray[]={How,are,you};
int num=sizeof(pArray)/sizeof(int);
printf(Total string numbers = %d\n,num);
Print(pArray,num);
return 0;
}
void Print(int *arr[],int len)
{
int i;
for(i=0; ilen; i++)
{
printf(%s ,arr[i]);
}
printf(\n);
}
错误分析:指针数组中的元素为地址,是一个整型,所以应为 num=sizeof(pArray)/sizeof(int);
而不是除以sizeof(char)
结果:
(2)
#include stdio.h
void OutputArray(int *pa,int n);
void InputArray(int *pa,int n);
void main()
{
int a[5];
printf(Input five numbers:);
InputArray(a,5);
OutputArray(a,5);
return 0;
}
void InputArray(int *pa,int n)
{
int *a=pa;
for(; paa+n; pa++)
{
scanf(%d,pa);
}
}
void OutputArray(int *pa,int n)
{
int *a=pa;
for(; paa+n;pa++)
{
printf(%4d,*pa);
}
printf(\n);
}
结果:
错误分析:
For(; papa+n; pa++)的语句中将指针循环变量更改了,破坏了循环结构,所以在写循环时为了防止指针循环变量被修改,应重新定义一个变量来标记传入的指针值。
(3)、
#include stdio.h
#define STUD 30
#define COURSE 5
void Print(int *pScore,int sum[],float aver[],int m,int n);
void Total(int *pScore,int sum[],float aver[],int m,int n);
int main()
{
int i,j,m,n,score[STUD][COURSE],sum[STUD];
float aver[STUD];
printf(How many student?);
scanf(%d,m);
printf(How many course?);
scanf(%d,n);
printf(Input score:\n);
for(i=0; im; i++)
{
for(j=0; jn; j++)
{
scanf(%d,score[i][j]);
}
}
Total(*score,sum,aver,m,n);
Print(*score,sum,aver,m,n);
return 0;
}
void Total(int *pScore,int sum[],float aver[],int m,int n)
{
int i,j;
for(i=0; im; i++)
{
sum[i]=0;
for(j=0; jn;j++)
{
sum[i]=sum[i]+pScore[i*n+j];
}
aver[i]=(float)sum[i]/n;
}
}
vo
文档评论(0)