MIK C语言面试两题

这是一个读者朋友在知识星球上提到的两个笔试题,第一个题目比较简单,关键在第二个题目「编程题」,我文章中写的解题思路应该不是最好的,希望大神读者们给出更好的答案,让这个充满乐趣的程序世界再增添一些乐趣吧,所以, show your code .

第一题,求如下输出

#include "stdio.h"#define m(x,y) (x)<(y)?x:y
int main()
{printf("%d\n",10*m(10,15));return 0;
}

如果是学生的话,建议先看看题目,然后心里默念一下再往下看答案,我知道是一个非常简单的题目,但是也不要掉以轻心。

输出:

15--------------------------------
Process exited after 0.2808 seconds with return value 0
请按任意键继续. . .

编程题

输入一个字符串 然后判断里面最多的字符是什么 大写小写都要独立计数。

#include "stdio.h"
#include "string.h"#define m(x,y) (x)<(y)?x:y
int main()
{int i=0,j=0,m=0;char s[100];char r[255];memset(r,0,sizeof(r));memset(s,0,sizeof(s));gets(s);m=strlen(s);printf("%d %s\n",m,s);for(i=0;i<m;i++){r[s[i]]++;//putchar(s[i]);}printf("\n----------\n");for(i=0;i<255;i++)printf("%d ",r[i]);printf("\n----------\n");for(i=0;i<255;i++){char tmp = 0;for(j=0;j<255-i;j++){if(r[i] > r[j]){tmp = r[j];r[j]=r[i];r[j]=r[i];}}}printf("\n----p------\n");for(i=0;i<255;i++)printf("%d ",r[i]);printf("\n----------\n");printf("%d\n",r[254]);return 0;
}

上面是一个读友提出的解决方案,不过我对这个方案不是很满意「主要觉得代码行数有点多」,冥思苦想之后,想了下面这个更愚蠢的办法

#include "stdio.h"
#include "string.h"
#include "stdint.h"int main(void)
{char s[100];uint16_t r[100];int m=0,i=0,j=0;uint8_t temp=0,max=0;memset(s,0,sizeof(s));memset(r,0,sizeof(r));gets(s);m = strlen(s);for(i=0;i<m;i++){for(j=0;j<m;j++){if( s[i] != ((r[j]>> 8)&0xFF) ) {if(r[j] == 0){r[j] = (s[i] << 8)&0xFFFF;r[j] += 0x0001;break;}}else{r[j] += 0x0001;break;}}}temp = r[0]&0xFF;for(i=0;i<m;i++){if(r[i] != 0)printf("%c:%d\n",r[i]>>8,r[i]&0xFF);if((r[i]&0xFF) > temp){temp = r[i]&0xFF;max = i;}}printf(">>>%c:%d\n",r[max]>>8,r[max]&0xFF);return (0);
}

我还是认为这不是最好的方案,然后在知识星球上有一个读者评论,我看了评论受到启发,又进化了一次。

这个思路和上面的第一段代码差不多,遍历字符串里面的每一个字符,因为字符是char 类型,所以字符的值和「0-255」是对应关系的,然后再判断相同字符,如果和「0-255」的某个位置相同,那么这个位置的数组的值就加1。

然后寻找最大只的时候,也要遍历一遍。

有个弊端,就是如果同时存在几个相同最多字符的时候,要如何把他们同时输出的问题,如果使用我第二个方法的话,可以比较容易修改。

代码如下:

#include "stdio.h"
#include "string.h"
#include "stdint.h"int main()
{uint8_t i=0,temp=0;uint8_t cos = 0;char s[100];char r[255];memset(r,0,sizeof(r));memset(s,0,sizeof(s));gets(s);i=strlen(s);printf("%d\n%s\n",i,s);for(i=0;i<strlen(s);i++){r[s[i]]++; }temp = r[0];cos = 0;for(i=0;i<sizeof(r);i++){if(r[i] > temp){temp = r[i];cos = i;}	}printf("%d:%c:%d\n",cos,(char)cos,r[cos]);return 0;
}

 推荐阅读:

    专辑|Linux文章汇总

    专辑|程序人生

    专辑|C语言

嵌入式Linux

微信扫描二维码,关注我的公众号 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/467433.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[听尉迟方侃侃]平台

很长一段时期我都不能理解什么叫做平台。这个平台那个平台&#xff0c;随随便便的东西都要带上“平台”两个字以期蓬荜生辉。搞得人很是反感。 查了一下金山词霸&#xff0c;对平台一词有两个解释和软件行业相关&#xff1a; 解释1、[platform] ∶ 通常高于附近区域的平…

Swift基础学习(二)数据类型

在编程语言中&#xff0c;不同的数据信息需要不同的数据类型来存储&#xff0c;计算机内存中针对不同的数据类型它们所分配的内存大小是不同的&#xff0c;特定的值需要特定的类型来声明。 Swift 数据类型 内置数据类型 整数 - Int & UInt 根据一个整数变量占据的内存空间&…

看看大疆的C语言面试题

惯例&#xff0c;这笔试题也是一个读者朋友发给我的&#xff0c;简单看了下&#xff0c;并不觉得这是一个非常困难的题目&#xff0c;最近是校招准备的时候&#xff0c;很多人给我说发面试题对大家有帮助。这个题目面试官强调了这个跑在64位系统下。代码如下:#define mal(x,y) …

php三级栏目调用,织梦当前栏目调用二级、三级栏目且栏目高亮解决方法

在处理企业站的时候&#xff0c;经常发现要调用二三级栏目栏目&#xff0c;且需要高亮显示&#xff0c;具体实现方法如下。1、打开 \include\taglib\channelartlist.lib.php 找到$tpsql " reid$typeid AND ispart<>2 AND ishidden<>1 ";改成if($typeson…

RocketMQ实战(一)

阿里巴巴有2大核心的分布式技术&#xff0c;一个是OceanBase&#xff0c;另一个就是RocketMQ。在实际项目中已经领教过RocketMQ的强大&#xff0c;本人计划写一个RocketMQ实战系列&#xff0c;将涵盖RocketMQ的简介&#xff0c;环境搭建&#xff0c;初步使用、API详解、架构分析…

C面试总结文档

最近很多人有参加面试&#xff0c;面试就避免不了笔试&#xff0c;嵌入式面试的话&#xff0c;避免不了C语言&#xff0c;所以给大家准备了两份pdf C语言面试总结的文档。在本公众号回复 「C面试」获取pdf下载链接推荐阅读&#xff1a;专辑|Linux文章汇总专辑|程序人生专辑|C语…

linux下根据端口查进程,linux根据进程查端口,根据端口查进程

[roottest_environment src]# netstat -tnllup 能显示对应端口和进程Active Internet connections (only servers)Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program nametcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1/systemdtcp 0 0 0.0.0.0:6000 0.0.0.0:*…

程序员到底怎么了

我们是这样的一群人&#xff1a;每天都在“努力”的工作着&#xff0c;每天都和计算机打交道&#xff0c;泡在网上&#xff0c;打游戏&#xff0c;查资料&#xff0c;发微博。可是有一天&#xff0c;突然意识到&#xff0c;我们的未来在哪里&#xff0c;每个月那点可怜的工资&a…

SQLServer查询表结构

SELECT 表名case when a.colorder1 then d.name else end, 表说明case when a.colorder1 then isnull(f.value,) else end, 字段序号a.colorder, 字段名a.name, 标识case when COLUMNPROPERTY( a.id,a.name,IsIdentity)1 then √else end, 主键case when exists(SELECT 1 F…

来看看比尔盖茨当年写的BASIC解释器源代码吧,你就知道泰勒级数有什么用了...

几年前当我刚上大学那会&#xff0c;我曾经问过我一位学计算机同学的一个问题&#xff1a;计算机是如何计算诸如 或者 这种运算的&#xff1f;当初这个问题曾经困扰了我好长时间&#xff0c;这个问题并非是我当年在微积分课堂上解决的&#xff0c;而是直到我后来接触编程后才彻…

linux查看进程ppid,pidof命令从运行的进程中以名称查找出进程号PID/PPID横向大到小展示...

1.释义从运行的进程中以名称查找出进程号PID/PPID横向大到小展示2.系统帮助PIDOF(8) Linux System Administrators Manual PIDOF(8)NAMEpidof -- find the process ID of a running program.SYNOPSISSYNOPSISpidof [-s] [-c] [-n] [-x] [-m] [-o omitpid[,omitpid..]] [-o omit…

语言的本地化支持

Support channels on IRC and mailing lists exist for Ubuntu users whose first language is not English. You are welcome to join one of these or start your own. 对于母语不是英语的Ubuntu用户来说&#xff0c;已经有相应的邮件列表和IRC频道提供支持。欢迎你加入它们…

手机可以连接多少个蓝牙设备?

这是一个课题研究&#xff0c;蓝牙的东西我们可以先不说&#xff0c;我们讨论一个产品需求。我经常遇到一个场景&#xff0c;就是我用我的手机连上TWS蓝牙耳机听音乐&#xff0c;然后呢&#xff0c;我没有开车&#xff0c;我下地铁的时候&#xff0c;我需要打开我的手机&#x…

Spring简洁总结

Spring简洁总结 要的对象不是自己建的&#xff0c;而是IOC容器&#xff08;XML文件&#xff09;给的&#xff0c;我们通过getbean来调用。 依赖注入的话就是对象&#xff08;bean&#xff09;的成员的赋值不是我们手动完成&#xff0c;而是容器&#xff08;XML文件&#xff09;…

linux 网络 守护进程 禁止,Linux守护进程基础

1 守护进程中涉及到的基本概念1.1进程组1.1.1 进程组基本概念进程组是一个或多个进程的集合&#xff0c;可以接收来自同一个终端的各种信号。每运行一个程序或是命令都将产生一个进程组。每个进程属于一个进程组&#xff0c;而每个进程组都存在一个领头进程(或是叫组长进程)&am…

抽象工厂的应用

抽象工厂的应用本文是描述了自己对设计模式的工厂的了解.肯定有错误和不足的地方,希望大家能给予支持和建议. 1&#xff0e;问题的引出在前面的Post中,我描述了.NET的反射在软件设计中的应用.当这篇Post发表之后&#xff0c;有人认为用工厂来实现更合理一些。在这篇Post里&…

一口气搞懂「文件系统」,就靠这 25 张图了

前言不多 BB&#xff0c;直接上「硬菜」。正文文件系统的基本组成 文件系统是操作系统中负责管理持久数据的子系统&#xff0c;说简单点&#xff0c;就是负责把用户的文件存到磁盘硬件中&#xff0c;因为即使计算机断电了&#xff0c;磁盘里的数据并不会丢失&#xff0c;所以可…

linux里没有grub文件,linux – 安装Ubuntu后没有grub菜单,直接启动...

我有两个独立的SSD.其中一个安装了Windows 10 Pro,另一个安装了Ubuntu 14.04.3 LTS.当我的计算机启动时,我没有选择grub菜单来选择我要启动的操作系统,它会直接自动启动到Ubuntu.当将SSD设置为BIOS中引导顺序中的第一个SSD时,我可以启动进入Windows的问题.我有第三个2TB硬盘,我…

Samba远程代码执行漏洞(CVE-2017-7494)复现

简要记录一下Samba远程代码执行漏洞(CVE-2017-7494)环境搭建和利用的过程&#xff0c;献给那些想自己动手搭建环境的朋友。(虽然已过多时) 快捷通道&#xff1a;Docker ~ Samba远程代码执行漏洞(CVE-2017-7494) 演 示&#xff1a;服务器版“永恒之蓝”高危预警 &#xff0…

mac 终端登陆linux,Mac终端自动登录服务器

效果输入命令&#xff0c;选择一个序号登录服务器$ aoel(1) first 192.168.1.1(2) 第二台机器 192.168.1.2配置文件1. 填写服务器信息 computerInfo.ini#ip port user password description192.168.1.1 22 root 123456 first machine192.168.1.2 22 root 123456 第二台机器2. 使…