- 1、本文档共60页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C语言二级_函数、数组、指针等的整理和课后题解答
第一个try(x,y,z)中的xyz是实参,中的xyz是形参,因为是void,没有return,所以无返回值,所以输出的(4)仍是2,3,0。
转换就是实参-----形参-----return------实参。
xy是实参,有值,是10,20。ab是形参,(1)(4)中的xy不能换为ab,因为没有定义的ab不能用。此处没有return,所以(4)不能输出交换后的ab值。
7-7
先读懂题意,这个主函数是一定要写出来的,关键在看返回值怎么弄。注意(1)程序开始一定要有主函数的额定义,。(2)中可以加上==1,但是因为if判断时就是1和0,所以此处不用写上1。(3)下面的a是形参。(4)for循环控制着if和return 0,在for---if---return 0执行完了才会执行return1 。如果在return1 前面加上else的话,那么就会循环一次而判断一次,就输出一个0,不会整个循环完后返回1或0 。(5)两个return的时候只执行一个return。如条件成立的时候,执行return0,不成立的时候执行return1。
不断。。。需要用循环,那么是用while还是for,则看:若是当。。。则用while,如果是一个范围,则用while,若果是对次数什么的限制的话,就是用for。不断输出结果,所以putchar(c)是放在和c=myupper(c)一样额括号内,如果是吧putchar(c)放在括号外面的话,就不会不断输出,只会输出一个,且是最后一个。只要接受到的不是@,那么while久会一直循环。
7-9
这个程序里没有实参和形参,是可以的,可以独立完成自己的事儿,不用实参传给形参。这个程序也可以不用定义函数,直接把循环写在主函数中。
说明:7.1A,从主函数开始。B、可以在程序的任意位置,如果实在main函数后面的话,记得开始要在函数最初的地方有个函数说明的语句。
7.2 如果函数没有说明格式的话,默认的是int型。
7.3括号里是逗号表达式,所以两个括号,算是两个实参。
i=0,s=1
i=1, s=1+1
i=2,s=1+1+0.5
把每次s返回的值给a,那么a+=f(i)就是这三个s相加,最后等于5.5,还是float型。
里头不能写*pa,*pb,因为scanf里头是取地址,如a。pa和pb就是地址了,若加上*,那么就成了地址里的内容了。
printf应该换成scanf。是选的x,y,是地址,取址。
这是通过地址实现的函数调用,可以改为通过指针的方式,
p,q指向x,y,其实还是地址,不过是用指针实现的。
8-9
(1)
(2)
中是真的把2、3、0传递给了中的xyz,后面的xyz也可以换成abc等其他变量。实参传递给形参的是值。自定义函数中换的是abc的值,并没有换xyz的值,没有return,所以到主函数之后还是没有换xyz的值。
中形参是指针,传给,那么指针ab指向的是xy地址里的内容,所以在自定义函数中指针的值互换了,那么就是把xy地址中的内容互换了,所以最终到主函数之后,xy的值还是互换了。指针是变量,并没有实值,指向的是地址值,是个数。
实参是地址,则形参是指针,函数中又调用了函数,调用了两个函数,迭代。中的ab是否有*:当传递的是地址值x,y时,只写a,b就行;当传递的是地址中的值(即指针)x,y时,ab要加上*。
这个是集变量定义和赋值于一身,所以是对的,但是要是只是写*pk=k就是错的,要么*pk=*(k),要么pk=k。
**k是指指向指针*k的指针是。8.9中j是a。
当一个指针还没有指向一个具体的变量地址时,对它进行的赋值都是不合法的。
第九章 数组
9-4课
#includestdio.h
main()
{
int a[10];
int i;
for(i=0;i10;i++)
{scanf(%d,a[i]);
printf(a[i]=%d\n,a[i]);}
}
如果没有蓝色的这两个括号,这个程序就不能输入一个输出一个,因为for循环只控制最近的。a[i]这个有了指针后很少用,还可以把a[i]换成指针,如下面这个程序所示。
虽然输出的是10个数,但其实指针并没有移动,根本就没有输出这么多数,只有a[0]接受到了,首地址嘛。所以要再加上一个for循环,控制输出。
#includestdio.h
main()
{
int a[10];
int i,*p;
p=a;
for(i=0;i10;i++)
scanf(%d,p++);
for(i=0;i10;i++) 若这个for没有,那么最后的输出就不会都出现。
printf(a[%d]=%d ,i,a[i]);
}
9-5
输出部分是输出一个数判断一次,取余10时是否为零,
文档评论(0)