鱼C论坛

 找回密码
 立即注册
查看: 1636|回复: 1

[已解决]求助:C语言大作业-常用算法软件debug

[复制链接]
发表于 2018-6-21 01:05:24 | 显示全部楼层 |阅读模式
18鱼币
  1. #include <stdio.h>
  2. #include "stdlib.h"
  3. #include "time.h"
  4. #include "math.h"

  5. void random();
  6. void sort1();
  7. void sort2();
  8. void sort3();
  9. void sushu();
  10. void search();
  11. void transfer();
  12. void insert();
  13. void dele();
  14. int a[10][10],*p;

  15. void menu()
  16. {
  17.                 int n;
  18.                 printf("\n请输入需要执行的功能代码:");
  19.                 printf("\n1.生成100个随机数\n");
  20.                 printf("2.选择法排序\n");
  21.                 printf("3.冒泡法排序\n");
  22.                 printf("4.插入法排序\n");
  23.                 printf("5.查找数据\n");
  24.                 printf("6.转换二进制\n");
  25.                 printf("7.转换为素数之和\n");
  26.                 printf("8.插入数据\n");
  27.                 printf("9.删除数据\n");
  28.                 scanf("%d",&n);
  29.                 switch(n)
  30.                 {
  31.                 case 1: rand();break;
  32.                 case 2: sort1();break;
  33.                 case 3: sort2();break;
  34.                 case 4: sort3();break;
  35.                 case 5: search();break;
  36.                 case 6: transfer();break;
  37.                 case 7: sushu();break;
  38.                 case 8: insert();break;
  39.                 case 9: dele();break;
  40.                 default:printf("无此功能");
  41.                 }

  42. }

  43. void random()
  44. {//生成100个随机数
  45.         int i,j;
  46.         srand((unsigned) time(NULL));
  47.         for(i=0;i<10;i++)
  48.                 {
  49.                         for(j=0;j<10;j++)
  50.                         {
  51.                                 a[10][10]=rand();
  52.                                 printf("%3d\t",rand()%99);
  53.                         }printf("\n");
  54.                 }
  55. }

  56. void sort1()
  57. {   //选择法排序
  58.    p=(int*)a;//降为一维数组
  59.       printf("排序后:\n");
  60.         int i,j,k,t;
  61.         for(t=i=0;i<100;i++)
  62.         {
  63.         for(k=i,j=k+1;j<100;j++)
  64.             if(p[k]>p[j])
  65.                 k=j;
  66.         if(k!=i)
  67.             j=p[k],p[k]=p[i],p[i]=j;
  68.         printf(++t%10 ? "%3d" : "%3d\n",p[i]);
  69.         }
  70.                
  71. }

  72. void sort2()
  73. {   //冒泡法排序
  74.         p=(int*)a;//降为一位数组
  75.         int i,j,k,t;
  76.         printf("排序后:\n");
  77.         k=100-1;
  78.         for(j=1;j<=100-1;j++,k--)
  79.                 for(t=i=0;i<=k-1;i++)
  80.                         if(p[i]>p[i+1])
  81.                         {
  82.                                 t=p[i];
  83.                                 p[i]=p[i+1];
  84.                                 p[i+1]=t;
  85.                         }
  86.                         for(i=0;i<100;i++)
  87.                         { printf (++t%10 ? "%3d" : "%3d\n",p[i]);}
  88. }

  89. void sort3()
  90. {   //插入法排序
  91.    p=(int*)a;//降为一维数组
  92.         int i,j,t;
  93.         printf("排序后:\n");
  94.         for(i=2;i<100;i++)
  95.         {
  96.                 t=p[i];
  97.                 for(j=i-1;j>=0 && p[j]>t;j--)
  98.                         p[j+1]=p[j];
  99.                         p[j+1]=t;
  100.         }
  101.          for(t=i=0;i<100;i++)
  102.                 printf(++t%10 ? "%3d":"%3d\n",p[i]);

  103. }

  104. void search()
  105. {//查找数据
  106.         int i,j,flag=0,num;
  107.                 printf("请输入需查找的数:");
  108.                 scanf("%d",&num);
  109.         for(i=0;i<10;i++)
  110.         {
  111.                         for(j=0;j<10;j++)
  112.                         {
  113.                                 if(a[i][j]==num)
  114.                                 {
  115.                                         flag=1;
  116.                                         printf("该数所在位置(%d,%d)\n",i+1,j+1);
  117.                                 }
  118.                         }
  119.         }
  120.         if(flag==0)
  121.         {printf("无此数\n");}
  122. }


  123. void transfer()
  124. {//转换二进制            
  125.                 p=(int *)a;//降为一维
  126.                 int i,t;
  127.                 int b,c,d,e,f,g,h;
  128.                 char j;
  129.         for (t=i=0;i<100;i++)
  130.         {
  131.                 t=p[i];
  132.                 b=t%2;
  133.                 c=t/2%2;
  134.                 d=t/4%2;
  135.                 e=t/8%2;
  136.                 f=t/16%2;
  137.                 g=t/32%2;
  138.                 h=t/64%2;
  139.                 printf("%d%d%d%d%d%d%d ",h,g,f,e,d,c,b);
  140.         }
  141. }

  142. void sushu()
  143. {//转换为素数之和
  144.         p=(int*)a;//降为一维
  145.         printf("将其中的偶数转换为素数之和后:\n");
  146.         int i,b,c,d;
  147.         for(i=0;i<100;i++)
  148.         {
  149.                 for(b=3;b<=p[i]/2;b+=2)  //先寻找一个素数
  150.                 {
  151.                         for(c=2;c<=sqrtl(b);c++)
  152.                                 if(b%c==0) break;  //b不是一个素数
  153.                         if(c>sqrtl(b)) //b是素数
  154.                 d=p[i]-b;  
  155.             else  
  156.                 break;
  157.                         for(c=2;c<=sqrtl(d);c++)
  158.                                 if(d%c==0) break;  //差值d不是一个素数
  159.                         if(c>sqrtl(d))  //加入差值d也是一个素数,找到,打印
  160.                                 printf("%d=%d+%d\t",p[i],b,d);  
  161.     }
  162. }
  163. }

  164. void insert()
  165. {//插入数据
  166.         int i,j,k,t;
  167.         p=(int *)a;
  168.     for(t=i=0;i<100;i++)
  169.         {//排序
  170.         for(k=i,j=k+1;j<100;j++)
  171.             if(p[k]>p[j])
  172.                 k=j;
  173.         if(k!=i)
  174.             j=p[k],p[k]=p[i],p[i]=j;
  175.     }
  176.         int n;
  177.     printf("\n请输入你要插入的数:\n");
  178.     scanf("%d",&n);
  179.     for(i=0;i<100;i++)
  180.     {
  181.         if(p[i]>n)
  182.         {
  183.             for(j=99;j>=i;j--)
  184.             {
  185.                 p[j+1]=p[j];
  186.             }
  187.             p[i]=n;
  188.             break;
  189.         }
  190.     }
  191.     for (i=0; i<100; i++)
  192.         {   printf(++t%10 ? "%3d" : "%3d\n",p[i]);
  193.         printf("\n");}
  194. }

  195. void dele()
  196. {//删除数据       
  197.    p=(int*)a;//降为一维
  198.         int i,d,n=0;
  199.         printf("请输入需要删除的数:");
  200.         scanf("%d",&d);
  201.         for(i=0;i<100;i++)
  202.                 if(d==p[i])
  203.                         break;
  204.         if(i<100)
  205.         {
  206.                 while(i<99)
  207.                 { p[i++]=p[i+1]; }
  208.                                 printf("新数组:\n");
  209.                 for(i=0,n=0;i<99;i++)
  210.                 { printf (++n%10 ? "%3d" : "%3d\n",p[i]); }
  211.                 putchar('\n');
  212.         }
  213.         else printf("无此数?\n");
  214. }

  215. void main()
  216. {
  217.         int n;
  218.         while(1)
  219.         { menu();
  220.         scanf("%d",&n);
  221.         switch(n)
  222.         {
  223.                 case 1: rand();break;
  224.                 case 2: sort1();break;
  225.                 case 3: sort2();break;
  226.                 case 4: sort3();break;
  227.                 case 5: search();break;
  228.                 case 6: transfer();break;
  229.                 case 7: sushu();break;
  230.                 case 8: insert();break;
  231.                 case 9: dele();break;
  232.                 default:printf("无此功能");
  233.         }
  234.         }
  235. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-6-21 01:05:25 | 显示全部楼层    本楼为最佳答案   
360截图1847020592101122.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-20 08:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表