应该多给几个例子,n=10的时候如何处理?得到10,110,210,1210等等?
若是这样的,试试下面程序:
/
用c语言编写一个程序:对于一个自然数n(n<=50),统计具有下列数字的个数,
并输出所有符合条件的数字:自然数n,在n的左边加上一个自然数,
但该自然数不能超过原数的一半;继续按此规则进行处理,直到不能加自然数为止。
例如当n=6时,符合条件条件的是:6,16,26,36,126,136共6个;
当n=5时,符合条件的是:5,15,25,125(0也是自然数,所以要加上本身)。。。
/
#include <stdioh>
#include <stdlibh>
int g_count=0;
void fun(int n,int d,int b)
{
int i;
printf("%8d ",d);
g_count++;
if(g_count%8==0) printf("\n");
for(i=1;i<=n/2;i++)
{
fun(i,ib+d,b10);
}
}
void result(int n)
{
int t=n,d=n,b=10;
printf("result:\n");
g_count=0;
while(t>=10)
{
t/=10;
b=10;
}
fun(n,d,b);
printf("\ntotal %d numbers\n\n",g_count);
}
int main()
{
int n;
printf("input n(n<=50):\n");
while(scanf("%d",&n)!=EOF)
{
if(n>=0&&n<=50) result(n);
printf("input n(n<=50):\n");
}
return 0;
}
我这,若是放开n的限制,n=200的时候,计算花掉20多秒吧,总共205658个。
n=300的话,算了几分钟都没结束。估计也得使用long long数据类型了。使用递归不是最快的,重复计算多。
百度推荐也不求真相?有误导了吧。
对于楼主新补充的提升,我的程序是这样做的,满足你的要求。
#include<iostream>
#include<typeinfo>
using namespace std;
const int PI=314;
template<typename T>
class Circle{
private:
T r;
public:
Circle(){r=0;}//无参构造函数
Circle(T x):r(x){}//带参构造函数
void show()
{
cout<<r<<endl;
}
T area()
{
return PIrr;
}
};
int main()
{
/int/
Circle<int> a(3);
ashow();//输出半径
cout<<aarea()<<endl;//输出面积
/double/
Circle<double> b(32);
bshow();//输出半径
cout<<barea()<<endl;//输出面积
return 0;
}
#include<stdio> //这个是头文件 也是 C语言里面最常用的头文件之一
int main()//这个是主函数 也就是程序的入口 你写的程序就是从这里开始的
{ //这个 { }表示里面的范围 是必须的 跟main 主函数是不可分的
int a=2; //这里表示有一个 int型的数据a(int型就是整数型)把2 赋值给a,你先理解为a=2
printf(“%d,a”);//printf函数的意思是在界面输入,%d 的意思是 整形数据的输出格式 对应的 是a,而每一段结束后都要用 ; 去表示结束
return 0; //这个表示 返回 0 给主函数 ,你理解为结束语句也行。
}
以上就是关于用c语言编写一个程序全部的内容,包括:用c语言编写一个程序、C语言程序编写、用C语言编写一个简单程序,有哪些步骤,可以举一个例子详细讲解下吗等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)