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。谢谢了
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:50 编辑
好久没搞c了,不知道还合不合理,电脑重装了,软件也没了,没测试过的
一。1
int strlen(char *p){
int i;
for(i = 0; *(p+i) != '\0'; ++i){
}
return i;
} 一,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;
} 一,3
void strcpy(char *p, char *q){
int i = 0;
do{
*(p+i) = *(q+i);
++i;
}while(*(q+i) != '\0');
return;
} 一,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);
} 一,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;
} 最后两题是一整个的程序设计,我就不写了,希望能多少帮到你 {:1_1:}{:1_1:}{:1_1:}
页:
[1]