某题库中,有这样一道题:
题目名称:药名整理
医生在书写药品名的时候无法关注到格式问题。不注意大小写,格式比较混乱等现象时有发生。
你能否写一个程序,将医生书写混乱的药品名整理成统一规范的格式,即药品名的第一个字符如果
是字母要大写,其他字母小写。如将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()//复制字符串 好了,今天我们就讲到这里 ,大家都学会了吗?
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)