C++药名整理题——教你首字符串升序排序

C++药名整理题——教你首字符串升序排序,第1张

C++药名整理题——教你首字符串升序排序

某题库中,有这样一道题:

题目名称:药名整理

医生在书写药品名的时候无法关注到格式问题。不注意大小写,格式比较混乱等现象时有发生。

你能否写一个程序,将医生书写混乱的药品名整理成统一规范的格式,即药品名的第一个字符如果

字母要大写,其他字母小写。如将ASPIRIN、aspirin整理成Aspirin。

最后,根据字母序升序进行排序。

输入:

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

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

输出:

共n行,按照字母序升序排列的药品名称。

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

输入样例

4
AspiRin
cisapride
2-PENICILLIN
Cefradine-6

输出样例

2-penicillin
Aspirin
Cefradine-6
Cisapride

大家可能会发现,变换大小写相对简单,但如何升序排序呢?

接下来,我给大家讲解一下整个代码

1.在这里,我用了cstring头文件

#include
#include
using namespace std;

 2.然后定义变量,输入n和n个字符串

	int n,i,j;
	cin >> n;
	char a[n][31],t[31];
	for (i=0;i> a[i];
	}

 3.根据ASCLL码变换大小写

    常见字母的ASCLL码

  • ‘A’—65,‘Z’—90
  • ‘a’—97,‘z’—122
  • ‘A’(65)和‘a’(97)差了32
	for (i=0;i=65 && int(a[i][j])<=90))
			{
				a[i][j] = char(int(a[i][j])+32);
			}
			else if (j==0 && (int (a[i][j])>=97 && int(a[i][j])<=122))
			{
				a[i][j] = char(int(a[i][j])-32);
			}
			j++;
		}
	}

4.用cstring头文件的strcmp和strcpy进行升序排序

  • strcmp 是用来比较两个C字符串(即char数组)的 。可以将strA的各个字母的ASCII码与strB的进行比较,如果strA>strB则返回整数,如果stA=strB返回0,否则返回负数
  • strcpy作用是复制,strcpy(a,b)就是把b复制给a,在这里的3个strcpy()相当于把a[ j ]和a[ j+1 ]的值交换。
	for (i=0;i0)
			{
				strcpy(t,a[j]);
				strcpy(a[j],a[j+1]);
				strcpy(a[j+1],t);
			}
		}
	}

5.输出 ,结束

	for (i=0;i 

这样,我们就完成了这道题

敲黑板!!!

#include //头文件

strcmp()//比较两个char数组

strcpy()//复制字符串

好了,今天我们就讲到这里 ,大家都学会了吗?

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5691329.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存