C++实验14
来源:互联网 发布:申报数据库免费吗 编辑:程序博客网 时间:2024/05/22 12:26
一、分解质因子
#include<iostream>using namespace std;#include<math.h>void prime(int b[],int n){ int flag; int m=0; for(int i=2;i<n;i++) { flag=true; for(int j=2;j<=sqrt(float(i));j++) if(i%j==0) { flag=false; break; } if(flag) b[m++]=i; }}void fun(int a[],int num, int *count){ int n=0; int flag; for(int i=2;i<=num;i++) { flag=false; if(num%i==0) for(int j=0;j<20;j++) { if(*(count+j)%i==0) { a[n++]=i; flag=true; break; } } if(flag) { num=num/i; i=1; } }}void main(){ int b[30]={0},a[10]={0}; int n=100; prime(b,n); int *count=b; int num; cout<<"请输入要分解的整数:\n"; cin>>num; fun(a,num,count); cout<<num<<"="; for(int i=0;a[i];i++) { if(a[i+1]) cout<<a[i]<<"*"; else cout<<a[i]<<endl; }}
按题目要求过于麻烦,故简化下:
#include<iostream>using namespace std;#include<math.h>bool primeornot(int n){ int flag=true; for(int i=2;i<=sqrt(float(n));i++) if(n%i==0) { flag=false; break; } return flag;}void fun(int num,int *p){ int m=0; for(int i=2;i<=num;i++) if(num%i==0&&primeornot(i)) { *(p+m++)=i; num=num/i; i=1; }}void main(){ int num; cin>>num; int b[10]={0}; fun(num,b); int i=0; while(b[i]) cout<<b[i++]<<'\t';}
处理线性表
#include<iostream>using namespace std;#include<time.h>#include<stdlib.h>struct node{ int data; node *link;};class chaintable{ node *head; //存放链表表头 int n; //存放链表长度public: void initial(int m=10) { n=m; srand(time(NULL)); head=0; node *p; for(int i=0;i<m;i++) { p=new node; p->data=rand()%100; if(!head) //如果此时链表不存在,即刚开始创建 { head=p; head->link=0; } else //链表已存在,数据链接到链表头 { p->link=head; //先后顺序不能反 head=p; } } } int length() { } void print() { node *p=head; //用p来指向链表开头,否则会修改链表head while(p->link) //判断此节点不是尾节点 { cout<<p->data<<'\t'; p=p->link; } cout<<p->data<<endl;//尾节点未输出,补上 } void del(); void addinend() { node *p= new node; cout<<"请输入需增加的值:"; cin>>p->data; node *p1=head; while(p1->link) p1=p1->link; p1->link=p; p->link=0; }void coutn(){ cout<<n;}};void chaintable::del(){ node *p; while(head->link) { p=head; head=head->link; delete p; } delete head;//尾节点未释放,补上}void main(){ chaintable a; a.initial(); cout<<"已建立的链表为:\n"; a.print(); int n=true; while(n) { cout<<"请选择:\n"<<"1 末尾增加链表元素\n"<<"2 输出链表\n"<<"0 结束\n"; cin>>n; if(n==1) a.addinend(); if(n==2) a.print(); } a.del();}
阅读全文
0 0
- [C++]实验三
- c语言实验
- 哈希表实验C语言版
- C语言 枚举实验
- C-S通信实验
- C#-实验3
- C 实验总结
- C程序设计实验1
- C程序设计实验2
- c语言实验
- C++-实验-项目五
- C#—实验10.4
- C++---第七次实验。
- c++--补第二次实验
- C语言递归实验
- C语言实验-素数
- C+实验2
- C++STL 第二次实验
- [Python模块学习]使用base64模块进行二进制数据编码
- 动态规划算法解最长公共子序列LCS问题
- 代理设计模式之静态代理与动态代理
- 计算机网络
- 获取VirtualBox COM对象失败,Unable to start the virtual device
- C++实验14
- Vue.js基本使用之双向绑定
- jQuery-个人学习记录(2)
- 用Java设计实现Python中的生成器
- PHP方法实现1-9数列中添加‘+’,‘-’或'',使和为100,并输出数列
- 流程控制语句——if选择结构语句
- Python装饰器3
- Android——蓝牙错误状态码大全
- XML的解析 DOM解析