自助建立网站,网站快慢由什么决定,网页版传奇制作教程,网站 关键词 选择这是一个读者朋友在知识星球上提到的两个笔试题#xff0c;第一个题目比较简单#xff0c;关键在第二个题目「编程题」#xff0c;我文章中写的解题思路应该不是最好的#xff0c;希望大神读者们给出更好的答案#xff0c;让这个充满乐趣的程序世界再增添一些乐趣吧#… 这是一个读者朋友在知识星球上提到的两个笔试题第一个题目比较简单关键在第二个题目「编程题」我文章中写的解题思路应该不是最好的希望大神读者们给出更好的答案让这个充满乐趣的程序世界再增添一些乐趣吧所以 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 i0,j0,m0;char s[100];char r[255];memset(r,0,sizeof(r));memset(s,0,sizeof(s));gets(s);mstrlen(s);printf(%d %s\n,m,s);for(i0;im;i){r[s[i]];//putchar(s[i]);}printf(\n----------\n);for(i0;i255;i)printf(%d ,r[i]);printf(\n----------\n);for(i0;i255;i){char tmp  0;for(j0;j255-i;j){if(r[i]  r[j]){tmp  r[j];r[j]r[i];r[j]r[i];}}}printf(\n----p------\n);for(i0;i255;i)printf(%d ,r[i]);printf(\n----------\n);printf(%d\n,r[254]);return 0;
}
上面是一个读友提出的解决方案不过我对这个方案不是很满意「主要觉得代码行数有点多」冥思苦想之后想了下面这个更愚蠢的办法#include stdio.h
#include string.h
#include stdint.hint main(void)
{char s[100];uint16_t r[100];int m0,i0,j0;uint8_t temp0,max0;memset(s,0,sizeof(s));memset(r,0,sizeof(r));gets(s);m  strlen(s);for(i0;im;i){for(j0;jm;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(i0;im;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.hint main()
{uint8_t i0,temp0;uint8_t cos  0;char s[100];char r[255];memset(r,0,sizeof(r));memset(s,0,sizeof(s));gets(s);istrlen(s);printf(%d\n%s\n,i,s);for(i0;istrlen(s);i){r[s[i]]; }temp  r[0];cos  0;for(i0;isizeof(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微信扫描二维码关注我的公众号