社区
C语言
帖子详情
求一个简单的C语言算法题
kinsey0514
2007-02-05 09:48:12
找出所有六位数中满足下列条件的数字
就是若在此6位数中相邻3个或3个以上数字相同,找出这些数,并显示出来。
...全文
517
12
打赏
收藏
求一个简单的C语言算法题
找出所有六位数中满足下列条件的数字 就是若在此6位数中相邻3个或3个以上数字相同,找出这些数,并显示出来。
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lzwyg
2007-02-06
打赏
举报
回复
排列效率最高
今晚打老虎33333333
2007-02-05
打赏
举报
回复
int Help(int a[], unsigned int n)
{
if(a == NULL)
{
return -1;
}
int tmp;
int count = 1;
for(int i = 0;i < n; i++)
{
if(a[i] == a[i+1])
{
tmp = a[i];
count++;
}
else
{
//如果大于3则打印
if(count > 2)
{
printf("Number is %d\ , %d times\n", tmp, count);
}
count = 1;
}
if(i == n -1)
{
//如果大于3则打印
if(count > 2)
{
printf("Number is %d\ , %d times\n", tmp, count);
}
}
}
return 0;
}
kangzuo
2007-02-05
打赏
举报
回复
楼上好象不对啊
好多数没找到
=========================
是现写的程序,没有测试过,知识思想行了。
细心看有个bug,修改一下:
int iNum, iTemp, iRe, iT1, iT2;
for(iNum=100000;iNum<1000000;iNum++)
{
iRe=0;
iTemp = iNum;
iT1 = iT2 = -1; //原来是iT1 = iT2 = 0;
while(1)
{
iT1 = iTemp % 10;
iTemp = iTemp / 10;
if(iTemp==0)break;
if(iT1==iT2)iRe++;
else iRe=0;
iT2 = iT1;
if(iRe>=2)printf("%d\r\n", iNum); //原来是iRe>2
}
}
jixingzhong
2007-02-05
打赏
举报
回复
程序直接判断也是可以的:
数据很多,
建议输出到文件中查看吧
(编译后得到 test.exe, dos下使用命令 test.exe>>test.txt 将结果输出到文件)
#include <stdio.h>
#include <stdlib.h>
int main()
{
long l=100000;
char tmp[8]={0};
char *check[]={"000","111","222","333","444","555","666"
,"777","888","999"};
for(; l<1000000; l++)
{
int i;
sprintf(tmp, "%ld", l);
for(i=0; i<10; i++)
if(strstr(tmp, check[i]) != NULL)
{
printf("%ld\t", l);
break;
}
}
system("PAUSE");
return 0;
}
kinsey0514
2007-02-05
打赏
举报
回复
楼上好象不对啊
好多数没找到
jixingzhong
2007-02-05
打赏
举报
回复
排列是比较快的办法,
将3个 0-9中的各个数值, 以及 任意一个 3联数(比如111、222等),如此四个元素进行排列即可,注意考虑一下首位不能为0 。
kangzuo
2007-02-05
打赏
举报
回复
直接组合出来不就可以了???靠,这样的东西也需要查找?
======================================================
对,直接组合效率更高,我怎么没想到
kangzuo
2007-02-05
打赏
举报
回复
int iNum, iTemp, iRe, iT1, iT2;
for(iNum=100000;iNum<1000000;iNum++)
{
iRe=0;
iTemp = iNum;
iT1 = iT2 = 0;
while(1)
{
iT1 = iTemp % 10;
iTemp = iTemp / 10;
if(iTemp==0)break;
if(iT1==iT2)iRe++;
else iRe=0;
iT2 = iT1;
if(iRe>2)printf("%d\r\n", iNum);
}
}
kinsey0514
2007-02-05
打赏
举报
回复
怎么组?
积木
2007-02-05
打赏
举报
回复
直接组合出来不就可以了???靠,这样的东西也需要查找?
bpttc
2007-02-05
打赏
举报
回复
一时粗心,写错一句,现在改正
#include <stdio.h>
#include <stdlib.h>
void main()
{
int iNum, iTemp, iLst, iRe;
for(iNum=100000; iNum<1000000; ++iNum)
{
iLst = iNum%10; //上面这处写错了
iRe = 0;
for(iTemp=iNum/10; iTemp>0; iTemp/=10)
{
if(iTemp%10 == iLst)
{
++iRe;
}
else
{
iRe = 0;
iLst = iTemp%10;
}
if(2 == iRe)
{
printf("%d\n", iNum);
system("pause");
break;
}
}
}
}
bpttc
2007-02-05
打赏
举报
回复
#include <stdio.h>
void main()
{
int iNum, iTemp, iLst, iRe;
for(iNum=100000; iNum<1000000; ++iNum)
{
iLst = iTemp%10;
iRe = 0;
for(iTemp=iNum/10; iTemp>0; iTemp/=10)
{
if(iTemp%10 == iLst)
{
++iRe;
}
else
{
iRe = 0;
iLst = iTemp%10;
}
if(2 == iRe)
{
printf("%d\n", iNum);
break;
}
}
}
}
c语言
入门3——循环结构(上)
c语言
pta练习
题
集——循环结构(上)
数学专业浅浅的说一下我对
C语言
分支循环语句的看法
但我想可以在for循环里面加入and条件,也就是i <= a && i <= b同时成立时才会循环,这个条件那里的得到的呢?就从最大公约数不会大于其中任意
一个
数这个定义得到的。我想如果需要提高运算效率,可以减少条件体得执行,从而先把flag设置为一。在这几天刷
题
,我做过很多
简单
算法
题
,总的感受下来便是,使用分支循环都能解决。printf("最大公约数为%d", count);printf("请输入两个整数\n");第一道:给定两个数,
求
这两个数的最大公约数。其中有几道
题
,我给大家分享一下。
求
和(2022蓝桥杯A组试
题
C)
题
目的描述非常直白。大一刚学编程的同学也能做这道
题
,直接按
题
目给的公式算,用两个for循环实现。这称为模拟,就是模拟
题
目的要
求
简单
、直接地编码。输入:第一行包含
一个
整数n,第二行包含n个整数a1,a2,……给定n个整数a1,a2,……n为下标),
求
它们两两相乘再相加的和。输出:输出
一个
整数S,表示所
求
的和。下面给出3个代码,分别得到30%、60%、100%的分数。【程序运行结果如下】
c语言
蓝桥杯
算法
题
c语言
蓝桥杯
C语言
常考
简单
算法
题
1、
一个
整数,它加上100后是
一个
完全平方数,再加上168又是
一个
完全平方数,请问该数是多少? #include <stdio.h> int main() { int i, j, m, n, x; for (i = 1; i < 168 / 2 + 1; i++) { if (168 % i == 0) { j = 168 / i; if ( i > j &&
C语言
70,040
社区成员
243,237
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章