C程序设计第1-7章部分习题参考答案 下载本文

}

第六章

6_1 基础部分习题

6_1_2 正确。p+2指向字符串”CD”的起始地址,因此strcat(a, p+2)是将CD连接到字符数组a中字符串”abc”的末尾,从而构成字符串”abcCD”存放在字符数组a中。 6_1_4 正确。 6_1_6 14,13 p=a+5; 使得p指向数组a中下标为5的元素。p+1表示下标为6的数组元素的地址,而*(p+1)即表示该数组元素,*p+1表示将下标为5的元素值加1(注意运算符的优先级)。 6_1_8 *(p+3) 做该题要看懂题意。要求不移动指针变量p,即不能通过赋值运算或者自加自减运算改变p的值;要求通过指针变量p引用值为e的数组元素,则意味着用包含指针变量p的表达式来表示数组的第5个元素c[4]。p=c+1表示将指针变量指向数组的第2个元素,要获取c[4]元素的地址用包含p的表达式来表示即p+3,而*(p+3)才表示c[4]。 6_1_10 负数 (如果题目没有特别要求,则应该写出具体值即-32) 6_1_12 6_1_14

#include main() { int a[11]={20,18,16,14,12,10,8,6,4,2}, k, *p, *q; for(p=a; p-a<10; p++) printf(\ printf(\ printf(\ p=a; while(*p>=k && p-a<10) p++; for(q=a+10; q>=p; q--) *q=*(q-1); *p=k; for(p=a; p-a<11; p++) printf(\ printf(\}

6_1_16

#include main() { char a[50], *p, *q; gets(a); p=q=a; while(*q!='\\0') p++; q--;

while(p=q) printf(\是回文\\n\ else printf(\不是回文\\n\}

第七章

7_1 基础部分习题 7_1_2 正确。 7_1_4 错误。

通过return语句只能从函数内部传出一个值。出现多个return语句的时候(通常有分支结构存在时),函数只会执行其中一个return语句,因为一旦执行了return语句就会退出函数的执行。 7_1_6 8 注意避免与自加自减运算符的混淆,不要误认为两次调用函数fun的返回值都是5。 7_1_8

int mysearch(int *p, int x, int n) { int i, m=10; for(i=0; i

7_1_10 略 7_1_12

#include int f(float x) { if(x>0) return 1; else return 0; }

main() { float x; scanf(“%f”, &x);

printf(“%d”, f(x)); }

7_1_14

#include

void DelMax(int a[], int n); main() { int a[10], i; for(i=0; i<10; i++) scanf(\ DelMax(a,10); for(i=0; i<9; i++) printf(\}

void DelMax(int a[], int n) { int max=0, i; for(i=1; i

7_1_16 略 7_1_18

#include #define M 5 #define N 3

float f(int a[][N]); main() { int a[M][N], i, j; for(i=0; i

float f(int a[M][N])

{ int i, j; float sum=0; for(i=0; i

7_2 提高部分习题 7_2_2 正确

7_2_4 7 12 7 7 7 7 14 7_2_6

#include float sum(int m) { if(1==m) return 1; else return m+sum(m-1); }

main() { int n; scanf(“%d”, &n); printf(“%f\\n”, sum(n)); }