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很多语法特性,它也借鉴了多种现代化语言的特点,在 ...
随机推荐
- selenium实战脚本集(1)——新浪微博发送QQ每日焦点
背景 很多同学在工作中是没有selenium的实战环境的,因此自学的同学会感到有力无处使,想学习但又不知道怎么练习.其实学习新东西的道理都是想通的,那就是反复练习.这里乙醇会给出一些有用的,也富有挑战 ...
- struts系列:返回json格式的响应
一.增加依赖库 // https://mvnrepository.com/artifact/org.apache.struts/struts2-json-plugin compile group: ' ...
- windbg分析执行在64位环境下的32位程序的dump
windbg命令例如以下 1. .load wow64exts 2. !sw 3. ~* kvnf
- 订单状态 Mark
) { ) { ) { ) { ) { ) { ) { ) { ) { ) { ) { ) { ) { ) { ))) { ))) { ))) { ))) { )); } else { Assert. ...
- Android: TextView 及其子类通过代码和 XML 设置字体大小的存在差异的分析
原因: 在代码中通过 setTextSize(float size) 设置,使用的是 sp 为默认单位. 而 XML 中使用了 px,所以需要使用先把做好 sp 和 px 的转换工作. 最近在做 ap ...
- C++的string类常见用法
C++的string常见用法,在网上看到一篇,但是不能在c++11编译器下运行,我修改了下,还没改完: #include<iostream> #include<string> ...
- asp.net 中用easyui中的treegird的简单使用
几乎每个‘数人头’项目中都会用到的功能,这里先记下来,以后直接到这里复制代码就行了,ASP.NET MVC中的使用 数据库用户表中的除了有个parentid父级ID外,我还多加了以个字段,parent ...
- 我用Xamarin开发android应用,应用在真机上一打开就退出了
在解决方案管理器的项目上右键--属性--Android Options--Packaging将Use Shared Runtime前面的对勾取消即可.
- Android 录音获取分贝值的办法
参考:http://blog.csdn.net/greatpresident/article/details/38402147 public class MediaRecorderDemo { pri ...
- 【006】【JVM——垃圾收集器总结】
Java虚拟机学习总结文件夹 JVM--垃圾收集器总结 垃圾收集器概览 收集算法是内存回收的方法论.垃圾收集据是内存回收的详细实现.Java虚拟机规范中对垃圾收集器应该怎样实现没有规定.不同的厂 ...