急求C语言高手中的高手,帮忙把这两道大题编个程序,一定要按要求来啊!!!
1.利用指向一维数组的指针作为函数参数具体实现:(1)求数组最大元素及其所在位置。函数首部为:voidfun_max(int*x,int*max,int*p,intn),...
1.利用指向一维数组的指针作为函数参数具体实现:
(1)求数组最大元素及其所在位置。函数首部为:void fun_max(int * x, int * max, int *p,int n),其中x为指向数组的指针,max为指向最大元素的指针,p为指向最大元素位置的指针,n为数组元素的长度。
(2)利用选择排序对数组元素按照从小到大排序。
函数首部为:void sort(int * x, int n) ,其中x为指向数组的指针,n为数组元素的长度。
2. 写四个函数,要求利用指针实现字符串的复制、连接、比较和求字符串的长度。
函数首部分别为:void str_copy(char *str1 ,char *str2)
void str_cat(char *str1 ,char *str2)
void str_cmp(char *str1 ,char *str2)
int str_len(char *str1 ,char *str2) 展开
(1)求数组最大元素及其所在位置。函数首部为:void fun_max(int * x, int * max, int *p,int n),其中x为指向数组的指针,max为指向最大元素的指针,p为指向最大元素位置的指针,n为数组元素的长度。
(2)利用选择排序对数组元素按照从小到大排序。
函数首部为:void sort(int * x, int n) ,其中x为指向数组的指针,n为数组元素的长度。
2. 写四个函数,要求利用指针实现字符串的复制、连接、比较和求字符串的长度。
函数首部分别为:void str_copy(char *str1 ,char *str2)
void str_cat(char *str1 ,char *str2)
void str_cmp(char *str1 ,char *str2)
int str_len(char *str1 ,char *str2) 展开
展开全部
#include "stdio.h"//
#include "stdlib.h"//
#include <time.h>//
int *fun_max(int *x,int *max,int *p,int n){//原来void不好处理,改为int*
int i;
for(*max=i=0;i<n;i++){
if(*max<*(x+i)){
*max=*(x+i);
p=x+i;
}
}
return p;
}
void sort(int *x,int n){
int i,j,k;
for(i=0;i<n-1;i++){
k=i;
for(j=k+1;j<n;j++)
if(*(x+j)<*(x+k)) k=j;
if(k==i) continue;
j=*(x+i);
*(x+i)=*(x+k);
*(x+k)=j;
}
}
void str_copy(char *str1,char *str2){
while(*str1++=*str2++);
}
void str_cat(char *str1,char *str2){
while(*str1) str1++;
while(*str1++=*str2++);
}
int str_cmp(char *str1,char *str2){//用void不行.
for(;*str1||*str2;str1++,str2++)
if(*str1>*str2) return 1;
else if(*str1<*str2) return -1;
return 0;
}
int str_len(char *str){//原来有两个形参,似乎不合适.
int i=0;
while(*(str+i)) i++;
return i;
}
void main(void){
int n,i,*pa,max,*pmax=NULL;
printf("Please enter a positive integer...\nn=");
scanf("%d",&n);
if((pa=(int *)malloc(n*sizeof(int)))==NULL){
printf("Allocate memory failure...\n");
exit(0);
}
srand((unsigned)time(NULL));
for(i=0;i<n;*(pa+i++)=rand());
pmax=fun_max(pa,&max,pmax,n);
sort(pa,n);
printf("max=%d pmax=%p\n",max,pmax);
free(pa);
}
#include "stdlib.h"//
#include <time.h>//
int *fun_max(int *x,int *max,int *p,int n){//原来void不好处理,改为int*
int i;
for(*max=i=0;i<n;i++){
if(*max<*(x+i)){
*max=*(x+i);
p=x+i;
}
}
return p;
}
void sort(int *x,int n){
int i,j,k;
for(i=0;i<n-1;i++){
k=i;
for(j=k+1;j<n;j++)
if(*(x+j)<*(x+k)) k=j;
if(k==i) continue;
j=*(x+i);
*(x+i)=*(x+k);
*(x+k)=j;
}
}
void str_copy(char *str1,char *str2){
while(*str1++=*str2++);
}
void str_cat(char *str1,char *str2){
while(*str1) str1++;
while(*str1++=*str2++);
}
int str_cmp(char *str1,char *str2){//用void不行.
for(;*str1||*str2;str1++,str2++)
if(*str1>*str2) return 1;
else if(*str1<*str2) return -1;
return 0;
}
int str_len(char *str){//原来有两个形参,似乎不合适.
int i=0;
while(*(str+i)) i++;
return i;
}
void main(void){
int n,i,*pa,max,*pmax=NULL;
printf("Please enter a positive integer...\nn=");
scanf("%d",&n);
if((pa=(int *)malloc(n*sizeof(int)))==NULL){
printf("Allocate memory failure...\n");
exit(0);
}
srand((unsigned)time(NULL));
for(i=0;i<n;*(pa+i++)=rand());
pmax=fun_max(pa,&max,pmax,n);
sort(pa,n);
printf("max=%d pmax=%p\n",max,pmax);
free(pa);
}
更多追问追答
追问
看不懂啊,是第二题吗,麻烦讲解一下吧
追答
一共就两题,都已做了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询