鱼C论坛

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

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

[复制链接]
发表于 2020-11-30 11:03:52 | 显示全部楼层 |阅读模式
30鱼币
课程设计的题目,救救孩子吧
最佳答案
2020-11-30 11:03:53
发代码被审核了
a3735a8078dd0e6913c2d08e4563b6ae.jpg

最佳答案

查看完整内容

发代码被审核了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

未命名1.zip

1.54 KB, 下载次数: 10

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-11-30 22:16:48 | 显示全部楼层
你要的这7个程序,我这里都有现成的,可是你发的是悬赏帖,我除了得到你这30个鱼币外,什么也得不到啊。可是,鱼币对我来说也没有什么用呀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-11-30 22:23:31 | 显示全部楼层
风过无痕1989 发表于 2020-11-30 22:16
你要的这7个程序,我这里都有现成的,可是你发的是悬赏帖,我除了得到你这30个鱼币外,什么也得不到啊。可 ...

有现成的吗哥,发其他的贴不就更加啥也没有了吗,求一个源代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-11-30 22:35:23 | 显示全部楼层
冯云星 发表于 2020-11-30 22:23
有现成的吗哥,发其他的贴不就更加啥也没有了吗,求一个源代码

发普通的求助帖子,你选为最佳答案,系统给我的奖励是:鱼币+3,荣誉+2,技术+1
先说鱼币,在论坛久了,自然不缺,还是购买了会员,鱼币也就一文不值了
再说荣誉,每天登录回帖子,也不那么重要
在论坛,最重要的是技术值,它是买不来的,通过每一个最佳答案,得一个,所以就很重要了。

算了,反正也没有其他的事,我将这7个程序整合到一块,再调试好,一个小时后,你再来领取吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-11-30 22:38:00 | 显示全部楼层
风过无痕1989 发表于 2020-11-30 22:35
发普通的求助帖子,你选为最佳答案,系统给我的奖励是:鱼币+3,荣誉+2,技术+1
先说鱼币,在论坛久了, ...

原来如此,懂了懂了,谢谢哥
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-11-30 22:49:09 | 显示全部楼层
冯云星 发表于 2020-11-30 22:23
有现成的吗哥,发其他的贴不就更加啥也没有了吗,求一个源代码

三个数排序是什么规则?由大到小,还是由小到大?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-11-30 22:59:58 | 显示全部楼层
风过无痕1989 发表于 2020-11-30 22:49
三个数排序是什么规则?由大到小,还是由小到大?

都可以,老师没要求
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

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

void SelectSort(int a[],int n)
{
    int i,j,temp,max;
    for(i=0;i<n-1;i++)
    {
        max=i;
        for(j=i+1;j<n;j++)
        {
            if(a[max]<a[j])
            {
                max=j;
            }
        }
        if(max!=i)
        {
            temp=a[max];
            a[max]=a[i];
            a[i]=temp;
        }
    }
}

void print(int arr[], int n){
        if(n == 0)return ;
        printf("%d",arr[0]);
        for(int i = 1; i < n; ++i){
                printf(" %d",arr[i]);
        }
        putchar('\n');
}

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

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

void compute(){
        double a,b;
        printf("请输入2个数字: "); 
    scanf("%lf%lf",&a,&b);
    printf("%.2lf + %.2lf = %.2lf\n\
%.2f - %.2f = %.2f\n\
%.2f * %.2f = %.2f\n\
%.2f / %.2f = %.2f\n",a,b,a+b,a,b,a-b,a,b,a*b,a,b,a/b);
                
}

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

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

  int left = 0, right = n - 1;
  while(left <= right){
    // Prevent (left + right) overflow
    int mid = left + (right - left) / 2;
    if(nums[mid] == target){ return mid; }
    else if(nums[mid] < target) { left = mid + 1; }
    else { right = mid - 1; }
  }

  // End Condition: left > right
  return -1;
}

int main(void){
        while(true){
                init();
                int choose;
                scanf("%d",&choose);
                switch(choose){
                        case 1 :
                                {
                                        printf("请输入3个数: ");
                                        int arr1[3] = {0};
                                        for(int i = 0; i < 3; ++i){
                                                scanf("%d", &arr1[i]);
                                        }
                                        SelectSort(arr1,3);
                                        print(arr1,3);
                                        break;
                                }
                        case 2 :
                                leap_year();
                                break;
                        case 3 :
                                triangle();
                                break;
                        case 4 :
                                compute();
                                break;
                        case 5 :
                        {
                                        int arr2[10] = {0};
                                        printf("请输入10个数: ");
                                        for(int i = 0; i < 10; ++i){
                                                scanf("%d",&arr2[i]);
                                        }
                                        maxmin(arr2,10);
                                        break;
                        }
                        case 6 :
                        {
                                int arr3[10] = {0};
                                printf("请输入10个数: ");
                                for(int i = 0; i < 10; ++i){
                                        scanf("%d",&arr3[i]);
                                }
                                SelectSort(arr3,10);
                                print(arr3,10);
                                break;
                        }
                                
                        case 7 :
                        {
                                int arr4[10] = {0};
                                printf("请输入10个数: ");
                                for(int i = 0; i < 10; ++i){
                                        scanf("%d",&arr4[i]);
                                }
                                int x;
                                printf("请输入要查找的值: ");
                                scanf("%d",&x); 
                                int index = binarySearch(arr4,10,x);
                                if(index == -1){
                                        printf("数组中没有%d",x);
                                }else {
                                        printf("%d的下标为%d",x,index);
                                }
                                putchar('\n');
                                break;
                        }
                        case 8 : 
                                return 0;
                }
        }
        return 0;
} 
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-11-30 23:20:33 | 显示全部楼层
这些程序都不难, 平时多练习基本都会
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-12-1 01:23:30 | 显示全部楼层
本帖最后由 风过无痕1989 于 2020-12-1 13:09 编辑

上面的朋友已经给出了答案,而我在第 8 段那里费了几个小时,都没能成功,代码还是给你吧(前面的 7 种 case,加上文件头,都可以是单独的程序)
#include <stdio.h>
#include <stdlib.h>
#include<math.h>
int sort(int n,int a[]);

int sort(int n,int a[])     // 因第 6、7 段程序的需要,定义排序函数
{
    int i, j, p, temp;
    for(i=0; i < n; i++)
    {
        p = i;
        for(j = i + 1; j < n; j++)    //找出数组中的最大值
            if(a[p] > a[j])    // 由小至大排序 
                p = j;
        if(p != i)    //将最大值与a[0]调换
        {
            temp = a[i];
            a[i] = a[p];
            a[p] = temp;
        }
    }
    return 0;
}


int main()
{
        int n;
        printf("请选择:1、三个排序;2、闰年识别;3、三角形面积计算;4、四则运算;");
        printf("5、10个数的最大值与最小值;6、选择法排序;7、二分法查找;8、退出程序;");
        scanf("%d", &n);

        switch (n)
        {
        case 1:
        {
                int a, b, c,max, mid, min;
                printf("请输入3个数: ");
                scanf("%d%d%d", &a, &b, &c);
                max = a;
                min = a;
                if (max < b)
                        max = b;
                if (max < c)
                        max = c;
                if (min > b)
                        min = b;
                if (min > c)
                        min = c;
                mid = a + b + c - max - min;
                printf("%d %d %d\n", max,mid,min);
                break;
        }
        case 2:
        {
                int year;
                printf("请输入待查询的年份:");
                scanf("%d", &year);
                if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
                {
                        printf("输入的年份 %d 是闰年\n", year);
                }
                else
                        printf("输入的年份 %d 不是闰年\n", year);
                break;
        }
        case 3:
        {
                double a, b, c, s, area;
                printf("输入三角形的三条边:");
                scanf("%lf%lf%lf", &a, &b, &c);
                s = (a + b + c) / 2.0;
                area = sqrt(s*(s - a)*(s - b)*(s - c));
                printf("面积 = %.2lf\n", area);
                break;
        }
        case 4:
        {
                int i;
                double a, b;
                char c, str[4];
                printf("请输入因数及运算符:");
                scanf("%lf%lf%s", &a, &b, str);
                for (i = 0;i < 4;i++)
                {
                        if (str[i] == '+' || str[i] == '-' || str[i] == '*' || str[i] == '/')
                        {
                                c = str[i];
                        }
                }
                if (c == '+')
                {
                        printf("%.2f\n", a + b);
                }
                else if (c == '-')
                {
                        printf("%.2f\n", a - b);
                }
                else if (c == '*')
                {
                        printf("%.2f\n", a*b);
                }
                else if (c == '/')
                {
                        if (b != 0)
                        {
                                printf("%.2f\n", a / b);
                        }
                        else
                        {
                                printf("除数不能为0 !\n");
                        }
                }
                break;
        }
        case 5:
        {
                int i, j, min = 0, max = 0;
                int a[2][5] = {0};
                printf("请输入10个数:");
                for (i = 0;i < 2;i++)
                {
                        for (j = 0;j < 5;j++)
                        {
                                scanf("%d", &a[i][j]);
                        }
                }

                max = a[0][0];
                min = a[0][0];
                for (i = 0;i < 2;i++)
                {
                        for (j = 0;j < 5;j++)
                        {
                                if (max < a[i][j])
                                {
                                        max = a[i][j];
                                }
                                if (min > a[i][j])
                                {
                                        min = a[i][j];
                                }
                        }
                }
                printf("最大的值是:%d ", max);
                printf("最小的值是:%d ", min);
                break;
        }
        case 6:
        {
                int i, n, a[11];
                printf("enter data: ");
                for (i = 0;i < 10;i++)
                {
                     scanf("%d", &a[i]);
                }
    
                n = sizeof(a) / sizeof(int);
                sort(n,a);    // 调用函数,实现选择法排序

                printf("The sorted numbers: ");
                for (i = 0;i < 10;i++)
                printf("%d ", a[i]);
                printf("\n");
                break;
        }
        case 7:
        {
                int a[] = { 1,5,66,8,55,9,1,32,5,65,4,8,5,15,64,156,1564,15,1,8,9,7,215,
                        16,45,5,6,164,15,236,2,5,55,6,4,1,59,23,4,5,314,56,15,3,54,
                        1,54,54,2,4,4,5,15,698,486,56,26,98,78,456,1894,564,26,56,5 };
                int left = 0;
                int right = 9;
                int mid;
                int n;  //存放数组a中元素的个数
                int m;  //查找的数字
                int i;  //循环变量
                
                n = sizeof(a) / sizeof(int);  //求出数组中所有元素的个数
                sort(n,a); 

                printf("请输入待查找的数字: ");
                scanf("%d", &m);
                while (left <= right)           // 二分法查找
                {
                    mid = (left + right) / 2;
                    if (a[mid] > 1.5)
                    {
                        right = mid-1;
                    }
                    else if (a[mid] < 1.5) 
                    {
                           left = mid + 1;
                    }
                    else
                    {
                           printf("在位于:%d 找到了所输入的数\n", mid);
                           break;
                    }
                }
                if (left > right)
                {
                       printf("找不到所输入的数");
                }
                return 0;
                break;
        }
        case 8:
        {
                   // 退出控制台程序
        }
        }
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-12-1 11:12:11 | 显示全部楼层
风过无痕1989 发表于 2020-12-1 01:23
上面的朋友已经给出了答案,而我在第 8 段那里费了几个小时,都没能成功,代码还是给你吧(前面的 7 种 cas ...

谢谢哥
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-12 13:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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