c语言字符数组大小写转换

2014 全志科技校园招聘笔试题-------编程:

题目:给定字符串''just do it !'',将其转化为大写"JUST DO IT!"

方法一:

/*
*
*    给定一组字符串"just do it!",将其变成全部大写"JUST DO IT!"
*    方法一:判断字符串范围,对 >=‘a’ &&  <='z' 的字符串进行转换,即 += 'A'-'a'
*/

#include <stdio.h>
#include <string.h>
#define STR_CHANGE 'A'-'a'

void main()
{
    int i=0;
    int str_length=0;
    /*
    *    使用字符数组的方法保存字符串,如果使用字符指针的形式(如下),程序会出错
    *    因为,char *string形式的字符串是只读的,不允许对字符串的字符进行修改
    *    (只能修改指针变量str的值,使其指向其它字符串)
    *    char *str="just do it!";
    */    
    char str[20]="just do it!";
    printf("before:%s\n",str);
    str_length=strlen(str);
    for(i=0;i<str_length;i++)
    {
        printf("before: ASCII is %3ld char is %c ",str[i],str[i]); //为了突出比较结果转换前打印出ASCII码值和对应字符  
        if(str[i] >= 'a' && str[i] <= 'z')
        {        
            str[i] += STR_CHANGE;
        }    
            printf("\tafter:  ASCII is %3ld char is %c\n",str[i],str[i]); //为了突出比较结果转换后打印出ASCII码值和对应字符 
    }
    printf("after:%s\n",str);
}



方法二:


/*
*
*	给定一组字符串"just do it!",将其变成全部大写"JUST DO IT!"
*	方法二:使用函数toupper  引用头文件 ctype.h
*/

#include <stdio.h>
#include <string.h>
#include <ctype.h>
void main()
{
	int i=0;
	int str_length=0;
	char str[20]="just do it!";
	printf("before:%s\n",str);
	str_length=strlen(str);
	for(i=0;i<str_length;i++)
	{
		printf("before: ASCII is %3ld char is %c ",str[i],str[i]); //为了突出比较结果转换前打印出ASCII码值和对应字符  
		if(str[i] >= 'a' && str[i] <= 'z')
		{		
			str[i] = toupper(str[i]);
		}	
	        printf("\tafter:  ASCII is %3ld char is %c\n",str[i],str[i]); //为了突出比较结果转换后打印出ASCII码值和对应字符 
	}
	printf("after:%s\n",str);
}

/*
*	附录:
*	ctype.h 中   toupper()函数具体方法
*	int toupper(int char)
*	{
*		return char+'A'-'a';   
*   	}
*
*
*	ctype.h 中   tolower()函数具体方法
*	int tolower(int char)
*	{
*		return char+'a'-'A';   
*   	}
*/



运行结果:

before:just do it!
before: ASCII is 106 char is j 	after:  ASCII is  74 char is J
before: ASCII is 117 char is u 	after:  ASCII is  85 char is U
before: ASCII is 115 char is s 	after:  ASCII is  83 char is S
before: ASCII is 116 char is t 	after:  ASCII is  84 char is T
before: ASCII is  32 char is   	after:  ASCII is  32 char is  
before: ASCII is 100 char is d 	after:  ASCII is  68 char is D
before: ASCII is 111 char is o 	after:  ASCII is  79 char is O
before: ASCII is  32 char is   	after:  ASCII is  32 char is  
before: ASCII is 105 char is i 	after:  ASCII is  73 char is I
before: ASCII is 116 char is t 	after:  ASCII is  84 char is T
before: ASCII is  33 char is ! 	after:  ASCII is  33 char is !
after:JUST DO IT!


方法三:

使用strupr函数

原型:extern char *strupr(char *s);
用法:#include <string.h>
功能:将字符串s转换为大写形式
说明:只转换s中出现的小写字母,不改变其它 字符。返回指向s的 指针
兼容性说明: strupr不是标准C库函数,只能在VC中使用。在linux gcc环境下需要自行定义这个函数。

/*
*
*	给定一组字符串"just do it!",将其变成全部大写"JUST DO IT!"
*	方法三:使用函数strupr  引用头文件 string.h
*/

#include <stdio.h>
#include <string.h>
#include <ctype.h>
void main()
{
	char str[20]="just do it!";
	printf("before:%s\n",str);
	printf("change to upper :%s\n",strupr(str));
	
        printf("change to lower :%s\n",strlwr(str));
	printf("after:%s\n",str);
}



  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值