c语言程序综合设计cpp文件.doc_第1页
c语言程序综合设计cpp文件.doc_第2页
c语言程序综合设计cpp文件.doc_第3页
c语言程序综合设计cpp文件.doc_第4页
c语言程序综合设计cpp文件.doc_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1#include #include #define LEN sizeof(struct node)struct node double num;struct node * next;int n1=0;int n2=0; int len = 0; struct node * create_list(struct node * head,int n,int flag) struct node * p1,* p2;printf(请输入数列,以回车键结束一个数字的输入,以ctrl+z结束一数列的输入.n);p1 = p2 = (struct node *)malloc(LEN);while(scanf(%lf,&p1-num) != EOF) n+; if(n=1) head = p1; else p2-next = p1; p2 = p1; p1 = (struct node *)malloc(LEN);p2-next = NULL;free(p1);if (flag = 1) n1 = n;if (flag = 2) n2 = n;return(head);struct node * convert_list(struct node * head)struct node * p1,* p2;double t;p1 = p2 = (struct node *)malloc(LEN);p1 = p2 = head;while(p1 != NULL) p2 = p1-next; while(p2 != NULL) if(p1-num num) t = p1-num; p1-num = p2-num; p2-num = t; p2 = p2-next; p1 = p1-next;free(p1);free(p2);return(head);int main()struct node * head,* head1,* head2,* temp,* p,* p1,* p2; head = head1 = head2 = temp = p = p1 = p2 = (struct node *)malloc(LEN);head1 = create_list(head1,n1,1); head2 = create_list(head2,n2,2);head1 = convert_list(head1);head2 = convert_list(head2);temp = head1;while(temp != NULL) printf(%5.2f ,temp-num); temp = temp-next;printf(n);temp = head2;while(temp != NULL) printf(%5.2f ,temp-num); temp = temp-next;printf(n);p1 = head1; p2 = head2;while( (n1 != 0) & (n2 != 0) ) len+; if(p1-num = p2-num) p-num = p1-num; p1 = p1-next; n1-; else p-num = p2-num; p2 = p2-next; n2-; if(len=1) head = p; else temp-next = p; temp = p; p = (struct node *)malloc(LEN);if(n1 = 0) temp-next = p2;if(n2 = 0) temp-next = p1;temp = head;while(temp != NULL) printf(%5.2f ,temp-num); temp = temp-next;printf(n);free(head);free(head1);free(head2);free(temp);free(p);free(p1);free(p2);return 0;2#include#define N 100000void main()int i,j,n,sum=1,top=0;int aN=0,bN=0;scanf(%d,&n);if(n10)for(i=1;i=n;i+)sum*=i;printf(%dn,sum);elsefor(i=1;i=9;i+)sum*=i;i=0;while(sum)ai=sum%10;sum/=10;i+;top=i-1;for(j=10;j=n;j+)a0*=j;b0=a0/10;a0%=10;for(i=1;itop;i+)ai=ai*j+bi-1;bi=ai/10;ai%=10;atop=atop*j+bi-1;btop=atop/10;atop%=10;while(btop)top+;atop=btop-1%10;btop=btop-1/10;for(j=0;j=top;j+)if(j%50=0) printf(n);printf(%d,atop-j);printf(n);3#includeint result = 1;int chess8; int check( int n ) int i; for (i = 1; i = n - 1; i+) if ( (chessi = chessn) | (chessn-chessi)=(n-i) |(chessn-chessi)=(i-n) ) return 0; return 1; void show_chess(void) int i; printf(第%2d个解决方案:, result+); for (i = 1; i = 8; i+) printf( %d , chessi); printf(n);void putchess( int n ) int i; if (n = 8) for (i = 1; i = 8; i+) chessn = i; if (check(n) = 1) if (n = 8) show_chess(); else putchess(n + 1); int main() int b;key: printf(这里是8皇后问题的递归解决方法:n);printf(请输入数字8n);scanf(%d,&b);if(b=8) putchess(1); else goto key; return 0;4/*高斯消元解N元一次方程*/#include #include #include #define EPS 1e-6#define N 200int n;double gaussNN;/存序数矩阵double answerN;/用来存有唯一解是的答案int input()int i,j;if (scanf(%d,&n)=EOF) return 0;for (i=0;in;i+)for (j=0;j=n;j+)scanf(%lf,&gaussij);return 1;void swap(double &a,double &b)double c;c=a;a=b;b=c;/*判断方程是否有解,返回值是0表示无解返回值是1表示有唯一解返回值是2表示有无穷多解*/int slove_gaussa()int i,j,k,p;for (j=0;jn;j+)p=j;for (i=j+1;ifabs(gausspj) p=i;if (fabs(gausspj)EPS) continue;if (p!=j)for (k=j;k=n;k+)swap(gausspk,gaussjk);for (i=j+1;i=j;k-)gaussik-=gaussjk*gaussij/gaussjj;bool r=false;for (i=0;in;i+)int num1=0,num2=0;for (j=0;jn;j+)if (fabs(gaussij)EPS) num1+;if (fabs(gaussji)=0;-j)answerj=gaussjn/gaussjj;for (i=j-1;i=0;-i)gaussin-=gaussij*answerj;return 1;int main()freopen(in4.txt,r,stdin);freopen(out4.txt,w,stdout);while (input()int i;int yes= slove_gaussa();/*for (int i=0;in;i+)for (int j=0;j=n;j+)printf(%lf ,gaussij);putchar(10);*/if (yes=0) printf(此N元一次方程无解n);else if (yes=2)printf(此N元一次方程有无穷多解n);elseprintf(此N元一次方程有唯一解:n);for (i=0;in;i+)printf(%.2lf ,answeri);putchar(10);return 0;5#include#includechar cmp100151,stack151,stack251,num100151; bool check(char k) if(k=A&k=a&k=0&k=A&k=a&k=z|k=_) return true; return false; int main() int n,i,j; char a1001,x1001; scanf(%d%*c,&n); int icase=0; while(n-) printf(Case %d:n,+icase); gets(a); int lena=strlen(a); int t=0,s=-1; for(i=0;ilena;i+) if(ai!= ) cmpt+s=ai; if(i=lena-1) cmpt+s=0; t+; else if(s!=-1) cmpt+s=0; s=-1; t+; gets(x); int lenx=strlen(x); int k=0,ok=1; s=-1; for(i=0;i=lenx;i+) if(check(xi)& ilenx) numk+s=xi; elseif(s!=-1) numk+s=0; for(j=0;jt;j+) if(strcmp(cmpj,numk)=0) break; if(j=t) for(j=0;js;j+) if(check2(numkj) break;if(js) printf(未定义变量%snn,numk); ok=0; break; s=-1; k+; /判断变量是否定义 int top1=-1,top2=-1; if(ok) for(i=0;i=0) top1-; else stack1+top1=); else if(xi=) stack2+top2=; else if(top2=0) top2-; else stack2+top2=; if(top1=0)if(top1=top2) printf(%c与%c不匹配nn,stack10,stack20);else if(stack10=() printf(左括号多余nn); else printf(右括号多余nn);ok=0; /堆栈 if(ok) for(i=0;ilenx;i+) if(xi=+&xi+1=+| xi=-&xi+1=-) if(i+2lenx & (check(xi+2) ) printf(%c%c后面不能再跟变量nn,xi,xi); ok=0; break; else if(check(xi) & i+1lenx & xi+1=() printf(变量后面不能直接跟左括号nn); ok=0; break; else if( i+1lenx &(xi=*|xi=(|xi=|xi=/|xi=+|xi=-|xi=%) &(xi+1=*|xi+1=|xi+1=|xi+1=)|xi+1=/|xi+1=+|xi+1=-|xi+1=%) if(xi=+|xi=-)& (xi=xi+1) | (i+3lenx &(xi=|

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论