有一个C语言程序设计的问题,希望大家帮下忙 30

不是计算机专业的还要搞程序设计,不会啊,希望网上的大神帮忙设计一下,谢了请编写程序,实现如下功能:(1)系统随机产生两个正整数n1和n2(n1<n2<50000),找出n... 不是计算机专业的还要搞程序设计,不会啊,希望网上的大神帮忙设计一下,谢了

请编写程序,实现如下功能: (1)系统随机产生两个正整数 n1 和 n2(n1<n2<50000),找出 n1 和 n2 之间的所有 回文数; (2)系统随机产生一个正整数 n(n<50000),找出所有小于 n 的三重回文数; (3)验证构造回文数的猜想:从系统随机产生的任意一个正整数 n(n<50000)出发,用 它加上把它倒过来重排得到的数,如此继续,必能得到回文数。例如 139,139+931=1070, 1070+701=1771。
【功能要求】
1.请用两种方法实现回文数的判断,分别用两个函数实现: 第一种,将正整数分离出各位数字后作为字符依次存入字符串,判断组成的字符串是否 为回文串; 第二种,将正整数颠倒后组成新的数据,将两个数据进行比较判断是否为回文数。 2. 采用 1 行输出 5 个数据的格式。 3. 主函数实现正整数的随机产生和菜单的显示,如图 11.1 所示。随机产生的数据作为 函数的实参传递给各个子函数。
图 11.1 菜单显示 4.编写一个子函数调用回文数的判断函数,实现给定范围内所有回文数的输出。 5.编写一个子函数调用回文数的判断函数,输出给定范围内的所有三重回文数。

26
6. 编写一个子函数验证构造回文数的猜想。
怎么就没人呢~, 大家说句话呀倒是~
展开
 我来答
不忘使命earth
2016-04-27
知道答主
回答量:1
采纳率:0%
帮助的人:1095
展开全部
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<string.h>
long u,v;
void output1();
void output2();
void verify();

void main()
{
int n;
printf(" 1.输出回文数\n");
printf(" 2.输出三重回文数\n");
printf(" 3.验证猜想\n");
printf(" 0.退出\n\n\n");
printf("请输入选项:");
scanf("%d",&n);
switch(n)
{
case 1:output1();break;
case 2:output2();break;
case 3:verify();break;
case 0:break;
}
}
void output1()
{

int i,l1,l2,m,n,t,p=0;
srand((unsigned)time(NULL));
m=rand();
n=rand() % 17232;
l1=m+n;
m=rand();
n=rand() % 17232;
l2=m+n;
if(l1>l2)
t=l1,l1=l2,l2=t;
printf("随机产生的两个小于50000的正整数为:%d %d\n",l1,l2);
printf("介于%d和%d之间的所有回文数为:\n",l1,l2);
for(i=l1;i<=l2;i++)
{

int data[20],d=0,j=0,x,y,g=i;
while(g>0)
{
data[j++]=g%10;
g/=10;
}
for(x=0,y=j-1;x<y&&data[x]==data[y];x++,y--);
if(x>=y)
{
printf("%-6d",i);
p=p+1;
}
if(p==5)
{
printf("\n");
p=0;
}

}
printf("\n");
printf("请输入选项:");
scanf("%d",&n);
switch(n)
{
case 1:output1();break;
case 2:output2();break;
case 3:verify();break;
case 0:break;
}
}

int judge(int g)
{
int x,y,j=0,data[20];
while(g>0)
{
data[j++]=g%10;
g/=10;
}
for(x=0,y=j-1;x<y&&data[x]==data[y];x++,y--);
if(x>=y)
return 1;
else
return 0;
}
void output2()
{
int l,m,n,i,p=0;
srand((unsigned)time(NULL));
m=rand();
n=rand() % 17232;
l=m+n;
printf("随机产生的一个小于50000的正整数为:%d\n",l);
printf("小于%d的所有三重回文数为:\n",l);
for(i=0;i<=l;i++)
{
int l1,l2,l3;
l1=i,l2=i*i,l3=i*i*i;
if(judge(l1)==1&&judge(l2)==1&&judge(l3)==1)
{
printf("%6d",i);
p=p+1;
}
if(p==5)
{
printf("\n");
p=0;
}
}
printf("\n");
printf("请输入选项:");
scanf("%d",&n);
switch(n)
{
case 1:output1();break;
case 2:output2();break;
case 3:verify();break;
case 0:break;
}
}
int judge2(long g)
{
int x,y,j=0,data[20];
while(g>0)
{
data[j++]=g%10;
g/=10;
}
for(x=0,y=j-1;x<y&&data[x]==data[y];x++,y--);
if(x>=y)
return 1;
else
return 0;
}
long readd(long x)
{
int j=0,data[20],k,o;
long g=x;
while(g>0)
{
data[j++]=g%10;
g/=10;
}
for(k=0;k<j;k++)
{
o=j-1-k;
while(o)
{data[k]*=10;
o-=1;}
u+=data[k];
}
return v=x+u;
}
void verify()
{
int l,m,n,t;
srand((unsigned)time(NULL));
m=rand();
n=rand() % 17232;
l=m+n;
t=l;
printf("随机产生的一个小于50000的正整数为:%d\n",l);
while(judge2(l)==0)
{
readd(l);
l=v,u=0;
}

printf("构造出的回文数为%d\n",l);
printf("其构造过程为:\n");
u=0,v=0;
while(judge2(t)==0)
{
readd(t);
printf("%6d+%6d=%6d\n",t,u,v);
t=v,u=0;
}
printf("请输入选项:");
scanf("%d",&n);
switch(n)
{
case 1:output1();break;
case 2:output2();break;
case 3:verify();break;
case 0:break;
}
}
hewence1
2015-06-01
知道答主
回答量:57
采纳率:100%
帮助的人:19.9万
展开全部
1 2 还好。第3个结论都是错的,验证个啥子呀!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式