C语言课后习题答案(最终)(6)

2019-04-16 22:06

第6章 习 题

1. 若已定义int a = 8,*p = &a;则下列说法中不正确的是( )。

A. *p = a = 8 答:

D

B. *p

C. p

D. *&p

2. 若变量已正确定义并且指针p已经指向变量x,则&*p相当于( )。 A. x 答:

C

3. 若已定义int a[8] = {2,4,6,8,10,12,14,16};*p = a;则数组第2个元素”4”不可以表示为( )。

A. a[1] B. p[1] C. *p+1 D.*(p+1) 答:

4. 指向一个包含3个整型元素的一维数组的指针变量的定义形式为( )。 A.int (*p)[] 答:

5. 请任意输入10个整数,使用冒泡法排序方式将它们按从大到小的顺序输出。 答:

#define N 10 #include int main() {

int i,j;

int a[N],iTemp,*p; p = a;

printf(”\\nInput %d numbers:\\n”,N); for(i = 0;i < N;i++)

scanf(”%d”,p+i); for(j = 0;j < N-i;j++)

if(*(p+j)<*(p+j+1))

{

iTemp = *(p+j);

*(p+j) = *(p+j+1);

for(i = 0;i < N-1;i++) D

B.int *p[] C.int (*p[])

D.int (*p)[3]

C

B. p = &a

C. *&a = *p

D. *&a = &*a

}

}

*(p+j+1) = iTemp;

printf(”the sorted numbers are:\\n”); printf(”]”,*(p+i));

for(i = 0;i < N;i++) return 0;

6. 有一个二维数组a[3][4],其第3行第4列元素a[2][3]的正确表示方法为( )。 A.&a[2][3] 答: D

7. 以下语句或语句组中,正确的操作是( )。

A. char s[4] = ”abcde”; 答:

8. 阅读下列程序,写出程序运行的结果。

char s[] = ”ABC”; int main() {

} 答:

AABCBBCCC

9. 利用指针完成两个字符串的比较函数strcompare(),模拟完成系统函数strcmp()的功能。 答:

int strcompare(s1,s2)

{

int i,j;

for(i=0;s1[i]||s2[i]);i++)

if(s1[i]!=s2[i]&&s1[i]>s2[i])

return 1; return -1;

else if(s1[i]!=s2[i]&&s1[i]

for(p = s;p

printf(”%c%s”,*p,p); return 0; B和C

B. char *s; gets(s);

D. char s[5]; scanf(”%s”,&s);

C. char *s; s = ”abcde”;

B.a[2]+3

C.*(a+2)+3

D.*(a[2]+3)

}

return 0;

10. 设计一个反转字符串的函数reverse:void reverse(char *s); 它能将字符串的字符顺序反向重新排列。 答:

void reverse(char *s) /*使用中间变量*/ {

int len; int i;

len = strlen(s)-1; char cTemp;

for(i = 0; i < len-i; i++) {

cTemp = s[i]; s[i] = s[len-i]; s[len-i] = cTemp; }

ch[len+1] = 0; }

11. 阅读下列程序,写出程序运行的结果。 int main() { } 答:

11

12. 使用指针数组编写一个通用的英文月份名显示函数void display(int month)。 答:

#include #include int main() {

char *p,str[12][6] ={”Jan”,”Feb”,”March”,”Apr”,”May”,”June”, ”July”,”Aug”,”Sep”,”Oct”,”Nov”,”Dec”};

int a[12] = {1,3,5,7,9,11,13,15,17,19,21,23},*p[4],i; for(i = 0;i<4;i++)

p[i] = &a[i*3]; printf(”%d\\n”,p[1][2]); return 0;

}

int month;

scanf(”%d”,&month); p = str[month-1];

if(month <= 12&&month>0)

printf(”The Month is:%s\\n”,p); printf(”Error!\\n”); else

13. 请利用指针数组设计一个菜单管理程序,当输入字符串“save”、“open”、“quit”时,分别调用其处理函数,完成不同的工作。各处理函数的具体工作可以自行设定,比如可以仅仅显示出不同操作的提示等。 答:

#include int main() {

char *p[3]={”save”,”open”,”quit”}; char *s; int i;

printf(”input a string:\\n”); gets(s);

for(i=0;i<3;i++) if(strcmp(s,p[i])==0) f(i); return 0; }

f(int n) {

switch(n) {

case 0: printf(”this is save function!\\n”);break; case 1: printf(”this is open function!\\n”);break; case 2: printf(”this is quit function!\\n”);break; } }

14. 程序中对fun()函数有如下说明: void *fun(); 此说明的含义是( )。 A.fun()函数无返回值

B.fun()函数的返回值可以是任意的数据类型

C.fun()函数的返回值是无值型的指针类型 D.指针fun()指向一个函数,该函数无返回值 答:

15. 若有以下定义,int **pp,*p,a = 10,b = 20; 则下列程序段的输出结果是( )。

pp = &p; p = &a; p = &b;

printf(”%d,%d\\n”,*p,**pp); A.10,20 答:

D

16. 编写一个程序,通过指向指针的指针输出5个字符串。 答:

#include int main() {

int i,n=5;

char *cName[]={”Pascal”,”BASIC”,”C”,”FORTRAN”,”Computer design”};

char **p= cName; for(i=0;i

printf(”%s\\n”,*(p+i)); return 0; } 思考题

有30个人围成一圈,顺序排号。从第一个人开始报数(从1到4报数),凡是报到4的人退出圈子,最后留下的是原来的第几号。 答:

#include int main() {

int i,k,m,n,num[30],*p; printf(”\\nInput number:\\n”); scanf(”%d”,&n); p = num;

for(i = 0;i

B.10,10

C.20,10

D.20,20

C


C语言课后习题答案(最终)(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:青年员工培养方案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: