C语言程序设计清华大学马秀丽刘志妩科后习题9答案.doc
文本预览下载声明
习 题 9
二 编程题
main(){
int n,*a,i,j,t=0;
scanf(%d,n);
for(i=0;in;i++)
for(j=0;jn;j++)
scanf(%d,a+i*n+j);
for(i=0;in;i++)
for(j=0;ji;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);
}
运行结果:
有一个字符串,包含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(;ij;i++,j--)
{ch=*(s+i);
*(s+i)=*(s+j);*(s+j)=ch;
}printf(%s,s);
}
运行结果:
编写一个函数,对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);}
运行结果:
题目:有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;in-1;i++)
scanf(%d,,number[i]);
scanf(%d,number[n-1]);
move(number,n,m);
for(i=0;in-1;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;parray;p--)
*p=*(p-1);
*array=array_end;
m--;
if(m0) move(array,n,m);
}
运行结果:
输入n个整数,将最小数与第一个数对换,把最大数与最后一个数对换
main()
{
int number[10];
input(number);
max_min(number);
output(number);
}
input(number)
int number[10];
{int i;
for(i=0;i9;i++)
scanf(%d,,number[i]);
scanf(%d,number[9]);
}
max_min(array)
int array[10];
{int *max,*min,k,l;
int *p,*arr_end;
arr_end=array+10;
max=min=array;
for(p=array+1;parr_end;p++)
if(*p*max) max=p;
else if(*p*min) min=p;
k=*max;
l=*min;
*p=array[0];array[0]=l;l=*p;
*p=array[9];array[9]=k;k=*p;
return;
}
output(array)
int array[10];
{ int *p;
for(p=array;parray+9;p++)
printf(%d,,*p);
printf(%
显示全部