急求C语言高手中的高手,帮忙把这两道大题编个程序,一定要按要求来啊!!!

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)

#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);
}追问

看不懂啊,是第二题吗,麻烦讲解一下吧

追答

一共就两题,都已做了。

追问

第一题链接的时候有一个错误,第二题编译的时候有一个错误

追答

我这里没有发现你说的错误。

追问

1.第一个没有main函数
第二题显示了C:\Documents and Settings\k11\桌面\52\52.c(28) : error C2065: 'NULL' : 2.undeclared identifier,是一个错误,也就是定义变量类型那一行。

追答

呀!main就是为第一题写的,调用了两个自编的函数解决问题。第二题只是写了四个函数,没有写主函数,题目要求就是写4个函数嘛!

追问

1.第一题编译时出现了这些:
C:\Users\123\Desktop\wo\5_1\5_1.c(23) : error C2040: 'fun_max' : 'int *(int *,int *,int *,int *)' differs in levels of indirection from 'int ()'
C:\Users\123\Desktop\wo\5_1\5_1.c(36) : error C2371: 'sort' : redefinition; different basic types
另外还有些警告。
2.第二题需要输入两个字符串,然后对它们进行复制,连接,比较,求长度,因为题目需要输出结果。麻烦你了

追答

你用的什么编译器啊!第一题把sort改成mysort试试,估计你的编译器把sort当库函数了;因为在我这里没有任何问题,所以我也说不清怎么回事。下面是第二题的主程序:
void main(void){
char a[200],b[100],c[150],cx;
printf("Input a string...\nStr1=");
gets(a);
printf("Input another...\nStr2=");
gets(b);
str_copy(c,b);
str_cat(a,b);
cx=str_cmp(a,b);
if(cx>0)
printf("stra>strb\n");
else if(cx<0)
printf("stra<strb\n");
else printf("stra=strb\n");
printf("stra+strb=%s stra+strb long: %d\n",a,str_len(a));
printf("stra long: %d\nstrb long: %d\n",str_len(c),str_len(b));
}

追问

不行,还是都有错误。要不你把程序和运行结果都发到我的邮箱吧!两道大题都要!运行结果就把运行结果出现的那个黑色窗口截屏一下(只截这个窗口),qq:784586693
多谢了!我愿意用全部家当换!急用!!!

追答

你到底想干什么呢?不给你说了就是上面的答案嘛!

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-01-03
自己写一写,调一调,锻炼下动手能力嘛。。
第2个回答  2013-01-03
这些题都很简单,拿分走人

两题C语言,高手求助啊
第一题:第一次5%2=1,所以执行i--,得i=4,因continue继续,所以用4%2=0,执行case0,i--得3,跳出,跳出后继续--得2,打印输出。下一次循环用2%2=0,执行case 0,i--得1,跳出继续--,得0;所以输出为2和0 第二题:调用函数后,主要看里面的循环情况,第一次循环i=0;c=8;当j=8时...

请问一下,C语言高手!可不可以帮我编写一个C 程序,输入A、B、C3个值...
if(a<c) a=c;printf("ABC中最大数为:%d\\n",a);} 更简单的:include <stdio.h> void main(){ int a,b,c;printf("请分别输入三个数:\\n");scanf("%d%d%d",&a,&b,&c);a=a>b?(a>c?a:c):(b>c?b:c); \/\/永远认为a是最大的 printf("ABC中最大数为:%d\\n",a);}...

求高手帮忙写一个c语言发牌程序
printf("%c:\\t", 5);\/\/输出第i个玩家的梅花牌 for (j=0; j<countC[i]; j++) { if (poker[ man[i].C[j] ] == 10) { printf("%4d", poker[ man[i].C[j] ]); } else { printf("%4c", poker[ man[i].C[j] ]); } } printf("\\n"); printf("%c:\\t", 4);\/\/输出第...

c语言中求两个整数中的较大者高手们看看我这哪里不对?
你的int max(int x,int y);中的分号用的是中文分号。

高手们帮我看看c语言程序,请给每行代码和功能注释
二.学好C语言的四种程序结构 (1)顺序结构 顺序结构的程序设计是最简单的,只要按照解决问题的顺序写出相应的语句就行,它的执行顺序是自上而下,依次执行。 例如;a = 3,b = 5,现交换a,b的值,这个问题就好像交换两个杯子水,这当然要用到第三个杯子,假如第三个杯子是c,那么正确的程序为: c = a; a...

C语言在现代编程中的作用 请高手帮我写个这样的文档...
一个项目就是一个工程,在“项目驱动式”教学中,首先应该让学生简单了解什么是软件工程思想,其次在c语言理论教学过程中,让学生懂得面向对象的程序设计的风格,最后引导他们来设计项目。 (二)“项目驱动”式教学应注意的问题 1.c语言程序设计教学要帮助学生树立面向工程的观点 在计算机行业中,软件是通过人们的智力活动...

跪求c语言高手,编条程序用来算5个坐标点的二次多项式拟合方程???急要...
int i=1,j=1, k=1, r; \/\/在程序中为中间变量来记录循环次数 double ss=0; \/\/ 在计算矩阵中未知参数的临时变量 double temp,m; \/\/中间变量 double x[6]={0,5,10,15,20,25},y[6]={0,1.0029,1.0023,1.0000,0.9990,0.9983};\/\/x[]为用户输入的横坐标的值 dou...

即将成为单片机高手的C语言菜鸟! KEIL中如何把两个主程序合并成一个...
将两个程序分别做成连个子程序,然后在主程序中调用就成了啊!

C语言编程高手请来解决几道tc程序题
第二题(30分) 给定程序MODI1.C中函数fun的功能是:计算并输出k以内最大的10个能被13或17整除的自然数之和。k的值由主函数传入, 若k的值为500, 则函数值为4622。 请改正程序中的错误,使程序能输出正确的结果。 注意: 不要改动main函数, 不得增行或删行, 也不得更改程序的结构!***第三题(40分) 函数...

C语言中,求a++ + ++a + a++ + ++a的值,a=10,请高手讲解一下具体运算过...
45 12 45 13 45 14 可以看到,初始的时候用11加了三次,最后一次加的是12 所以得到45。是编译器优化的结果。所以,最后a是14,和为45 上面的人们,别那么武断的下结论。因为错误就往往出现在武断中。楼主的表达式是下面这个意思:(a++)+(++a)+(a++)+(++a)。依旧是45 ...

相似回答