首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

希望能给两个调试美的C程序

2013-01-19 
希望能给两个调试好的C程序第一个1.利用指向一维数组的指针作为函数参数具体实现:(1)求数组最大元素及其所

希望能给两个调试好的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;
}

热点排行