整理药名c语言

医生在书写药品名的时候经常不注意大小写,格式比较混乱。现要求你写一个程序将医生书写混乱的药品名整理成统一规范的格式,即药品名的第一个字符如果是字母要大写,其它字母小写。如将ASPIRIN,aspirin整理成Aspirin。

输入描述

第一行一个数字n,表示有n个药品名要整理,n不超过100.

接下来n行,每行一个单词,长度不超过20,表示医生手书的药品名。药品名由字母,数字和-组成。

输出描述

n行,每行一个单词,对应输入的药品名的规范写法。

样例输入

4
AspiRin
cisapride
2-PENICILLIN
Cefradine-6

样例输出

 Aspirin
Cisapride
2-penicillin
Cefradine-6

构建算法

1.遍历输入的每个药品名; 

2.将每个药品名的第一个字母转换成大写,其余字母转换成小写;

3.根据调整后的药品名构建统一规范格式;

4.将统一规范格式的药品名输出。

#include<stdio.h>
int main()
{
	int n;
	scanf("%d",&n);
	char names[n][20];
	for(int i=0;i<n;i++)
	{
		scanf("%s",names[i]);
	}
	for(int i=0;i<n;i++)
	{
		int len=strlen(names[i]);
		if(names[i][0]>=97&&names[i][0]<=122)
		{
//将每一个药品名的第一个字母转换成大写,因此要使用names[i][0]去获取每一个药品名的第一个字母
			names[i][0]-=32;
		}
		for(int j=1;j<len;j++)
		{
			if(names[i][j]>=65&&names[i][j]<=90)
			{
				names[i][j]+=32;
			}
		}
		printf("%s\n",names[i]);
	}
	
	return 0;
}

 

用strlen函数来测量每个字符串的长度,这样就可以在接下来的代码中知道当前处理的字符串的长度,为了不出现索引越界的情况,所以需要这么一个变量来存储字符串的长度。

因为ASCII编码表中,字母a的数字编码为97,数字z的编码为122,所以需要使用这个范围来判断第一个字母是否为小写字母

使用ASCII码来比较,字母a的ASCII码为97,字母A的ASCII码为65,所以如果字母是a,要转换成A,则需要减去32,以改变为65在ASCII码中,大写字母和对应的小写字母之间相差32个单位

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值