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很多语法特性,它也借鉴了多种现代化语言的特点,在 ...
随机推荐
- MongoDB 学习笔记(1)
数据库 一个mongodb中可以建立多个数据库. MongoDB的默认数据库为"db",该数据库存储在data目录中. MongoDB的单个实例可以容纳多个独立的数据库,每一个都有 ...
- win8 应用商店程序使用SQLITE数据库
http://www.cnblogs.com/zhuzhenyu/archive/2012/11/27/2790193.html using SQLite; using System; using S ...
- 20本最好的Linux免费书籍
前些天Neo推荐了一个网站有<超过100本的linux免费书籍>,这里,我也向大家推荐20本最好的Linux免费书籍,当然,也是英文版的. 1. Ubuntu Pocket Guide a ...
- 关于switch语句中使用String类型的实现原理
在Java 7 以后,switch语句可以用作String类型上. 从本质来讲,switch对字符串的支持,其实也是int类型值的匹配.它的实现原理如下: 通过对case后面的String对象调用ha ...
- U811.1接口EAI系列之五--材料出库--VB语言
主要业务有:09其他出库单 11:材料出库单 32:销售出库单 主要业务代码: '材料出库生成XML Public Function xml_storeout(ds_head As MSHFlexGr ...
- django class-based view 考古
django 中的view中进化史: 1.在“天地初开”的时候django中的view是通过函数来定义的.函数接收一个request并以一个response作为返回: 对于这个request是通过po ...
- 怎么安装预装的win8三星笔记本改win7再装Ubuntu问题[zz]
随着科技的高速发展,人们对电脑的要求越来越高,对电脑系统的要求亦是,那些电脑自带的系统,很多时候已经无法满足人们的需求了,而为了满足自己的需求,人们往往会为电脑改装新系统,而本文要和大家一起分享的话题 ...
- python 搭建ftp服务器
代码示例: # coding: utf-8 import os from pyftpdlib.authorizers import DummyAuthorizer from pyftpdlib.han ...
- 配置并使用Android支持的库
原文链接:http://android.eoe.cn/topic/android_sdk Android Support Library(支持库)提供了包含一个API库的JAR文件,当你的应用运行在A ...
- Android4.1(Jelly Bean)API新特性尝鲜
原文:http://android.eoe.cn/topic/android_sdk Android 4.1 APIs (API Level: 16)http://developer.android. ...