鱼C论坛

 找回密码
 立即注册
查看: 2401|回复: 11

[已解决]C语言课程设计作业·,求求了·,救救孩子

[复制链接]
发表于 2020-11-30 11:03:53 | 显示全部楼层    本楼为最佳答案   
发代码被审核了

未命名1.zip

1.54 KB, 下载次数: 10

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-11-30 23:10:20 | 显示全部楼层
  1. #include <stdio.h>
  2. #include <stdbool.h>
  3. #include <math.h>
  4. #include <limits.h>
  5. #define max(a,b) (a > b ? a : b)
  6. #define min(a,b) (a > b ? b : a)

  7. void init(){
  8.         printf("\t\t\t1) 将3个数排序\n\
  9.                         2) 闰年识别\n\
  10.                         3) 三角形面积计算\n\
  11.                         4) 简单四则运算\n\
  12.                         5) 求10个数的最大最小值\n\
  13.                         6) 用选择法将10个数排序\n\
  14.                         7) 用二分法算法查找\n\
  15.                         8) 退出\n\n");
  16. }

  17. void SelectSort(int a[],int n)
  18. {
  19.     int i,j,temp,max;
  20.     for(i=0;i<n-1;i++)
  21.     {
  22.         max=i;
  23.         for(j=i+1;j<n;j++)
  24.         {
  25.             if(a[max]<a[j])
  26.             {
  27.                 max=j;
  28.             }
  29.         }
  30.         if(max!=i)
  31.         {
  32.             temp=a[max];
  33.             a[max]=a[i];
  34.             a[i]=temp;
  35.         }
  36.     }
  37. }

  38. void print(int arr[], int n){
  39.         if(n == 0)return ;
  40.         printf("%d",arr[0]);
  41.         for(int i = 1; i < n; ++i){
  42.                 printf(" %d",arr[i]);
  43.         }
  44.         putchar('\n');
  45. }

  46. void leap_year(){
  47.         int year;
  48.         printf("请输入一个年份: ");
  49.         scanf("%d",&year);
  50.         if(year%4==0&&year%100!=0||year%400==0)
  51.                 printf("%d是润年",year);
  52.         else printf("%d不是润年");
  53.         putchar('\n');
  54. }

  55. void triangle(){
  56.         double a, b, c;
  57.         printf("请输入三角形的三条边: ");
  58.     scanf("%lf %lf %lf", &a, &b, &c);
  59.     if( a + b > c && a + c > b && b + c > a )
  60.     {
  61.         double area , s ;
  62.         s = ( a + b + c ) / 2.0;
  63.         area = sqrt ( s * ( s - a ) * ( s - b ) * ( s - c ) );
  64.         printf("三角形的面积为: %.2f\n", area);
  65.     }
  66.     else printf("输入的三条边不能构成三角形\n");
  67. }

  68. void compute(){
  69.         double a,b;
  70.         printf("请输入2个数字: ");
  71.     scanf("%lf%lf",&a,&b);
  72.     printf("%.2lf + %.2lf = %.2lf\n\
  73. %.2f - %.2f = %.2f\n\
  74. %.2f * %.2f = %.2f\n\
  75. %.2f / %.2f = %.2f\n",a,b,a+b,a,b,a-b,a,b,a*b,a,b,a/b);
  76.                
  77. }

  78. void maxmin(int *arr, int n){
  79.         int mx = INT_MIN, mi = INT_MAX;
  80.         for(int i = 0; i < n; ++i){
  81.                 mx = max(arr[i],mx);
  82.                 mi = min(arr[i],mi);
  83.         }
  84.         printf("最大值为: %d\n最小值为: %d\n",mx,mi);
  85. }

  86. int binarySearch(int *nums, int n, int target){
  87.   if(n == 0)
  88.     return -1;

  89.   int left = 0, right = n - 1;
  90.   while(left <= right){
  91.     // Prevent (left + right) overflow
  92.     int mid = left + (right - left) / 2;
  93.     if(nums[mid] == target){ return mid; }
  94.     else if(nums[mid] < target) { left = mid + 1; }
  95.     else { right = mid - 1; }
  96.   }

  97.   // End Condition: left > right
  98.   return -1;
  99. }

  100. int main(void){
  101.         while(true){
  102.                 init();
  103.                 int choose;
  104.                 scanf("%d",&choose);
  105.                 switch(choose){
  106.                         case 1 :
  107.                                 {
  108.                                         printf("请输入3个数: ");
  109.                                         int arr1[3] = {0};
  110.                                         for(int i = 0; i < 3; ++i){
  111.                                                 scanf("%d", &arr1[i]);
  112.                                         }
  113.                                         SelectSort(arr1,3);
  114.                                         print(arr1,3);
  115.                                         break;
  116.                                 }
  117.                         case 2 :
  118.                                 leap_year();
  119.                                 break;
  120.                         case 3 :
  121.                                 triangle();
  122.                                 break;
  123.                         case 4 :
  124.                                 compute();
  125.                                 break;
  126.                         case 5 :
  127.                         {
  128.                                         int arr2[10] = {0};
  129.                                         printf("请输入10个数: ");
  130.                                         for(int i = 0; i < 10; ++i){
  131.                                                 scanf("%d",&arr2[i]);
  132.                                         }
  133.                                         maxmin(arr2,10);
  134.                                         break;
  135.                         }
  136.                         case 6 :
  137.                         {
  138.                                 int arr3[10] = {0};
  139.                                 printf("请输入10个数: ");
  140.                                 for(int i = 0; i < 10; ++i){
  141.                                         scanf("%d",&arr3[i]);
  142.                                 }
  143.                                 SelectSort(arr3,10);
  144.                                 print(arr3,10);
  145.                                 break;
  146.                         }
  147.                                
  148.                         case 7 :
  149.                         {
  150.                                 int arr4[10] = {0};
  151.                                 printf("请输入10个数: ");
  152.                                 for(int i = 0; i < 10; ++i){
  153.                                         scanf("%d",&arr4[i]);
  154.                                 }
  155.                                 int x;
  156.                                 printf("请输入要查找的值: ");
  157.                                 scanf("%d",&x);
  158.                                 int index = binarySearch(arr4,10,x);
  159.                                 if(index == -1){
  160.                                         printf("数组中没有%d",x);
  161.                                 }else {
  162.                                         printf("%d的下标为%d",x,index);
  163.                                 }
  164.                                 putchar('\n');
  165.                                 break;
  166.                         }
  167.                         case 8 :
  168.                                 return 0;
  169.                 }
  170.         }
  171.         return 0;
  172. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-11-30 23:20:33 | 显示全部楼层
这些程序都不难, 平时多练习基本都会
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-2 03:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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