7-1 纸牌排序 (10 分)

小诺诺喜欢玩纸牌比大小的游戏。现在有一副牌中的若干张纸牌,需要按牌面的数字从大到小的顺序排列,若数字大小相同则按花色从大到小(黑桃>红桃>梅花>方块)排列。牌面为A、J、Q、K分别用1、11、12、13表示;花色中的黑桃、红桃、梅花、方块分别用英文单词"spade"、"heart"、"club"、"diamond"表示。

输入格式:

测试数据有多组,首先输入测试的组数T (0<T<10),然后是T组测试数据;每组测试输入一行,按“花色 数字”的格式输入若干张牌,花色可能为"spade"、"heart"、"club"、"diamond"之一,数字为1~13。输入的数据之间可能有若干(至少1个)空格,在行的首尾也可能有若干空格,但每组输入数据的总长度不会超过1000个字符。

输出格式:

每组测试输出一行,按描述中的排序规则从大到小输出牌的信息,数据之间都以一个空格分隔。

输入样例:

2diamond 1 club 1  heart 1  spade 3 diamond 2 club 3 heart 2
diamond 13 club 13 heart 13    spade 12

输出样例:

spade 3 club 3 heart 2 diamond 2 heart 1 club 1 diamond 1
heart 13 club 13 diamond 13 spade 12
#include<stdio.h>
#include<string.h>
int main()
{//存储并接收组数int a;scanf("%d",&a);//吃数字后面的回车//但凡以后遇见数字回车,字符,一定要加上getchar,否则计算机会把数字后面的回车当做字符处理getchar();//循环输入每组牌for(int i=0;i<a;i++){//存储每组牌//小编觉得要将每组牌存储在一个大数组中//因为题干有提示首尾有若干空格//所以我觉得scanf("%s %d",char*_,int_)这种格式可能接收不到末尾的空格//哪怕后面加上getchar也只能接受一个空格,而空格的数量是不确定的//导致空格或者回车可能会存储到下一组的字符数组里面,这样的程序肯定错误char b[1001];//接收牌gets(b);//存储牌的数量int c=0;//存储牌的花色char d[500][20];//存储牌的大小int e[500]={0};//控制d数组每个花色字符串的结束int k=0;//将大数组牌的花色和大小分别存储到两个数组中for(int j=0;j<strlen(b);j++){//判断是否是字母,如果是,存储到d数组中,以空格为标志结束if(b[j]>='a'&&b[j]<='z'){//第一维控制每个花色//第二位控制每个花色的字母d[c][k++]=b[j];//如果该字母后面是空格,证明本花色字符串结束if(b[j+1]==' '){//结束每个花色,字符串以'\0'作为结束标志d[c][k]='\0';//将k赋值0,准备接收下一个花色k=0;//小编这种字符串也有些不确定,打印出来看一下前面程序的正确性//printf("%s ",d[c]);}}//判断是否是数字else if(b[j]>='0'&&b[j]<='9'){e[c]=e[c]*10+b[j]-'0';//如果改数字后面是'\0'或者' '说明数字结束//将控制第一维的变量c加一//准备接收下一个牌的花色和大小//d数组和e数组的角标相互对应if(b[j+1]=='\0'||b[j+1]==' '){//同样,打印一下,看一下效果,校验前面代码是否符合要求//printf("%d\n",e[c]);c++;}}}//上面代码执行完毕,说明花色和大小已经分别存储在两个数组中//进行下一步,排序for(int j=0;j<c;j++){for(int k=j+1;k<c;k++){//作为交换时的中间变量char tp[20];//先比较大小,如果前面的牌比后面的小,调换一下位置if(e[j]<e[k]){//先交换大小int temp=e[j];e[j]=e[k];e[k]=temp;//因为d数组存储的花色和e数组存储的大小的角标是相互对应的//d数组也要进行交换//因为d数组里面是字符串//所以要用字符串复制的函数strcpy//如果用赋值即“=”程序报错strcpy(tp,d[j]);strcpy(d[j],d[k]);strcpy(d[k],tp);}//大小相同,比较花色else if(e[j]==e[k])//因为每个花色的首字母不同,所以我们可以根据首字母判断花色//如果前一张牌的花色是‘d’,则一定小于后一张牌的花色,交换花色//如果后一张牌的花色是‘s’,则一定大于前一张牌的花色,交换花色//如果前一张牌的花色是‘c’,后一张牌的花色是‘h’//前一张牌的花色小于后一张牌的花色,交换花色//就这三种情况,如果花色不是‘d’和‘s’,那就只能是‘c’和‘h’//同理,如果有一个是‘c’,另一个不是‘h’,则一定是‘d’或‘s’//其他情况则无需交换花色if(d[j][0]=='d'||d[k][0]=='s'||(d[j][0]=='c'&&d[k][0]=='h')){//同理,利用函数交换字符串strcpy(tp,d[j]);strcpy(d[j],d[k]);strcpy(d[k],tp);}}}//打印,因为结尾没有空格,所以只打印到倒数第二个for(int j=0;j<c-1;j++)printf("%s %d ",d[j],e[j]);//打印最后一个,并换行printf("%s %d\n",d[c-1],e[c-1]);}return 0;
}

虽然第一题只有十分,但是小编觉得这道题比二十分的题还要恶心人,最直观的体验就是卡了很多人,而且是一份都没有,最简单的就是输入不规则, 一半的代码都是在切割空格,将花色和大小存储到数组中,另外就是花色比大小,如果不像小编这么聪明,就一个一个的比较,小编算了一下,六种情况,对C语言没那么熟悉的人可能还会用“==”去比较,程序代码肯定很长,而且健壮性弱,字符串也不能简单的去赋值,这道题小编觉得主要就是字符串的函数的考察,用好了,事半功倍,用不好,懂得都懂!!!小编在没有写注释的时候,代码就写了70行,所以这道题还是不太符合他的分数,如果小编存在不足,还望大神赐教!!!

7-2 找最大字符 (10 分)

从键盘上输入一个字符串(最多80个字符),找出其中最大的字符并输出,最后换行。

输入格式:

从键盘上输入一个字符串(最多80个字符)。

输出格式:

找出其中最大的字符并输出,最后换行。

输入样例1:

987654321

输出样例1:

9

输入样例2:

abczdefg

输出样例2:

z

输入样例3:

123456789

输出样例3:

9
#include<stdio.h>
#include<string.h>
int main()
{//接收并存储字符串char a[81];gets(a);//存储第一个字符的ASCII码int b;//强制类型转换,变成字符的ASCII码值b=(int)a[0];//循环转换for(int i=1;i<strlen(a);i++){//存储第二个开始的ASCIIint c;c=(int)a[i];//比较,将最大的ASCII存储在b中if(c>b)b=c;}//存储最大的字符char d;//将ASCII码强制转换为字符d=(char)b;//打印printf("%c\n",d);return 0;
}

第二题小编直接就比较的ASCII,小编认为测试点可能是数字和字母或者符号混合,如果单纯的认为输入的都是同一种类型,可能会出错,小编也没有试,另外小编也觉得比较ASCII代码更加简洁一些。健壮性也很高!!!

7-3 统计一行文本的单词个数 (15 分)

本题目要求编写程序统计一行字符中单词的个数。所谓“单词”是指连续不含空格的字符串,各单词之间用空格分隔,空格数可以是多个。

输入格式:

输入给出一行字符。

输出格式:

在一行中输出单词个数。

输入样例:

Let's go to room 209.

输出样例:

5

鸣谢用户 张麦麦 补充数据!

#include<stdio.h>
int main()
{//存储文本char str[1000];//不能用scanf,文本前面存在空格,会将空格存储到str中//后面的文本会继续存在缓冲区,等待下一个scanf的接收//而gets则会遇见回车停止接收字符//所以本题一定要用getsgets(str);//count存储单词的个数//i计算字符串的每个字母位置int count=0,i=0;//循环判断while(str[i]!='\0'){//如果本个字符不是空格且下一个字符是空格,或者下一个字符是'\0'//证明一个单词的结束//count加一if((str[i+1]=='\0'||str[i+1]==' ')&&(str[i]!=' '))count++;i++;}//打印printf("%d\n",count);return 0;
}

第三题主要就是注意开头的空格,字符串必须用gets接收,还有判断一个单词的结束,挺简单的!!!

7-4 将整数转换为汉字大写数字 (15 分)

从键盘输入一个3位的正整数,将其中的每一位数字转换为相应的汉字大 写数字输出。

输入格式:

一个3位的正整数。

输出格式:

汉字大写数字字符串,最后换行。

输入样例:

139

输出样例:

壹叁玖
#include<stdio.h>
int main()
{//接收,存储三位数字为字符串char a[4];gets(a);//存储大写数字,一个英文符号占据一个字节//一个汉字在不同的编译环境占据不同的字节//所以数组的第二维一定要存在且不能小,否则程序报错char b[10][10]={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};//循环打印三位数字的大写for(int i=0;i<3;i++)//a[i]是字符串的第一个数,但他是char类型,减'0'间接转化为int型//b数组的角标与数字相互对应printf("%s",b[a[i]-'0']);//打印换行printf("\n");return 0;
}

最后一题就是存储大写汉字的数组那里,第二维一定要存在,不然程序肯定会报错,汉字和英文字母不一样!!!

看在小编这么努力的份上,给小编点个赞呗!!!

STD高级语言程序设计第九天(满分答案,附赠本人程序的解析及坑点标识)相关推荐

  1. STD高级语言程序设计第二天(满分答案)

    7-1 多分支表达-数据奇偶判断 (10 分) 键盘输入两个非零整数A和B,如果A和B都是偶数则输出两个数的和,如果A和B都是奇数则输出两个数的差,如果A是奇数B是偶数则输出两数积,如果A是偶数B是奇 ...

  2. 高级语言程序设计c试题及答案,高级语言C程序程序设计2020知到章节测试题答案...

    当一个人参加集体活动不能被单独评估时,高级往往比单独一个人完成任务时努力程度小些,这种效应就是社会促进. 信息越( ),序程序设信息性影响越显著. 计2节测下列行为中属于品行性问题行为的有( ) 下面 ...

  3. 最新Java面试300题:腾讯T4面试+美团+京东+拼多多(文末答案附赠)

    数据库原理 MYISAM与innodb搜索引擎原理MyISAM引擎使用B+Tree作为索引结构,叶节点的data域存放的是数据记录的地址.其采用索引文件与数据文件,索引文件只存放索引,叶子节点存放数据 ...

  4. 华南理工高级语言程序设计C 作业答案,华南理工2017《高级语言程序设计C》平时作业.doc...

    华南理工2017<高级语言程序设计C>平时作业.doc 一一分析程序,写输出结果分析程序,写输出结果 1 include201709 include void main int m, k, ...

  5. 高级语言程序设计(实验四)

    高级语言程序设计实验4-1 [问题描述] 编程序,实现如下功能: (1)定义两个一维数组x,y,不超过50个元素. (2)从键盘输入k个整数到数组x中. (3)计算x中数据的平均值ave及大于平均值的 ...

  6. 高级语言程序设计C试卷答案,2018高级语言程序设计考卷B及参考答案.docx

    ? ? ? ? 试 卷 装 订 线 ? ? ? ? ? ? 装 订 线 内 不 要 答 题 , 不 要 填 写 考 生 信 息班 ? 业 ? 专 ? ? ? ? 试 卷 装 订 线 ? ? ? ? 武 ...

  7. 高级语言程序设计用c语言描述答案,清华大学出版社-图书详情-《高级语言程序设计(C语言描述)第2版》...

    近年来,随着各类程序(软件)设计大赛的广泛开展,C语言程序设计教学中"重语言轻设计"的教学状况得到了有效改善.本教材一直致力于改善这种教学缺陷,始终强调设计的重要性,因而受到广大相 ...

  8. 华工高级语言程序设计c十十作业,华工高级语言程序设计c随堂练习答案

    华工高级语言程序设计c随堂练习答案 华工高级语言程序设计 C++_随堂练习答案1. 一个最简单的 C++程序,可以只有一个( ).(A) 库函数 (B) 自定义函数 (C) main 函数 (D) 空 ...

  9. java语言程序设计郑莉课后答案_java语言程序设计郑莉第九篇课后习题答案.docx...

    java语言程序设计郑莉第九篇课后习题答案.docx 还剩 36页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,很抱歉,此页已超出免费预览范围啦! 如果喜欢就下载吧,价低环保! 内容要点: ...

最新文章

  1. 2021.02.04 Visual QA论文阅读
  2. python做平面设计有前途吗_现在学平面设计还有发展前景吗?
  3. HP DL 140 G3磁盘阵列的配置
  4. Linux的cp -a与cp -p
  5. NodeJS+Express+MongoDB - 张果 - 博客园
  6. CMake常用命令整理
  7. Idea搭建一个JavaWeb项目(一)
  8. oracle学习笔记(十三) 查询练习(三) 子查询查询
  9. 使用 ext3grep 恢复数据试验成功 笔记
  10. 投资人常用的忽悠用语!
  11. 使用遇到的问题_使用三防整理剂做织物整理会遇到这些问题...
  12. 7000条短信接口!福利赠送!
  13. 逆战ds服务器怎么修复,IBMDS3512存储硬盘坏了正确的更换方法应该是怎么
  14. 学习笔记—前端移动端开发知识点总结
  15. python复制网页文字_我用Python在网上复制文字的几种实用方法
  16. Electron-Builder打包时报错could not find: “\XXX\0-messages.nsh“
  17. 服务熔断降级什么意思?
  18. 【茗创科技】婴儿脑电机器学习实用指南
  19. 区块链投资现状和区块链应用部署的探讨
  20. vhdl7我学习得第一个fpga项目——倒计时显示

热门文章

  1. react icons库介绍及使用
  2. (精华)2020年8月22日 ABP vNext WebAPI应用ABP
  3. CRM与战争——项目型销售的成败剖析
  4. Python实现的解压缩软件及excel转图片工具源代码,基于pyqt5
  5. 文件锁-FileLock
  6. 条形码阅读器 CnetSDK Barcode Scanner SDK Crack
  7. Kettle数据抽取实战之二:CSV文件抽取
  8. 3DMAX插件安装与详细说明
  9. 测量学计算机,顾孝烈测量学第4版课后习题答案解析
  10. 福禄克测试报告转换软件,福禄克推出新一代电能质量分析软件Fluke Power Pioneer-测试测量-与非网...