C语言程序编写

C语言程序编写,第1张

#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语言编写一个程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9634504.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存