习题9答案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

习题9

一.选择题

9.1若有定义:intx,*p;则以下正确的赋值表达式是()。

(A) p=&x (B) p=x (C) *p=&x (D) *p=*x

9.2下述程序执行后,变量i的正确结果是()。

int i;

char*s=″a\045+045\b″;

for(i=0;*s++;i++);

(A) 7 (B) 8 (C) 9 (D) 10

9.3以下程序段的输出结果是( )。

charstr[12]={′s′,′t′,′d′,′i′,′o′};

printf(″%d\n″,strlen(str));

(A)5 (B) 6 (C) 11 (D) 12

9.4下列函数的功能是( )。

int fun(char*x){

char*y=x;

while(*y++);

return y-x-1;}

(A)求字符串的长度 (B)求字符串存放的位置

(B)比较两个字符串的大小 (D)将字符串x连接到字符串y后面

9.5执行下列程序段后,printf(″%c″,*(p+5))的值为( )。

charstr[]=″Hello″;

char*p;p=str;

(A)′o′(B)′\0′(C)不确定的值 (D)′o′的地址

9.6有以下的定义及语句:

int a[4][5];

int (*p)[5]=a;

则对数组a元素正确引用的表达式是( )。

(A)p+1 (B)*(p+3) (C)*(p+1)[2] (D)*(*p+1)+2.

二编程题

9.1编写一函数,判断N×N矩阵是否为上三角阵。上三角阵是指不含主对角线,下半三

角都是0的矩阵。

main(){

int n,*a,i,j,t=0;

scanf("%d",&n);

for(i=0;i

for(j=0;j

scanf("%d",a+i*n+j);

for(i=0;i

for(j=0;j

if (*(a+i*n+j)!=0) t=1;

if (t==0) printf("is xia san jiao fang zhen");

else printf("not is xia san jiao zhen");

}

运行结果:

9.2有一个字符串,包含n个字符,将字符串从第i个字符到第j个字符间的字符逆置。程序代码:

#include "stdlib.h"

#include "stdio.h"

void main()

{char *s,ch;

int i,j;

printf("input string s\n");

scanf("%s",s);

printf("input i j\n");

scanf("%d %d",&i,&j);

for(;i

{ch=*(s+i);

*(s+i)=*(s+j);*(s+j)=ch;

}printf("%s",s);

}

运行结果:

9.3编写一个函数,对n个字符开辟连续的存储空间,此函数返回一个指针(地址)指

向字符串开始的空间。

# define NULL 0

# define NEWSIZE 1000/*足够大的连续存储空间*/

static char newbuf[NEWSIZE];

static char *newp=newbuf;/*可用存储区的起始地址的指针*/

char *new(n)/*定义开辟n个字符连续存储空间的函数,此函数返回一个指针(地址)*/ int n;

{ if(newp+n<=newbuf+NEWSIZE)/*存储空间够用*/

{ newp+=n;/*起始地址指向新地方*/

return(newp-n);}/*返回n个字节连续空间的开始地址*/

else return(NULL);}/*如果存储空间不够,返回空指针*/

main()

{ char *p;

p=new(100);/*调用函数开辟100个字符的连续可用空间*/

printf("%u",p);}

运行结果:

9.4题目:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成

最前面的m个数

.程序源代码:

main()

{

int number[20],n,m,i;

printf("the total numbers is:");

scanf("%d",&n);

printf("back m:");

scanf("%d",&m);

for(i=0;i

scanf("%d,",&number[i]);

scanf("%d",&number[n-1]);

move(number,n,m);

for(i=0;i

printf("%d,",number[i]);

printf("%d",number[n-1]);

}

move(array,n,m)

int n,m,array[20];

{

int *p,array_end;

array_end=*(array+n-1);

for(p=array+n-1;p>array;p--)

*p=*(p-1);

*array=array_end;

m--;

if(m>0) move(array,n,m);

}

运行结果:

9.5输入n个整数,将最小数与第一个数对换,把最大数与最后一个数对换程序源代码:

main()

{

int number[10];

input(number);

max_min(number);

output(number);

}

input(number)

相关文档
最新文档