C语言 · 色盲的民主
接下来n行,每行一句话
red
blue
black
black
blue
blue
颜色单词最多20个字符,只包含小写字母或者空格
另外,你在cin>>n以后cin.getline(s,30)应该会得到一个空字符串,这是因为整数n后面的换行符还未被输入。
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<stdlib.h>
#include<ctype.h>
/*定义一个结构体:包括定义颜色的名称及其个数*/
typedef struct Color{
char color[];//不同的颜色
int num;//每个颜色的个数
}col;
int cmp(const void *a,const void *b){
col c = *(col*)a;
col d = *(col*)b;
//按数量的多少对颜色名称进行字典排序
if(c.num == d.num){
return strcmp(c.color,d.color);
}else{
return d.num - c.num;
}
}
int main(){
col co[];//定义结构体数组
char color[];//颜色单词最多20个字符
int re=;//表需要排序的颜色个数,初值为0
int n;//数据组数
scanf("%d",&n);
for(int i=;i<n;i++){
int j=;//下标
//输入一个颜色单词
scanf("%s",&color);
//先判断有没有存着此颜色
for(j=;j<re;j++){
if(strcmp(color,co[j].color)==)
break;
}
//若已经存了,该颜色数量+1
if(re!=j){
co[j].num++;
}
//若没有存,此时存进去
else{
strcpy(co[re].color,color);
co[re].num=;//改颜色的数量为1
re++;//需要排序的颜色个数+1
}
}
//排序
qsort(co,re,sizeof(co[]),cmp);
for(int i=;i<n;i++){
if(co[i].num == co[].num){
printf("%s\n",co[i].color);
}
}
return ;
}
上述过程在思路上没有问题,但是对于本题提交是不通过的——错在数据的处理的细节上。
%s:格式化字符串,不能接收回车换行空格符;
gets():用于从读入一个整行,以'\n'或EOF结束;
getchar():用于读入一个字符,并返回这个字符.
对于本题:输入n后有一个换行,而且每个颜色后都有一个换行,因此要注意用getchar()来接收换行,用gets(),接收数据。
/*
注意:%s不能接收空格、回车;
getchar()可以消除回车、空格符;
gets()一般与getchar()配合使用。
*/
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<stdlib.h>
#include<ctype.h>
/*定义一个结构体:包括定义颜色的名称及其个数*/
typedef struct Color{
char color[];//不同的颜色
int num;//每个颜色的个数
}col;
int cmp(const void *a,const void *b){
col c = *(col*)a;
col d = *(col*)b;
//按数量的多少对颜色名称进行字典排序
if(c.num == d.num){
return strcmp(c.color,d.color);
}else{
return d.num - c.num;
}
}
int main(){
col co[];//定义结构体数组
char color[];//颜色单词最多20个字符
int re=;//表需要排序的颜色个数,初值为0
int n;//数据组数
scanf("%d",&n);
getchar();//输入n后有一个回车,用getchar()处理掉
for(int i=;i<n;i++){
int j=;//下标
//输入一个颜色单词
// scanf("%s",&color);
gets(color);//%s不能处理回车换行空格符,而此题每个数据都有一个换行,用gets接收
//先判断有没有存着此颜色
for(j=;j<re;j++){
if(strcmp(color,co[j].color)==)
break;
}
//若已经存了,该颜色数量+1
if(re!=j){
co[j].num++;
}
//若没有存,此时存进去
else{
strcpy(co[re].color,color);
co[re].num=;//改颜色的数量为1
re++;//需要排序的颜色个数+1
}
}
//排序
qsort(co,re,sizeof(co[]),cmp);
for(int i=;i<n;i++){
if(co[i].num == co[].num){
printf("%s\n",co[i].color);
}
}
return ;
}

C语言 · 色盲的民主的更多相关文章
- Java实现 蓝桥杯VIP 算法提高 色盲的民主
算法提高 色盲的民主 时间限制:1.0s 内存限制:256.0MB 色盲的民主 问题描述 n个色盲聚在一起,讨论一块布的颜色.尽管都是色盲,却盲得各不相同.每个人都有自己的主张,争论不休.最终,他 ...
- Python 为何能坐稳 AI 时代头牌语言
原文链接:https://mp.weixin.qq.com/s?__biz=MzI0ODcxODk5OA==&mid=2247487055&idx=2&sn=ca0fe8740 ...
- 驳2B文 "我为什么放弃Go语言"
此篇文章流传甚广, 其实里面没啥干货, 而且里面很多观点是有问题的. 这个文章在 golang-china 很早就讨论过了. 最近因为 Rust 1.0 和 1.1 的发布, 导致这个文章又出来毒 ...
- R语言 ggplot2包
R语言 ggplot2包的学习 分析数据要做的第一件事情,就是观察它.对于每个变量,哪些值是最常见的?值域是大是小?是否有异常观测? ggplot2图形之基本语法: ggplot2的核心理念是将 ...
- 基于R语言的结构方程:lavaan简明教程 [中文翻译版]
lavaan简明教程 [中文翻译版] 译者注:此文档原作者为比利时Ghent大学的Yves Rosseel博士,lavaan亦为其开发,完全开源.免费.我在学习的时候顺手翻译了一下,向Yves的开源精 ...
- 【译】从 Rust 到不只是 Rust:PHP 语言领域
From Rust to beyond: The PHP galaxy 译文 原文地址:https://mnt.io/2018/10/29/from-rust-to-beyond-the-php-ga ...
- C语言 · 高精度加法
问题描述 输入两个整数a和b,输出这两个整数的和.a和b都不超过100位. 算法描述 由于a和b都比较大,所以不能直接使用语言中的标准数据类型来存储.对于这种问题,一般使用数组来处理. 定义一个数组A ...
- Windows server 2012 添加中文语言包(英文转为中文)(离线)
Windows server 2012 添加中文语言包(英文转为中文)(离线) 相关资料: 公司环境:亚马孙aws虚拟机 英文版Windows2012 中文SQL Server2012安装包,需要安装 ...
- iOS开发系列--Swift语言
概述 Swift是苹果2014年推出的全新的编程语言,它继承了C语言.ObjC的特性,且克服了C语言的兼容性问题.Swift发展过程中不仅保留了ObjC很多语法特性,它也借鉴了多种现代化语言的特点,在 ...
随机推荐
- oracle数据库rman异地恢复
自己想做两组rac之间的data guard,由于datafile,controlfile,甚至是archivelog都是存放在asm上的,直接复制数据有点不现实,asm磁盘总归都是要用的,所以想从a ...
- Android SDK Manager详解
Android基础知识——Android SDK Manager详解 做Android开发时,免不了使用Android SDK Manager,安装需要的sdk版本.buildTools版本等等. ...
- chrome 版本 29.0.1547.76 m 解决打开新标签页后的恶心页面的问题
个人非常不喜欢这个版本的新标签页的样子,特别是一再输入框中输入要搜索的东西,自动跑到标题栏中去了,比吃屎还恶心.下面是解决办法: 在地址栏输入:chrome://flags/ 按Ctrl+F,输入下面 ...
- AD提高动态的方法(附SNR计算)
作者:桂. 时间:2017-10-10 23:36:40 链接:http://www.cnblogs.com/xingshansi/p/7648475.html 前言 主要分析AD的基本特性,以及动 ...
- 在linux中配置环境变量
JDK下载地址: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 根据Linux ...
- gitlab 迁移、升级打怪之路:8.8.5--> 8.10.8 --> 8.17.8 --> 9.5.9 --> 10.1.4 --> 10.2.5
gitlab 迁移.升级打怪之路:8.8.5--> 8.10.8 --> 8.17.8 --> 9.5.9 --> 10.1.4 --> 10.2.5 gitlab 数据 ...
- atitit.html编辑器的设计要点与框架选型 attilax总结
atitit.html编辑器的设计要点与框架选型 attilax总结 1. html编辑器的设计要求1 1.1. 障碍訪问 1 1.2. 强大Ajax上传 1 1.3. Word完美支持 2 1.4. ...
- SQL存储过程教程
一直以来,对SQL SERVER的存储过程和触发器都基本没有用到,只是偶尔从网上找几个简单的函数PASTE到我的SQL中用.自己写总是感觉缺点什么,前几天单位的培训讲了一天的SQL SERVER, ...
- CentOS编译安装vim
#删除系统自带的vim rpm -qa | grep vim rpm -e vim-X11-7.4.629-5.el6_8.1.x86_64 vim-filesystem-7.4.629-5.el6_ ...
- UITableView当数据很少的时候,去掉多余的cell分割线
转自:http://www.cnblogs.com/bucengyongyou/archive/2012/10/15/2723814.html 在tableView初始化的时候 UIView *v = ...