希望能给两个调试好的C程序
第一个
1.利用指向一维数组的指针作为函数参数具体实现:
(1)求数组最大元素及其所在位置。函数首部为:void fun_max(int * x, int * max, int *p,int n),其中x为指向数组的指针,max为指向最大元素的指针,p为指向最大元素位置的指针,n为数组元素的长度。
(2)利用选择排序对数组元素按照从小到大排序。
希望给出运行结果
第二个
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)
希望能给出运行结果 c
[解决办法]
#include <stdio.h>
void fun_max(int* x, int* max, int* p, int n)
{
int i;
*max = x[0];
*p = 0;
for(i = 1; i < n; i++)
if(x[i] > *max){
*max = x[i];
*p = i;
}
}
void sort(int* x, int n)
{
int i, j, k;
int temp;
for(i = 0; i < n - 1; i++){
k = i;
for(j = i + 1; j < n; j++)
if(x[j] < x[k])
k = j;
temp = x[i];
x[i] = x[k];
x[k] = temp;
}
}
int main(int argc, char* argv[])
{
int x[] = {19, 26, 47, 6, 26, 18};
int max;
int p;
int i;
fun_max(x, &max, &p, 6);
sort(x, 6);
printf("max=%d, p=%d\n", max, p);
printf("x=");
for(i = 0; i < 6; i++)
printf("%d ", x[i]);
printf("\n");
return 0;
}
[解决办法]
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
char * str_copy(char * strDest,const char *strSrc);
char *str_cat(char *strDest, const char *strSrc);
int str_cmp (const char * src,const char * dst);
int str_len(const char *str);
char * str_copy(char * strDest,const char *strSrc)//
{
char * strDestCopy=strDest;
while ((*strDest++=*strSrc++)!='\0');
return strDestCopy;
}
char *str_cat(char *strDest, const char *strSrc)//
{
char *address = strDest;
while(*strDest)
{
strDest++;
}
while(*strDest++ = *strSrc++)
{
NULL;
}
return address;
}
int str_cmp (const char * src,const char * dst)//
{
int ret = 0 ;
while( ! (ret = *(unsigned char *)src - *(unsigned char *)dst) && *dst&&*src)
++src, ++dst;
if ( ret < 0 )
ret = -1 ;
else if ( ret > 0 )
ret = 1 ;
return( ret );
}
int str_len(const char *str)
{
int len = 0;
while((*str++) != '\0')
len++;
return len;
}
int main()
{
char a[20];
char c[]="i am teacher!";
char d[20]="Golden Global";
char *s=" View";
char src[20]="asdd";
char ss[]="i am teacher!";
str_copy(a,c);
str_cat(d,s);
str_cmp(src,ss);
printf("%d",str_len("sad"));
return 0;
}