1. 首页 > 科技

求一个C++的程序,易懂的算法最好,希望能带一下注释, c程序的注释只能是一行对吗

求一个C++的程序,易懂的算法最好,希望能带一下注释,c程序的注释只能是一行对吗

求C语言代码,最好有注释。

【例】把一个整数按大小顺序插入已排好序的数组中。

为了把一个数按大小插入已排好序的数组中,应首先确定排序是从大到小还是从小到大进行的。设排序是从大到小进序的,则可把欲插入的数与数组中各数逐个比较,当找到第一个比插入数小的元素i时,该元素之前即为插入位置。然后从数组最后一个元素开始到该元素为止,逐个后移一个单元。最后把插入数赋予元素i即可。如果被插入数比所有的元素值都小则插入最后位置。

main()

{

  int i,j,p,q,s,n,a[11]={127,3,6,28,54,68,87,105,162,18};

  for(i=0;i<10;i++)

      { p=i;q=a[i];

 for(j=i+1;j<10;j++)

 if(q<a[j]) {p=j;q=a[j];}

 if(p!=i)

 {

   s=a[i];

   a[i]=a[p];

   a[p]=s;

 }

 printf("%d ",a[i]);

      }

    printf("\ninput number:\n");

    scanf("%d",&n);

    for(i=0;i<10;i++)

      if(n>a[i])

      {for(s=9;s>=i;s--) a[s+1]=a[s];

      break;}

      a[i]=n;

    for(i=0;i<=10;i++)

      printf("%d ",a[i]);

    printf("\n");

}

本程序首先对数组a中的10个数从大到小排序并输出排序结果。然后输入要插入的整数n。再用一个for语句把n和数组元素逐个比较,如果发现有n>a[i]时,则由一个内循环把i以下各元素值顺次后移一个单元。后移应从后向前进行(从a[9]开始到a[i]为止)。 后移结束跳出外循环。插入点为i,把n赋予a[i]即可。 如所有的元素均大于被插入数,则并未进行过后移工作。此时i=10,结果是把n赋于a[10]。最后一个循环输出插入数后的数组各元素值。

    程序运行时,输入数47。从结果中可以看出47已插入到54和 28之间。

求用c语言编写的程序,最好带着注释(越详细越好!!)

#include

#include

#include

#include"conio.h"

#define N 20

struct depositor

{char num[20];

char name[20];

char per[20];

float sec;

float mon;

};

void menu();

int reads(struct depositor dep[N]);

void save(struct depositor dep[N],int n);

void add();

void del();

void change();

void show();

void main()

{

int n;

while(1)

{

menu();

printf("\n 请输入您要选择的操作序号,按回车键确认:");

scanf("%d",&n);

switch(n)

{

case 1: add();break;

case 2: show();break;

case 3: del();break;

case 4: change();break;

case 5: exit(0);

default: printf("输入错误,请输入列表中存在的序号!\n ");

}

}}

void menu()

{

printf(" %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ");

printf("\n ************************* 银行个人账户管理系统*************************** ");

printf("\n 1 储户开户");

printf("\n 2 余额查询");

printf("\n 3 储户销户");

printf("\n 4 密码修改");

printf("\n 5 退出");

printf("\n ************************************************************************** ");

printf("\n %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ");

}

int reads(struct depositor dep[N]) // 读取储户内容

{

FILE *fp;

int i=0;

if((fp=fopen("account.dat","r"))==NULL)

{

printf("文件打开失败!\n");

return 0;

}

else

{

for(i=0;!feof(fp);i++)

fscanf(fp,"\n%s %s %s %f %f\n",dep[i].num,dep[i].name,dep[i].per,&dep[i].sec,&dep[i].mon);

}

fclose(fp);

return i;

}

void save(struct depositor dep[N],int n) // 储户保存后信息

{

FILE *fp;

int i=0;

if((fp=fopen("account.dat","w"))==NULL)

{

printf("文件打开失败!\n");

return ;

}

else

{

for(i=0;i

fprintf(fp,"\n%s %s %s %f %f\n",dep[i].num,dep[i].name,dep[i].per,dep[i].sec,dep[i].mon );

}

fclose(fp);

}

void add()/*储户开户*/

{

FILE *fp;

struct depositor dep;

if((fp=fopen("account.dat","a"))==NULL) //如果文件已经存在,可以追加储户信息

{

if((fp=fopen("account.dat","w"))==NULL) // 文件不存在时,创建新文件,输入储户信息

{

printf("用户不存在!\n");

return ;

}

}

printf("\n请输入储户帐号,并按回车键确认:\n");

scanf("%s",dep.num);

fprintf(fp,"\n%s\n",dep.num);

printf("\n请输入储户姓名,并用回车键确认: \n");

scanf("%s",dep.name);

fprintf(fp,"\n%s\n",dep.name);

printf("\n请输入储户身份证号,并用回车键确认: \n");

scanf("%s",dep.per);

fprintf(fp,"\n%s\n",dep.per);

printf("\n请输入储户密码,并用回车键确认: \n");

scanf("%f",&dep.sec);

fprintf(fp,"\n%f\n",dep.sec);

printf("\n请输入储户金额,并按回车键确认: \n");

scanf("%f",&dep.mon);

fprintf(fp,"\n%f\n",dep.mon);

if(dep.mon<10 )

{ printf("\n 储户金额低于十元,不予开户 \n");

return ;

}

printf("\n **********************开户成功*************************\n");

fclose(fp);

}

void show() //余额查询

{

struct depositor dep[N];

int i,n ;

char s[20];

float t ;

n=reads(dep);

printf("\n请用户输入账号,密码,用空格隔开,按回车键确认:\n");

scanf("%s %f",s,&t);

for(i=0;i

if (strcmp(s,dep[i].num)==0 && t==dep[i].sec) break;

if (i>=n || t!=dep[i].sec)

{

printf("\n 输入错误 \n");

return ;

}

else

{ printf("*********************储户的余额如下**********************\n");

printf(" 余额 \n");

printf("\n %11.2f \n", dep[i].mon);

printf("**********************************************************\n");

}

}

void del() /*储户信息删除函数*/

{

struct depositor dep[N];

char number[20];

float t;

int n,i,j;

n=reads(dep);

printf("\n请输入要删除储户账号,密码,用空格隔开,按回车键确认:");

scanf("%s %f",number,&t);

for(i=0;i

if(strcmp(number,dep[i].num)==0&&t==dep[i].sec) break;

if(i>=n||t!=dep[i].sec)

{

printf("没有找到该储户信息!\n");

return;

}

else

{

for(j=i+1;j

dep[j-1]=dep[j];

}

save(dep,n-1);

printf("销户成功!\n");

}

void change() //储户密码更改

{

struct depositor dep[N];

int n,i;

float t;

char number[20];

printf("\n请输入要更改密码的储户账号,密码,用空格隔开,按回车键确认:");

scanf("%s %f",number,&t);

n=reads(dep);

for(i=0;i

if(strcmp(number,dep[i].num)==0&&t==dep[i].sec)

break;

if(i>=n||t!=dep[i].sec)

{

printf("无此储户信息!");

return;

}

printf("\n请输入更改后密码,按回车键确认:\n");

scanf("%f",&dep[i].sec);

save(dep,n);

printf("\n修改成功\n");

}

求一个简单的C++程序,最好带注释,什么都行

#include<iostream>

#include<cmath>

int jie(int );

using namespace std;

long int main()

{L:

char a;

cout<<"a.求幂\n"<<"b.求e的多次方\n"<<"c.开根号\n"<<"d.求对数log\n"<<"e.求对数ln\n"<<"f.求三角函数\n"<<"g.阶乘\n"<<"h.加减乘除"<<endl;

cout<<"选择:";

cin.clear();

cin>>a;

switch(a)

{

case 'a':{double b,c;cout<<"输入底数:";

cin>>b;

cout<<"输入次方:";cin>>c;

cout<<b<<"^"<<c<<"="<<pow(b,c)<<endl;

}break;

case 'b':{double b;cout<<"输入e的次方";cin>>b;

cout<<"e^"<<b<<"="<<exp(b);}break;

case 'c':{double b;cout<<"输入要开平方的数:";cin>>b;

cout<<"结果是:"<<sqrt(b)<<endl;}break;

case 'd':{double b,d;cout<<"输入底数:";cin>>d;

cout<<"输入真数:";cin>>b;

cout<<"log"<<d<<"("<<b<<")="<<(log(b)/log(d))<<endl;}break;

case 'e':{double b;cout<<"输入真数:";cin>>b;

cout<<"ln"<<b<<"="<<log(b)<<endl;}break;

case 'f':{char q;cout<<"a.sin()\n"<<"b.cos()\n"<<"c.tan()\n"<<"d.arcsin()\n"<<"e.arccos()\n"<<"f.arctan()\n"<<"g.cot()\n"<<"选择:";

cin>>q;

switch(q)

{

case 'a':{double c;cout<<"输入角度";cin>>c;

cout<<"sin"<<c<<"="<<sin(c)<<endl;}break;

case 'b':{double c;cout<<"输入角度";cin>>c;

cout<<"cos"<<c<<"="<<cos(c)<<endl;}break;

case 'c':{double c;cout<<"输入角度";cin>>c;

cout<<"tan"<<c<<"="<<tan(c)<<endl;}break;

case 'd':{double c;cout<<"输入";cin>>c;

cout<<"arcsin"<<c<<"="<<asin(c)<<endl;}break;

case 'e':{double c;cout<<"输入";cin>>c;

cout<<"arccos"<<c<<"="<<acos(c)<<endl;}break;

case 'f':{double c;cout<<"输入";cin>>c;

cout<<"arctan"<<c<<"="<<atan(c)<<endl;}break;

case 'g':{double c;cout<<"输入角度";cin>>c;

cout<<"cot"<<c<<"="<<(cos(c)/sin(c))<<endl;}break;

default :cout<<"error"<<endl;

}break;

}

case 'g':{int a;cout<<"输入:";cin>>a;cout<<"结果是:"<<jie(a)<<endl;}break;

case 'h':{char ch;double m,n;cout<<"输入:";cin>>m>>ch>>n;

switch (ch)

{case '+':cout<<m<<"+"<<n<<"="<<m+n<<endl;break;

case '-':cout<<m<<"-"<<n<<"="<<m-n<<endl;break;

case '*':cout<<m<<"*"<<n<<"="<<m*n<<endl;break;

case '/':cout<<m<<"/"<<n<<"="<<m/n<<endl;break;

default :cout<<"error"<<endl;

}break;

default :cout<<"error"<<endl;

}

}

cout<<endl;

cout<<endl;

goto L;

}

int jie(int n)

{

if(n==0)return 1;

else return n*jie(n-1);

}

实现简单的计算器功能

一道编程题,用C语言编出来,要源程序,最好有注释

#include<stdio.h>  #include<math.h>  #include "iostream"  using namespace std;  void main()      {      int b1,b2,b3,b4,b5,b6;      for( b1=8;b1<2520;b1=b1+8)      {      for(b2=1;b2<2520-b1;b2++)      {      int lao2=(b1/8+b2);      if((2520/6==lao2*6/7)&&(0==lao2%7))      for(b3=1;b3<2520-b1-b2;b3++)      {      int lao3=lao2/7+b3;      if((2520/6==lao3*5/6)&&(0==lao3%6))      for (b4=1;b4<2520-b1-b2-b3;b4++)      {      int lao4=lao3/6+b4;      if ((2520/6==lao4*4/5)&&(0==lao4%5))      for(b5=1;b5<2520-b1-b2-b3-b4;b5++)      {      int lao5=lao4/5+b5;      if ((2520/6==lao5*3/4)&&(0==lao5%4))      {      b6=2520-b1-b2-b3-b4-b5;        int lao6=lao5/4+b6;      if((2520/6==lao6*2/3) &&(0==lao6%3))      if (2520/6==(b1*7/8+lao6/3))        {      cout<<"***分2520个橘子***"<<endl;      cout<<"老大:"<<b1<<endl;      cout<<"老二:"<<b2<<endl;      cout<<"老三:"<<b3<<endl;      cout<<"老四:"<<b4<<endl;      cout<<"老五:"<<b5<<endl;      cout<<"老六:"<<b6<<endl;      cout<<"******************"<<endl;      }      }        }        }      }      }      }      system("pause");      }