用C语言编写:对于任一个正整数n,求一个最小的正整数m,使n*m的结果为0和1组成的。

(例如:n=715,则m=14,结果就为10010)。要求,n可输入... (例如:n=715,则m=14,结果就为10010)。要求,n可输入 展开
 我来答
见机pro
2011-08-17 · 聊一聊职场上的故事,见机行事
见机pro
采纳数:372 获赞数:1597

向TA提问 私信TA
展开全部
#include"stdio.h"
mian()
{
int n,m,b,s;
m=1;
b=1;
scanf("%d",&n);
if(n==1)
printf("n=1,\nm=10,\ns=10");
else if(n==2)
printf("n=2,\nm=5,\ns=10");
else
{
s=n*m;
while(s>b)
{
if(s/b%10!=1||s/b%10!=0)
m++;
s=n*m;
else
b=b*10;
}
printf("%d\n%d\n%d\n",n,m,s);
}
}
这是我自己编的不一定对,要不对,你编译一下,把错误提示发回来就行。
有问题再在问
在一个上个回答者的程序中明显有个while (1)死循环,永远跳不出死循环,不只怎么得出结果,绝无嘲笑意思,就是请教。
百度网友bd4cf2a31
2011-08-17 · TA获得超过332个赞
知道小有建树答主
回答量:333
采纳率:100%
帮助的人:348万
展开全部
#include <stdio.h>

int main()
{
int i,j,k,n,x;
i=1;
char str[20];
printf("请输入一个大于0的数:\n");
scanf("%d",&n);
while(n<=0)
{
printf("输入错误,请重新输入!\n");
scanf("%d",&n);
}
while(1)
{
j=i*n;
sprintf(str,"%d", j);
for(k=0,x=0;str[k]!='\0';k++)
x++;
for(k=0;str[k]!='\0';)
if(str[k]=='1'||str[k]=='0')
k++;
else
str[k]='\0';
if(x==k)
{
printf("最小数为:%d",i);
break;
}
else
{i++;
if(i>=65535)
{printf("数据溢出!");
break;}
}
}
}
本人测试OK!
对于楼下问题,通过
if(x==k)
{
printf("最小数为:%d",i);
break;
}
跳出循环!
还有问题,请指出!
此程序当n=157时,会出现数据溢出的问题。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
mvplover1985
2011-08-17 · TA获得超过223个赞
知道小有建树答主
回答量:419
采纳率:0%
帮助的人:345万
展开全部
for(m = 1 ; ;m++){
int number = n*m;
while(number != 0){
if(number %10 >1){
break;
}
number = number /10;
}
if(number == 0){
printf("%d", m);
break;
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yuanwen42
2011-08-17
知道答主
回答量:18
采纳率:0%
帮助的人:11.2万
展开全部
不知道哇。。我也坐等高人解答!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式