C语言程序设计-(何钦铭-颜晖-)课后习题答案-浙江科学技术出版社
习题参考答案 习题一
1. /*在 C 语言中,下列标识符中哪些是合法的,哪些不合法?”*/
合法:total, _debug, Counter1, begin_
不合法:Large&Tall
2. /*写出流程图,求 1~100 中能被 6 整除的所有整数之和*/
3. /*写出源程序,求 1~100 中能被 6 整除的所有整数之和”。*/
#include
void main()
{
int sum=0, i;
for(i=1; i<=100; i++)
if( i%6==0) sum =sum+i;
printf(“sum=%d”, sum);
}
4. /*画流程图,判别整数 n 是否是素数*/
习题参考答案 习题十
1. 选择题
(1) A
(2 ) C (由于p 指向 x, 等式p≡&x, *p≡x 成立. 故&*p≡&x≡p)
(3 ) B (int c[]={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 错。*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() 中无效。 main()和 p() 中分
别定义了各自的局部变量 x,y 。在void p( int *x, int y) 中x 是指针形式,表示按地址传递,则 p 中的 *x 就是 main() 中的
x ;另一形参y 是普通变量形式,p 对 y 的修改不影响main() 中的y 的值。
变量 在函数 p() 中的取值 在 main()中的取值
x 23 (++*x) 3 (受p()影响)
y 32(y--) 3 (不受p()影响)
z 45 (z=*x+y=3+2) 4 (不受p()影响)
(2 ) udent
注:s+2=&s[2], 当作为printf() 中对应“%s ”的输出参数时,表示从 s[2]开始输出,直到字符串结束)
(3 ) HappyNewYear
注: 1. for(s=pa, n=0; *s!='\0'; ++s, ++n); //求字符串 pa 的有效长度n, 相当于:
n=0;
for( s=pa; *s!=’\0’; ++s)
++n;
// n=12
2. for(s=pa, i=0; i