妖饶小公主 发表于 2014-12-30 21:07:30

C语言指针问题

一、指针测试题分别设计下面函数,然后在main函数中调用。1、 设计一个函数:intstrlen(char *p),p所指的字符串的长度。2、设计一个函数:strcat(char *p,char *q),将q所指的字符串连接到p所指的字符串的尾部。3、设计一个函数:strcpy(char *p,char *q),将q所指的字符串复制到到p所指的空间中。4、设计一个函数:int strcmp(char *p,char *q),比较q所指的字符串和到p所指的字符串,并返回正整数(大于时)、0(等于时)和负整数(小于时)。5、大小写转换6、已知一个班5名学生(以姓名存储),输入一个学生姓名,查找这名学生是否属于该班,输出响应提示。要求:5名学生放入指针数组。二、结构体测试题定义学生结构体类型(包含)number、name、 age、sex和 score五个成员项),初始化三个学生数据,按格式输出这三个学生信息。

有谁会可以联系我QQ8135416.软件为vc++6.0。谢谢了

故乡的风 发表于 2014-12-30 21:07:31

int StrLen(const char *p) {
    register const char *str = p;
    while (*str) {
      str++;
    }
    return str - p;
}

char *StrCat(char *dst, const char *src) {
    register char *strDst = dst;
    register const char *strSrc = src;

    while (*strDst) {
      strDst++;
    }
    while (*strDst = *strSrc) {
      strDst++;
      strSrc++;
    }
    return dst;
}

char *StrCpy(char *dst, const char *src) {
    register char *strDst = dst;
    register const char *strSrc = src;

    while (*strDst = *strSrc) {
      strDst++;
      strSrc++;
    }
    return dst;
}

int StrCmp(const char *s1, const char *s2) {
    register const char *str1 = s1;
    register const char *str2 = s2;

    while (*str1 && *str1 == *str2) {
      str1++;
      str2++;
    }

    return *str1 - *str2;
}前四题,练了下手,仅供参考。

j_t_zeng 发表于 2014-12-31 00:36:22

本帖最后由 j_t_zeng 于 2014-12-31 00:50 编辑

好久没搞c了,不知道还合不合理,电脑重装了,软件也没了,没测试过的
一。1
int strlen(char *p){
int i;
for(i = 0; *(p+i) != '\0'; ++i){
}

return i;
}

j_t_zeng 发表于 2014-12-31 00:50:07

一,2
void strcat(char *p, char *q){
    int i, j;
    for(i = 0; *(p+i) != '\0'; ++i){
    }
    j=0;
    do{
      *(p+i) = *(q+j);
      ++i;
      ++j;
    }while(*(q+j) != '\0');
    return;
}

j_t_zeng 发表于 2014-12-31 00:54:58

一,3

void strcpy(char *p, char *q){
    int i = 0;
    do{
      *(p+i) = *(q+i);
      ++i;
    }while(*(q+i) != '\0');
    return;
}

j_t_zeng 发表于 2014-12-31 01:09:09

一,4
void int strcmp(char *p, char *q){
    int i = 0;
    while(*(p+i) == *(q+i)){
      if(*(p+i) == '\0')
            return 0;
      ++i;
    }
    return *(p+i) - *(q+i);
}

j_t_zeng 发表于 2014-12-31 01:22:03

一,5
这个题目不知道是要求一个字符的还是字符串的,所以都写上,
char chgmodchar(char c){
    if(c >= 'A'&& c <= 'Z')
      return c + 'a' - 'A';
    if(c >= 'a&& c <= 'z')
      return c + 'a' - 'A';
    return c;
}

void chgmodstr(char *p){
    for(int i = 0; *(p+i) != '\0'; ++i){
      *(p+i) = chgmodchar(*(p+i));
    }
    return;
}

j_t_zeng 发表于 2014-12-31 01:27:08

最后两题是一整个的程序设计,我就不写了,希望能多少帮到你

!@R键! 发表于 2015-1-9 06:29:22

{:1_1:}{:1_1:}{:1_1:}
页: [1]
查看完整版本: C语言指针问题