计算机软件基础课程设计1.docVIP

  • 8
  • 0
  • 约7.46千字
  • 约 7页
  • 2018-04-30 发布于河南
  • 举报
计算机软件基础课程设计1.doc

要求: 写出解题思路、程序、程序注释以及运行结果。 1、编写程序,计算下列多项式的值并输出,直到最后一项的值小于0.0001。 解题思路: 先求阶乘k*=i 再求阶乘的倒数f=1.0/k 3)最后求和s+=f #includestdio.h main( ) { int i,n,k=1; float s=0,f=1.0; i=1; while(f=1e-4) /*最后一项小于0.0001时跳出*/ { k*=i; /* 求阶乘*/ f=1.0/k; /* 阶乘的倒数*/ s+=f; /*求和*/ i++; } printf(“s=%f\n”,s); } 运行结果:1.718214 2、设二维数组A[6][6]表示6节点无向图的邻接矩阵,编写程序,从键盘上输入邻接矩阵的数据,求出该无向图的边数以及各个节点的度,输出所求结果。 解题思路: 先输入A【6】【6】的无向图的邻接矩阵 计算无向图的边数if(a[i][j]=1)b+=1; 求各个节点的度s+=b #includestdio.h main() { int a[6][6],i,j,b,s; for(i=0;i6;i++) /*矩阵有6行*/ for(j=0;j6;j++) /*矩阵有6列*/ scanf(%d,a[i][j]); /*接收无向图的邻接矩阵*/ s=0; for(i=0;i6;i++) { b=0; for(j=0;j6;j++) if(a[i][j]=1)b+=1; /*无向图的边数*/ printf(%d node degree:%d\n,i,b); s+=b; } printf(The sum is %d\n,s/2); } 运行结果: 0 1 0 1 0 1 1 0 1 0 1 1 0 1 0 1 1 1 1 0 1 0 0 1 0 1 1 0 0 1 0 1 0 0 0 1 输入 0 node degree:6 输出 1 node degree:6 2 node degree:6 3 node degree:6 4 node degree:6 5 node degree:6 The sum is 18 3、编写程序,实现对5个整数按由小到大进行交换排序。 解题思路: 1)n个数需进行n-1趟排序,i从1到n-1变化 2)每趟比较次数为j=n-i。第一趟,i=1,比较次数j=5-1=4;第二趟,i=2,比较次数j=5-2=3;第三趟,i=3,比较次数j=5-3=2.所以,j从1到n-i变化。 相邻两数比较,即x【j】和x【j+1】。 程序 #define N 5 Void bustor(int x[ ],int n) { int I,j,m,k; For ( i=1;i=n-1;i++) /*n个数进行n-1趟排序*/ { k=1; /*各趟开始假定本趟不会发生数据交换*/ For ( j=1;j=n-I;j++) /*第i趟比较n-i次*/ If( x[ j ]x[ j+1 ] ) /*若前面的数大于后面的数则交换*/ { m=x[ j ]; X[ j ] =x[ j+1 ]; /*相邻两数交换*/ X[ j+1 ]=m; K=0; /*本趟发生了数据交换*/ } If ( k==1 ) break; /*若第i趟发生数据交换,则排序结束*/ } } /*返回main函数中调用语句 bustor (a,n);的下一句*/ main ( ) /*程序由此开始*/ { int a[ N+1],I; for ( i=1;I=N;i++ ) scanf( “ %d”,a[ I ] ); /*输入N个数*/ bustor( a,N ); /*调用冒泡排序函数*/ for ( i=1,i=N

文档评论(0)

1亿VIP精品文档

相关文档