资源描述:
《C语言程序设计 (何钦铭 颜晖 著)课后习题答案 浙江科学技术出版社.pdf》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、习题参考答案习题一1./*在C语言中,下列标识符中哪些是合法的,哪些不合法?”*/合法:total,_debug,Counter1,begin_不合法:Large&Tall2./*写出流程图,求1~100中能被6整除的所有整数之和*/3./*写出源程序,求1~100中能被6整除的所有整数之和”。*/#includevoidmain(){intsum=0,i;for(i=1;i<=100;i++)if(i%6==0)sum=sum+i;printf(“sum=%d”,sum);}4./*画流程图,判别整数n
2、是否是素数*/习题参考答案习题十1.选择题(1)A(2)C(由于p指向x,等式p≡&x,*p≡x成立.故&*p≡&x≡p)(3)B(intc[]={1,7,12};c[0]=1,c[1]=7,c[2]=12.而k=c,即k指向数组c的首元素c[0]。printf(“…”,*++k);输出参数*(++k)的值是*(k+1),即c[1])(4)D(对字符数组只能在定义的同时赋初值,但不能在定义之后再用‘=’赋值)(5)D(*p[3]是由3个整型指针组成的数组,p是数组名,代表该数组的基地址,是地址常量,不能对p赋值,故A,C
3、错。*p代表p[0]这个指针,a[0]是普通整型变量,两者不应互相赋值,故B错。p[0]=&a[0]或p[0]=a,都是正确的,作用是令p[0]这个指针指向数组a的首元素a[0])(6)D(指针数组元素p[3]是一个指针,指向a[3*3]=a[9],即*p[3]==a[9]而二维数组元素p[3][2]=*(p[3]+2)=*(&a[9]+2)=*(&a[11])=a[11])2./*写输出结果*/(1)3,2,5#3,3,4#注:z是全局变量,它在p()中有效,但在main()中另有与它同名的局部变量,所以在main()中
4、无效。main()和p()中分别定义了各自的局部变量x,y。在voidp(int*x,inty)中x是指针形式,表示按地址传递,则p中的*x就是main()中的x;另一形参y是普通变量形式,p对y的修改不影响main()中的y的值。变量在函数p()中的取值在main()中的取值x23(++*x)3(受p()影响)y32(y--)3(不受p()影响)z45(z=*x+y=3+2)4(不受p()影响)(2)udent注:s+2=&s[2],当作为printf()中对应“%s”的输出参数时,表示从s[2]开始输出,直到字符
5、串结束)(3)HappyNewYear注:1.for(s=pa,n=0;*s!=' ';++s,++n);//求字符串pa的有效长度n,相当于:n=0;for(s=pa;*s!=’ ’;++s)++n;//n=122.for(s=pa,i=0;i6、};定义了长度为4的字符指针数组,如下:s[][0]st[][1]st[][2]st[][3]st[][4]s[][5]st[0]one st[1]two st[2]three st[3]four st[3]+1表达式:*(st+3)+1=st[3]+1,这是一个地址值,即指向st[3]字符串”four”的第1号字符’o’由于输出格式是字符串‘%s’,所以输出的字符串是从st[3]+1这个地址开始,到遇见’ ’为止(5)<略,不做要求>3./*填空题*/(1)for(i=0;s[i]!=’ ’;i++)(2)v
7、oidf(char*s或chars[]){inti=0;while(s[i])i++;//令i指向字符串的最后一个有效字符,即while(s[i]!=’ ’)i++;for(;i>=0;i--)printf("%c",s[i]);//逆序输出}4.定义函数search(intlist[],intn,intx),在长度为n的数组list中查找元素x,并返回x在list中的下标。如果x在list中不存在,则返回-1.解法1:使用break语句intsearch(intlist[],intn,intx){inti,index=
8、-1;//index:x在list中的下标,目前尚未找到,因此初始化为-1for(i=0;i