c++问题 在线等答案

1.有n个数,已按由小到大的顺序排序,要求输入一个数,把它插到原有数列中,而且仍然保持有序,同时输出新的数列。
2.编写一个测试函数,测试某一正整数的各位数字是否由素数组成,在主函数中输入一个正整数,输出测试结果。(测试数值如135,105,245)

3.编写一程序,计算并输出复数四则运算的结果,要求复数加减乘除分别用四个函数实现。(要求复数用结构体表示)
例如
(3+4i)+(1+2i)=
(3+4i)-(1+2i)=
(3+4i)*(1+2i)=(3*1-4*2)+(3*2+4*1)i
(3+4i)/(1+2i)=(3*1+4*2)/(1*1+2*2)+(3*2-4*1)/ (1*1+2*2)i

哪位大侠帮忙弄一下
急需

说明下:

问题1:用的数组来进行顺序表表示的,数组中的数字是自己输入,不需要按照从小到大输入,程序会里面有个从小到大排序的函数。

问题2: 程序2参照了 inonomori 朋友的格式,但是 inonomori朋友的复数判定里面的else语句本人觉得写得不够妥,改善了下。

问题3:只能附上一个图片,就把程序3的运行示例附上来了。。。。

          程序1:

#include <iostream>

using namespace std;

#define N 30

void sortNum(int a[],int n)  // 从小到大排序

{

 int temp;

 int i,j;

 for(i=0;i<n-1;i++)

 {

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

  {

   if(a[i]>a[j])

   {

    temp=a[i];

    a[i]=a[j];

    a[j]=temp;

   }

  }

 }

}

void insertNum(int a[],int num,int &n)

{

 if(num>a[n-1])

 {

  a[n++]=num;

  return ;

 }

 n++;

 for(int i=n-2;i>=0;i--)

 {

  if(num < a[i])

  {

   a[i+1]=a[i];

   a[i]=num;

  }

  else

  {

   return ;

  }

 }

}

void showData(int a[],int n)

{

 for(int i=0;i<n;i++)

 {

  if(i%5==0)

   cout<<endl;

  cout<<a[i]<<"  ";

 }

}

int main()

{

 int array[N];

 int n=0;

 cout<<"请输入数组中数字的数目:"<<endl;

 cin>>n;

 cout<<"请分别输入这些数:"<<endl;

 for(int i=0;i<n;i++)

  cin>>array[i];

 sortNum(array,n);

 cout<<"排序后数组为:"<<endl;

 showData(array,n);

 cout<<endl;

 cout<<"请输入你要插入的数"<<endl;

 int num;

 cin>>num;

 insertNum(array,num,n);

 cout<<"当前数组为:"<<endl;

 showData(array,n);

 cout<<endl;

 return 0;

}

======================================================================

程序2:

#include <iostream>

#include <cmath>

using namespace std;

void pn(int tem){

    int b=0;

 if (tem<2)

  b=1;

 else if (tem==2)

  b=0;

 else{

  int i;

  for (i=2;i<=(int)sqrt(tem);i++)

  {

   if (tem%i==0)

    b=1;

  }

 }

 if (b==1)

  cout<<"not prime number!"<<endl;

 else if (b==0)

  cout<<"prime number!"<<endl;

}

int main()

{

 int x;

 cout<<"input value:";

 cin>>x;

 int i;

 for (i=0;x>0;i++)

 {

  cout<<x%10<<"---";

  pn(x%10);

  x=(int) x/10;

 } 

 return 0;

}

====================================================

程序3

#include <iostream>

using namespace std;

struct COMPLEX

{

 double real;

 double imag;

};

void inputData(COMPLEX &c)

{

 cout<<"请分别输入该数的实部和虚部:"<<endl;

 cin>>c.real>>c.imag;

}

void showData(COMPLEX c)

{

 cout<<c.real;

 if(c.imag>0)

  cout<<"+";

 cout<<c.imag<<'i';

}

void comAdd(COMPLEX a,COMPLEX b,COMPLEX &c)

{

 c.real=a.real+b.real;

 c.imag=a.imag+b.imag;

}

void comSub(COMPLEX a,COMPLEX b,COMPLEX &c)

{

 c.real=a.real-b.real;

 c.imag=a.imag-b.imag;

}

void comMul(COMPLEX a,COMPLEX b,COMPLEX &c)

{

 c.real=a.real*b.real-a.imag*b.imag;

 c.imag=a.real*b.imag+a.imag*b.real;

}

void comDiv(COMPLEX a,COMPLEX b,COMPLEX &c)

{

 c.real=(a.real*b.real+a.imag*b.imag)/(b.real*b.real+b.imag*b.imag);

 c.imag=(a.real*b.imag-a.imag*b.real)/(b.real*b.real+b.imag*b.imag);

}

int main()

{

 COMPLEX a,b,c;

 cout<<"请输入第一个复数:"<<endl;

 inputData(a);

 cout<<"你输入的复数是:";

 showData(a);

 cout<<endl<<"请输入第二个复数:"<<endl;

 inputData(b);

 cout<<"你输入的复数是:";

 showData(b);

 cout<<endl;

 cout<<"加法结果为:";

 comAdd(a,b,c);

 showData(c);

 cout<<endl<<"减法结果为:";

 comSub(a,b,c);

 showData(c);

 cout<<endl<<"乘法结果为:";

 comMul(a,b,c);

 showData(c);

 cout<<endl<<"除法结果为:";

 comDiv(a,b,c);

 showData(c);

 cout<<endl;

 return 0;

}

温馨提示:内容为网友见解,仅供参考
第1个回答  2009-06-25
啊,我也不大会
第2个回答  2009-06-25
都是乱写的,能用就行了

第一个

#include <iostream>
using namespace std;

class elements{
int number;
static elements *head;
elements *next;
public:
static void print_list(){ elements *tail;
tail=head;
while(tail){
cout<<tail->number<<endl;
tail=tail->next;
}}
static elements *gethead(){return head;}
static void add(int);
int getnumber(){return number;}
elements *getnext(){return next;}
};

void elements::add(int tem){
elements *head2;
head2=elements::head;
elements *tail=head2;
if (head2==NULL){
head2=new elements;
head2->number=tem;
head2->next=NULL;
}
else{ //head2!=NULL
if (head2->number>=tem){
tail=new elements;
tail->number=tem;
tail->next=head2;
head2=tail;
}
else{
while ((tail->next)&&(tail->number<tem))
tail=tail->next;
if ((!tail->next)&&(tail->number<=tem)){
tail->next=new elements;
tail=tail->next;
tail->number=tem;
tail->next=NULL;
}
else{
elements *tail2;
tail2=head2;
while (tail2->next!=tail)
tail2=tail2->next;
tail2->next=new elements;
tail2=tail2->next;
tail2->number=tem;
tail2->next=tail;
}
}
}
head=head2;
}

elements *elements::head=NULL;

int main(){
int ask;
while(1)
{cout<<"choose: 1.add number 2.print list 3.exit"<<endl;
cin>>ask;
if (ask==1){
int tem;
cout<<"input value:";
cin>>tem;
elements::add(tem);
}
if (ask==2)
elements::print_list();
if (ask==3)
return 0;
}

return 0;
}

-----------------------------------

第二个

#include <iostream>
#include <cmath>
using namespace std;
void pn(int tem){
int b=0;
if (tem<2)
b=1;
else if (tem==2)
b=0;
else{
int i;
for (i=4;(int) sqrt(i)<tem;i++){
if (tem%((int) sqrt(i))==0)
b=1;
}
}
if (b==1)
cout<<"not prime number!"<<endl;
else if (b==0)
cout<<"prime number!"<<endl;
}
int main(){
int x;
cout<<"input value:";
cin>>x;
int i;
for (i=0;x>0;i++){
cout<<x%10<<"---";
pn(x%10);
x=(int) x/10;
}
}

至于第三个,我以为题目要求是可以表达式形式输入,看了 51_fun ,发现似乎题目并没有这么要求
相似回答