任务描述
本关任务:写出所给代码中的两个函数funA和funB的声明与定义,使得funA(p)=a能实现通过指针p访问用户输入的字符串a,funB能将该字符串中的小写字母全部变成大写,并返回这个大写的字符串。
编程要求
根据提示,在右侧编辑器补充代码,除了实现funA和funB外,不能修改包括main函数在内的其他代码,不能在全局定义新的变量、指针、数组和函数等,不能调用其他的库。 funA和funB内不能调用任何输入输出函数(包含但不限于cin,cout,scanf,prinf,getchar,putchar等等)。 不允许存在内存泄漏,由于EC不能检测内存泄漏(同学们可以自行了解内存泄漏检测工具valgrind),助教将进行手动评测(以最后一次提交为准)。 每个测试用例有三行,每行对应一个字符串,长度不超过98,而且只含有小写和大写字母。 输出有三行,将输入转化为大写后,按顺序输出。
测试说明
平台会对你编写的代码进行测试:
测试输入: ieee tryAtry acisOK 预期输出: IEEE TRYATRY ACISOK
测试输入:
xrIBMfzHcLpRykqhiKVGr xxcPRzQHQGXVgTBhyEVhIkOQMlBagniWvkupgoAiEOUzyFytvNMyUAlDcmg nHmizUhzSkGkzkxpXTlRKenVxpKgQTVTISDczFrwxlGeufWgDrwtMFElObvtbanusorWGbZvICvFqIOs
预期输出:
XRIBMFZHCLPRYKQHIKVGR XXCPRZQHQGXVGTBHYEVHIKOQMLBAGNIWVKUPGOAIEOUZYFYTVNMYUALDCMG NHMIZUHZSKGKZKXPXTLRKENVXPKGQTVTISDCZFRWXLGEUFWGDRWTMFELOBVTBANUSORWGBZVICVFQIOS
#include <iostream> #include <cstring> using namespace std; // 写出两个函数的声明 int *&funA(char &p); char* funB(string a); int main() { char a[100], b[100]; for(int i = 0; i < 3; ++i) { char p; cin >> a; funA(p) = a; cout << funB(b, p) << endl; } return 0; } // 写出两个函数的定义 void funA(string *p){ }
讯享网
这道题想了很久 ,可以从题目已有结构分析。如有理解错误还请指出,谢谢!
讯享网#include <iostream> #include <cstring> using namespace std; // 写出两个函数的声明 char* &funA(char &p); //题目中funA(p)是左值,返回值需要是一个指针 //函数名前加&表示函数的返回值是函数内某一个变量的引用 //&前又加了*,合在一起表示函数的返回值是函数内某一个指针的引用 //对funA的调用就能修改p的指向 char* funB(char *b, char p); //funB如果不能内存泄露,返回值只能是一级指针,由题目知道b是数组,用来存返回值 int main() { char a[100], b[100]; for(int i = 0; i < 3; ++i) { char p; cin >> a; funA(p) = a; cout << funB(b, p) << endl; } return 0; } // 写出两个函数的定义 char* &funA(char &p) { p = new char*; return *p;//函数的返回值是函数内p指针的引用 } char* funB(char *b, char p) { int n=strlen(*p); for (int i=0; i<n; i++){ //*的优先级比[]低 if ((*p)[i]>='a' && (*p)[i]<='z') b[i]=((*p)[i]+'A'-'a'); else b[i] = (*p)[i]; } b[n] = '\0'; delete p; return b; }

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/116415.html