C语言二级,函数数组、指针等的整理和课后题解答.doc
文本预览下载声明
第一个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+
显示全部