#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;
}
C语言中,程序文件本身是文本格式,如果只是查看代码的话,可以这样做:打开记事本,使用文件中的“打开”菜单。在d出的对话框中选择文件类型为“所有文件”,然后再浏览到程序文件,点击打开。但是如果需要在编译器环境中进行调试或编译等 *** 作,则必须使用编译器,编译器必须使用与C语言文件在编写时使用的环境要求,不同的编译器提供的库函数不同,不能混用。
高效率:说到程序,运行效率是不可避免的话题。如何提高效率,一是 最准确的算法,二是 一些小的细节,打个比方:for(int i=;i<strGetLength();i++) 就这个循环的判定条件而言,完全可以改成int len=strGetLength(), for(int i=0;i<len;i++);不要小巧这个改懂,如果你的字符串str很长的话,也会影响效率的,因为每循环一次就要调用一次函数GetLength。
应该多给几个例子,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 <stdioh>
int main()
{
int a=1,b=2,c=3,t;
t=a;
a=b;
b=t;
t=b;
b=c;
c=t;
printf("a=%d,b=%d,c=%d\n",a,b,c);
return 0;
}
#include <stdioh>
int main()
{
int a=1234,t;
for(t=0;a;a/=10)
t=t10+a%10;
printf("%d\n",t);
return 0;
}
#include <stdioh>
int main()
{
putchar('M');
return 0;
}
#include <stdioh>
#include <stdlibh>
/
主函数main中输入一组(10个)C语言成绩值到数组score[ ]中,
并输出如图所示的主菜单,根据不同的选择调用相应函数,编
写函数分别实现:
1- 输出平均值
2- 排序成绩
3- 输出比平均值低的成绩和个数
4- 输出及格率
5- 查找成绩
6- 添加成绩
0- 结束程序
/
//1、平均成绩函数
double AveScores(double [], double);
double AveScores(double score[], double count)
{
int i;
double sums = 0;
double average;
for(i = 0; i < count; i++)
{
sums += score[i];
}
average = sums / count;
return average;
}
//排序成绩函数由小到大
void SortScores(double [], int);
void SortScores(double score[], int count)
{
int i, j;
double temp;
for(i = 0; i < count; i++)
{
for(j = 0; j < count - i - 1; j++)
{
if(score[j] > score[j + 1])
{
temp = score[j + 1];
score[j + 1] = score[j];
score[j] = temp;
}
}
}
}
//输出比平均值低的成绩个数
double LowAve (double [], int, double);
double LowAve (double score[], int count, double average)
{
int i= 0;
double countlow = 0;
for(i = 0; i < count; i++)
{
if(score[i] < average)
{
countlow++;
}
}
return countlow;
}
//查找成绩
void FindScore(double [], int);
void FindScore(double score[], int count)
{
int i;
int index;
double input;
printf("请输入要查找的成绩");
scanf("%lf", &input);
for(i = 0; i < count; i++)
{
if(score[i] == input)
{
printf("找到了!此成绩在第%d个\n",i);
}
}
}
//添加成绩
int AddScore(double [], int);
int AddScore(double score[], int count)
{
int i = 0;
printf("请用户输入要添加的成绩:");
while(scanf("%lf", &score[i + count]) != 1 || &score[i + count] < 0)
{
fflush(stdin);
printf("请重新输入正数:");
}
count++;
return count;
}
int main()
{
int i, j;
int index; //数组元素下标
int choice; //用户选择
double average; //平均成绩
double temp; //临时变量
int count = 10; //成绩个数最多支持100个
double countlow; //低于平均成绩的个数
double score[100] = {76, 68, 98, 87, 71, 65, 49, 54, 80, 61};
double lowScore[100]; //用来存放低于平均成绩的数组
do
{
printf("\n");
printf("1、输出平均值\n");
printf("2、排序成绩\n");
printf("3、输出比平均值低的成绩和个数\n");
printf("4、输出及格率\n");
printf("5、查找成绩\n");
printf("6、添加成绩\n");
printf("0、结束程序\n");
printf("\n");
printf("请选择功能:");
while(scanf("%d", &choice) != 1 || choice < 0 || choice > 6)
{
fflush(stdin);
printf("请重新输入0-6的数字:");
}
switch(choice)
{
case 1://1- 输出平均值
average = AveScores(score,count);
printf("平均成绩为%2lf\n", average);
break;
case 2://2- 排序成绩
SortScores(score,count);
printf("排序后成绩为:\n");
for(i = 0; i < count; i++)
{
printf("第%d个成绩:\t",i + 1);
printf("%2lf\n",score[i]);
}
break;
case 3://3- 输出比平均值低的成绩和个数
for(i = 0; i < count; i++)
{
lowScore[i] = score[i];
}
SortScores(lowScore,count);
average = AveScores(score, count);
countlow = LowAve(lowScore,count,average);
printf("低于平均成绩的个数为%0lf\n", countlow);
for(i = 0; i < countlow; i++)
{
printf("第%d个低于平均的成绩:\t",i + 1);
printf("%2lf\n",lowScore[i]);
}
break;
case 4://4- 输出及格率
average = AveScores(score, count);
countlow = LowAve(score,count,average);
printf("及格率为:%2lf%%%\n",100 - countlow / count 100);
break;
case 5://5- 查找成绩
FindScore(score,count);
break;
case 6://6- 添加成绩
count = AddScore(score,count);
break;
}
}while(choice != 0);
return 0;
}
//以Helloworld示例
//先使用编辑工具如windows的记事本或vc++环境,或linux的vim编辑器创建一个helloc文件
//打开文件后,如下 步骤写程序
#include <stdioh>//首先要引入c语言的标准输入输出库文件,因为这个文件里有已经定义好的可以使用的函数
//接下来需要写一个main函数,这也是c语言程序里必不可少的一个函数,叫主函数,他是整个程序的入口函数,程序所有的功能实现都要在这个函数中体现。但是这个函数有且仅有一个
int main()
{
//这是main函数的函数体,要实现什么功能,就把实现功能的语句写到这里面
//比如我要实现打印HelloWorld字符,那么我就调用printf()标准输出语句
printf("Hello World!\n");//这个语句表示原样输出引号内的字符,‘\n’表示换行
return 0;//最后,因为main函数有一个int的返回类型限定,那么我们使用return语句返回一个int类型的值 0
}
//这样就结束了。一个简单的但又完整的C程序就有了,
//下一步就是使用编译器编译成目标的可执行文件:
//如果是windows下的vc++,那么需要分别点击编译,链接两个按钮生成helloexe可执行文件
//如果是linux下直接在shell中使用gcc helloc就可以编译成可执行文件aout
//最后就是运行了,windows下直接点击vc++的运行或双击helloexe可以出现dos窗口运行,并显示结果,linux下使用“/aout”可以直接运行,运行结果会显示在shell中。
//这就是整个完整的流程,包括每一步。如果帮助到你,请你采纳为答案。谢谢。
简单说个算法
输入的时候是输入两个式子的系数,可以用#作为输入结束标志
char ch=‘0’;
while(ch!='#'-‘0’)
{
scanf(%c,&ch);
ch-='0';
}
上面的算法每个循环得到的ch里存放的就是实际的数值
想办法放到p,q数组里去就行了
p,q,s位数分别为pi,qi,si的话
si=pi+qi; //s的幂次必为p,q幂次之和
P、Q的x幂次相加存入S相应位置
至于输入系数的时候
输入没有特别要求的话可以按照x的升序排列
这样0次幂存入p[0],1次幂存入p[1],
三个数组都可以这样安排
方便计算同时可以获取最终式子项数,也就是(幂次+1),在si里
s(x)系数计算
x幂次之和m刚好对应s[ ]下标
for(m=0;m<=si;m++) //计算数组s[ ]
for(i=0;i<=m;i++)
s[m]=p[i]+q[m-i];
然后输出应该就可以了
大概就是这样吧
========================
源程序在这里,Win7+C-Free 50测试通过
先上截图
#include <stdioh>
#include <stringh>
#define MAXLEN 20 //数组长度
void input(); //输入P/Q
void mul(); //多项式乘法
void outputS(); //输出S
int main(void)
{
float p[MAXLEN],q[MAXLEN], //p,q输入元素为原多项式各项系数
s[MAXLEN<<2]; //s中元素为输出多项式
int sn,pn,qn; //分别为多项式的次数
system("cls");
printf("\n\n输入P(x)的次数(正整数):"); //输入P(x)
scanf("%d",&pn);
printf("\n输入P(x)各项系数,P(x)降幂排列:\n");
pn++; //项数=次数+1
input(p,pn);
printf("\n");
printf("\n\n输入Q(x)的次数(正整数):"); //输入Q(x)
scanf("%d",&qn);
printf("\n输入Q(x)各项系数,Q(x)降幂排列:\n");
qn++; //项数=次数+1
input(q,qn);
printf("\n");
sn=(pn+qn-2); //S多项式次数
int i; //S数组初始化
for (i=0;i<sn+1;i++)
s[i]=0;
mul(p,q,s,pn,qn); //做多项式乘法
outputS(s,sn+1); //输出S
printf("\n");
getch();
return 1;
}
void input(float p,int t)
{
int i;
for (i=0;i<t;i++) scanf("%f",&p[i]);
}
void mul(float p,float q,float s, int m, int n)
{
int i,j;
for (i=0;i<m;i++) //扫描P(x)系数
for (j=0;j<n;j++) //扫描Q(x)系数
s[i+j]+=p[i]q[j];
}
void outputS(float s,int t)
{
int i;
printf("\nS(x)各项系数是(S(x)降幂排列):\n");
for (i=0;i<t;i++)
printf("%2f\t",s[i]);
}
呼呼~~终于完成了~~
以上就是关于C语言程序编写全部的内容,包括:C语言程序编写、如何编写C语言程序、用c语言编写一个程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)