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,一经查实,立即删除!

相关文章

看看大疆的C语言面试题

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

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语…

程序员到底怎么了

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

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

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

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

这是一个课题研究&#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;…

抽象工厂的应用

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

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

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

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

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

你说,辽宁输在哪了?

今晚看完了整场比赛&#xff0c;比赛很激烈&#xff0c;有完美的地方&#xff0c;也有不完美的地方看完比赛后&#xff0c;我一个刚从美国回来&#xff0c;现在在凤凰山脚下隔离的同学发消息给我说 「怎么才打三场就拿了总冠军了」&#xff1f;说下比赛整场比赛&#xff0c;辽宁…

[导入]Gemini翻譯為中文時的注意事項

1. 一般檔案 *.aspx, *.ascx 在翻譯為繁體中文或簡體中文後都要儲存為ANSI格式&#xff0c;不可用UTF-8&#xff0c;不然會亂碼&#xff0c;繁體轉簡體也有問題 2. Template中信件的樣版檔案 *.vm &#xff0c;反而要另存為 UTF-8 格式&#xff0c;不然收到的信會是亂…

答应了好久的camera资料

之前是在知识星球上&#xff0c;有好几个同学问了camera的资料&#xff0c;我简单的说了下&#xff0c;也送了些资料&#xff0c;然后微信好友又有人问&#xff0c;我觉得camera这个&#xff0c;应该是要发一次资料了。之前写过的关于camera的文章安卓camera总体框架Camera摄像…

第九周学习

20162310林臻 《程序设计与数据结构》第九周学习总结 教材学习内容总结 堆的学习及其方法的应用堆排序利用堆的基本特征对一组元素进行排序 教材学习中的问题和解决过程问题1&#xff1a;堆和二叉树有什么区别呢问题1解决方案&#xff1a;1、堆是一个完全二叉树&#xff0c;并且…

Linux kernel同步机制

在现代操作系统里&#xff0c;同一时间可能有多个内核执行流在执行&#xff0c;因此内核其实像多进程多线程编程一样也需要一些同步机制来同步各执行单元对共享数据的访问&#xff0c;尤其是在多处理器系统上&#xff0c;更需要一些同步机制来同步不同处理器上的执行单元对共享…

10大黑客专用的 Linux 操作系统,你了解哪些?

今天列出一些最常用、最受欢迎的Linux发行版来学习黑客和渗透测试。1. Kali LinuxKali Linux是最著名的Linux发行版&#xff0c;用于道德黑客和渗透测试。Kali Linux由Offensive Security开发&#xff0c;之前由BackTrack开发。Kali Linux基于Debian。它带有来自安全和取证各个…

【windows phone】CollectionViewSource的妙用

在windows phone中绑定集合数据的时候&#xff0c;有时候需要分层数据&#xff0c;通常需要以主从试图形式显示。通常的方法是将第二个ListBox&#xff08;主视图&#xff09;的数据源绑定到第一个ListBox &#xff08;从视图&#xff09;的SelectedItem&#xff0c;或者通过第…

ftp linux包,图文详解Ubuntu搭建Ftp服务器的方法(包成功)

一、今天下午由于课程的要求不得已做了Ubuntu搭建Ftp服务器的实验&#xff0c;但是实验指导书还是N年前的技术&#xff0c;网上搜了一大把&#xff0c;都是模模糊糊的&#xff01;在百般困难中终于试验成功&#xff0c;特把经验分给大家 希望大家少走弯路&#xff01;二、详细步…

产品狗,工作三年,转行AI应该怎样规划?

作为AI 初学者来说&#xff0c;最大的问题就是&#xff1a;资料太多&#xff01;&#xff01;&#xff01;看不完&#xff01;&#xff01;&#xff01;不知道如何取舍&#xff01;&#xff01;&#xff01;人的精力有限&#xff01;&#xff01;&#xff01;大部分想转行AI算法…

你为什么喜欢VIM?

昨天看到的一个讨论&#xff0c;说vim有没有那么必要&#xff1f;所以写了这篇文章&#xff0c;在评论区说出你的观点&#xff0c;当然说出你的观点的时候&#xff0c;你拿不到一百万&#xff0c;也得不到小红花&#xff0c;但也是因为你的评论&#xff0c;我可能会开心一整天。…