Description
定义如下三个函数:
1.char *UpperCopy(char* dest, char* source):将source中的英文字母变为大写字母后复制到dest中,并返回复制后的字符串。假定dest的容量足够。
2.char *LowerCopy(char* dest, char* source):将source中的英文字母变为小写字母后复制到dest中,并返回复制后的字符串。假定dest的容量足够。
3.char* fun(a,b,c):该函数有3个参数a、b和c,其中a和b是字符指针,分别指向目标串和源串,c是一个函数指针,该指针可以指向上面定义的两个函数中的任意一个。该函数的功能是:调用c指向的函数,将b复制到a中。
不得使用string.h中定义的函数。
Input
一个字符串,只有1行,不超过100个字符。
Output
共四行,每行是一个字符串。前两个字符串相同,是调用UpperCopy函数的返回值及目标串;后两个字符串相同,是调用LowerCopy函数的返回值及目标串。
Sample Input
proGRAMming
Sample Output
PROGRAMMING
PROGRAMMING
programming
programming
HINT
Append Code
int main()
{
char s[MAX_STR_LEN],t[MAX_STR_LEN];
gets(s);
puts(fun(t,s,UpperCopy));
puts(t);
puts(fun(t,s,LowerCopy));
puts(t);
return 0;
}
题解
#include<stdio.h>
#include<ctype.h>
#define MAX_STR_LEN 203
int str_len(char str[]){
int l=0;
while (str[l++]!=0);
return l;
}
char* UpperCopy(char* dest, char* source){
int j=0;
for (int i = 0; i < str_len(source); i++){
if (islower(*(source+i))){
*(dest+j)=toupper(*(source+i));
j++;
}else{
*(dest+j)=*(source+i);
j++;
}
}
*(dest+j)=0;
return dest;
}
char* LowerCopy(char* dest, char* source){
int j=0;
for (int i = 0; i < str_len(source); i++){
if (isupper( *(source+i) ) ){
*(dest+j)=tolower(*(source+i));
j++;
}else{
*(dest+j)=*(source+i);
j++;
}
*(dest+j)=0;
}
return dest;
}
char* fun(char* a,char* b,char* (*func)(char*,char*)){
return (*func)(a,b);
}