Description
输入一些字符串,把其中的小写字母转换成大写字母。
编写函数str_upr():
原型:char* str_upr(char *s);
功能:把字符串s中的小写字母变成大写,其余字符不变。
函数的调用格式见“Append Code”。
Invalid Word(禁用单词)错误:在解决这个题目时,某些关键词是不允许被使用的。如果提交的程序中包含了下列的关键词之一,就会产生这个错误。
被禁用的头文件:string.h。
Input
输入为多行。每行为一个字符串str。str的字符总数不超过1000个。
Output
输出小写转大写后的串str。输出两遍,一遍是测试返回值,一遍是测试str。
Sample Input
I love China!
Do you want to pass this examination?
You will succeed finially!
Wish you succeed!
Sample Output
I LOVE CHINA!
I LOVE CHINA!
DO YOU WANT TO PASS THIS EXAMINATION?
DO YOU WANT TO PASS THIS EXAMINATION?
YOU WILL SUCCEED FINIALLY!
YOU WILL SUCCEED FINIALLY!
WISH YOU SUCCEED!
WISH YOU SUCCEED!
输出两编是因为main函数里puts了一个p
main函数如下:
int main()
{
char str[MAX_STR_LEN], *p;
while(gets(str) != NULL)
{
p = str_upr(str);
puts§;
puts(str);
}
}
c里面没有string,只好靠字符数组,puts,gets就是for循环+字符数组的形式,直接读取,输出的(略作补充):
我的答案:
bug点:
1#define xxx 1000//不要再在后面加—;了
2直接return str不成功,需要在函数前加*才能return str,下次遇到c的字符串问题就清楚了…
#include<stdio.h>
//#define MAX_STR_LEN 1000;//这是;真的迷
//#define MAX_STR_LEN 1000
#define MAX_STR_LEN 1100
char *str_upr(char str[])
{
int a;
for(int i=0;str[i]!=NULL;i++){
a=str[i];
if(a>=97){
a=a-32;
str[i]=a;
}
}
return str;//这个题如果不知道要加*在函数前面str这个根本没法返回!!
}
int main()
{
char str[MAX_STR_LEN], *p;
while(gets(str) != NULL)
{
p = str_upr(str);
puts(p);
puts(str);
}
}