splunk公司的笔试题,求解

赤练仙子_ 2016-01-14 09:30:39
加精
题目说一个游泳馆里有很多储物柜,每个储物柜都有一个ID号,但是老板不喜欢4这个数字,所以ID号里都不能有4,ID号从1开始编号,让你设计所有储物柜的ID号,用程序输出,比如
输入 4
输出 5

输入 5
输出 6

输入 14
输出 16
这道题想了很久不知道怎么用程序实现,求大神帮忙,谢谢
...全文
12174 107 打赏 收藏 转发到动态 举报
写回复
用AI写文章
107 条回复
切换为时间正序
请发表友善的回复…
发表回复
寻开心 2020-02-08
  • 打赏
  • 举报
回复
好几年前的东西翻起来做啥
除了尾巴不能有4. 40也不行吧。 400也不行吧。
James_jie 2020-02-08
  • 打赏
  • 举报
回复
在VC++6.0的运算结果为
请输入柜子总量:
30
第1个柜子编号为1
第2个柜子编号为2
第3个柜子编号为3
第4个柜子编号为5
第5个柜子编号为6
第6个柜子编号为7
第7个柜子编号为8
第8个柜子编号为9
第9个柜子编号为10
第10个柜子编号为11
第11个柜子编号为12
第12个柜子编号为13
第13个柜子编号为15
第14个柜子编号为16
第15个柜子编号为17
第16个柜子编号为18
第17个柜子编号为19
第18个柜子编号为20
第19个柜子编号为21
第20个柜子编号为22
第21个柜子编号为23
第22个柜子编号为25
第23个柜子编号为26
第24个柜子编号为27
第25个柜子编号为28
第26个柜子编号为29
第27个柜子编号为30
Press any key to continue
James_jie 2020-02-08
  • 打赏
  • 举报
回复
#include<stdio.h>

int main(void)
{
int n;
int i, j = 1;

printf("请输入柜子总量:\n");
scanf("%d",&n);

n+=1;

for(i = 1;i <n;i++, j++)
{
if(i%10==4)
{
i+=1;
printf("第%d个柜子编号为%d\n",j, i);
}
else
printf("第%d个柜子编号为%d\n",j, i);

}


return 0;
}
fight_Snail 2018-06-05
  • 打赏
  • 举报
回复
去除的数:4,14,24.....
假设输入为in
假如去除n个数
那么4+10.(n+1)>in>4+10.n
解出n
in+n即为要的输出结果
Dennis_t 2018-05-08
  • 打赏
  • 举报
回复
这是我敲的代码,过程有点麻烦,但运行结果是正确的
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
int main()
{
int num;
char a[10];
while (scanf("%d", &num) != EOF)
{
int count = 0;
for (int i = num; i > 0; i--)
{
itoa(i, a, 10);
for (int j = 0; a[j] != '\0'; j++)
if (a[j] == '4')
{
count++;
break;
}
}
itoa(num + count, a, 10);
for (int j = 0; a[j] != '\0'; j++)

if (a[j] == '4')
{
count += pow(10, (strlen(a) - 1 - j));
}
printf("%d\n", num + count);
}
}
这是运行结果
可以的话 望采纳!
jena_wy 2018-05-02
  • 打赏
  • 举报
回复
输入4对应是顺序号,输出5的意思4去掉所以是5 输入可以1,2,3,4,5。。。。。13,14。。。 输出是 1,2,3,5,6。。。13,15,16。。。。。
乞丐的生鱼片 2018-05-02
  • 打赏
  • 举报
回复
遇4,加一没错
weixin_41692571 2018-04-23
  • 打赏
  • 举报
回复
引用 16 楼 henryldz2015 的回复:
没人认真看我的程序吗?都解决了,就是遇4加1的问题啊,关键是谁遇到4,拜托先看程序好不?楼主给分!!! [quote=引用 11 楼 henryldz2015 的回复:]
#include <stdio.h>
#include <stdlib.h>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int overoffNumFour(int num)
{
    int count=0;
	int i=1;
	for (;i<=num;++i)
	{
		if (4==(i+count)%10)              //遇4加1!!!!!!!!!!!!!!!解决一切问题!!!!!
		{
			++count;
		}
	}
	return num+count;
}
int main(int argc, char *argv[]) 
{
	int num;
	while(1)
	{
		printf("Please input number:");
		scanf("%d",&num);
		printf("Output numerber: %d\n",overoffNumFour(num));
	}
	return 0;
}
[/quote] 输入:131 输出:146 不行啊
自信男孩 2017-11-27
  • 打赏
  • 举报
回复
#include <stdio.h>

#define STANDNUM        4
#define STANDLOOP  10

int cal_out_num(int input_num)
{
    int temp_num = 0;
    int cal_num = 0;

    if(input_num < STANDNUM) {
        return 0;
    }
    else
    {
        temp_num = input_num/STANDLOOP;
        cal_num = input_num % STANDLOOP;
        if (cal_num >= STANDNUM)
            temp_num++;
        if ((temp_num + input_num) % STANDLOOP == STANDNUM)
            temp_num++;
        return temp_num;
    }
}


int main(void)
{
    int input_num=0;
    int skip_num=0;

    while(1)
    {
        printf("please input the number:\n");
        scanf("%d",&input_num);
        skip_num=cal_out_num(input_num);
        printf("skip number = %d\n", skip_num);
        printf("input number:%d\n",input_num);
        printf("output number:%d\n",input_num+skip_num);
    }
}
hypoxic 2017-11-27
  • 打赏
  • 举报
回复
全是大神mark
倚栏|听风 2017-11-27
  • 打赏
  • 举报
回复
引用 74 楼 qq_29499869 的回复:
代码如下,测试了多组,应该没什么问题吧 #include <iostream> #include<string> using namespace std; int main() { string nine = "012356789"; string ID; int num, b; cin >> num; do { b = num % 9; num = num / 9; ID = nine[b] + ID; } while (num > 0); cout << ID + '\n'; system("pause"); return 0; }
这个好像是正解了 赞~
f130517168 2017-11-27
  • 打赏
  • 举报
回复
如果输入数不带4,可以算出输入数前带有4的整数个数,然后相加; 如果输入数带4,算出这个数后最小的不含4数,算出这个最小数前带有4的整数个数,然后相加。
qq_29846883 2017-09-28
  • 打赏
  • 举报
回复

int main()
{
	int n = 0;
	int ofs = 0;
	cin >> n;

	for (int i = 4; i <= n; i++)
	{
		if (i % 10 == 4)
		{
			ofs++;
		}
		else if ((i + ofs) % 10 == 4)
		{
			ofs++;
		}
	}

	cout << "out box:" << n + ofs << endl;

	return 0;
}
whut_lcy 2017-09-28
  • 打赏
  • 举报
回复
两个思路: 1. 先sscanf得到数字, 再按10进制提取每一位的数字,遇到是4的改掉 2. 捕获key_up事件,若某次按下的是数字键4(包括小键盘的4),直接改为其他的
ForestDB 2017-09-27
  • 打赏
  • 举报
回复
想到九进制的,算是理解到了问题的本质。
qq_29846883 2017-09-27
  • 打赏
  • 举报
回复

int main()
{
	int n = 0;
	int ofs = 0;
	cin >> n;

	for (int i = 4; i <= n; i += 10)
	{
		if (i % 10 == 4)
		{
			ofs++;
		}
	}
	cout << "out box:" << n + ofs << endl;

	return 0;
}
J_k_ing 2017-09-27
  • 打赏
  • 举报
回复

#include<stdio.h>
int main(){
 	int num;
 	while(1)
	 {
	 	scanf("%d",&num);
	 	for(int i=1;i<=num;i++)
	 	{
	 		if (4==i%10||
	 		4==i/10%10||
	 		4==i/100%10||
	 		4==i/1000%10)
	 		{
	 			num++;
			}
		}
		printf("%d",num);
	}
	return 0;
}
开心秋水 2017-07-03
  • 打赏
  • 举报
回复
大神太多了.
qq_32352769 2017-07-03
  • 打赏
  • 举报
回复
效率略低,差评!,但是想不到更好的办法了 #include "stdafx.h" #include "string" #include <stdio.h> #include "iostream" #include "vector" #include "algorithm" using namespace std; bool HasFour(int id) { while (id) { if (id%10 == 4) { return true; } id /= 10; } return false; } int ExceptFour(int id) { vector<int> vecNum; int iNumTem = 0; for(int i=0; i < (id+1); i++)//遍历每个值并为其分配唯一对应的数值 { iNumTem = i; vector<int>::iterator vecNumFind = find(vecNum.begin(), vecNum.end(), iNumTem); while(HasFour(iNumTem) || vecNumFind != vecNum.end())//如果包含4或者如果已经被分配了,需要往后继续查找 { iNumTem++; vecNumFind = find(vecNum.begin(), vecNum.end(), iNumTem); } vecNum.push_back(iNumTem); cout<< i<<" "<<vecNum[i]<<endl; } return 0; } int _tmain(int argc, _TCHAR* argv[]) { int iNum = 50; ExceptFour(iNum); return 0; }
sdghchj 2016-12-29
  • 打赏
  • 举报
回复
引用 89 楼 sdghchj 的回复:
[quote=引用 88 楼 sdghchj 的回复:] 实际就是10进制转9进制的问题,转的时候凡是大于等于4的数字就加上1.
int fun(int n)
{
    int t = 0;
    int d = 1;
    int m = 0;
    while(n)
    {
        m = n % 9;
        if(m >= 4) ++ m;
        t += m *d;
        d *= 10;
        n /= 9;
    }
    return t;
}
还是不对,考虑有误,抱歉。[/quote] 再想想后,觉得应该是对的,就是9进制问题。
加载更多回复(87)

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧