C语言作业8

1.

#include <stdio.h>
#include <stdlib.h>
#define  ARR_SIZE  40

int main()
{
    float score[ARR_SIZE], maxScore;
    int n,i;
    long num[ARR_SIZE],maxNum;
    printf("please enter total number :");
    scanf("%d",&n);
    printf("please enter the number and score:\n");
    for (i=0;i<n;i++)
    {
        scanf("%ld %f",&num[i],&score[i]);
    }
    maxScore=score[0];
    maxNum=num[0];
    for (i=1;i<n;i++)
    {
        if (score[i]>maxScore){
            maxScore=score[i];
            maxNum=num[i];
            }
    }
    printf("maxScore=%.0f,maxNum=%ld\n",maxScore,maxNum);
    return 0;
}

2.

#include <stdio.h>

#include <stdlib.h>

 

#define MAX_SIZE 250

#define Sentinel 0

 

int readIntArray(int array[])

 {

     int num,count=0;

     printf("请输入数据(输入%d结束):\n",Sentinel);

     while (1)

     {

         scanf("%d",&num);

         if (num==Sentinel){

            break;}

         if (count<MAX_SIZE){

            array[count++]=num;}

        else {

            printf("数组容量不足,无法继续存储!\n");

            break;

        }

     }

     return count;

 }

 

 void reverseArray(int array[],int n)

 {

     for (int i=0,j=n-1;i<j;i++,j--)

     {

        int temp=array[i];

        array[i]= array[j];

        array[j]=temp;

      }

 }

 

 void printArray (int array[],int n)

 {

     printf("逆序排列后的数组:\n");

     int i;

     for (int i=0;i<n;i++)

     {

         printf("%d\n",array[i]);

     }

 }

 

int main()

{

   int array[MAX_SIZE];

   int len=readIntArray(array);

   if (len==0)

   {

       printf("未输入有效数据!\n");

       return 0;

   }

   reverseArray(array,len);

   printArray(array,len);

    return 0;

}

3.1

#include <stdio.h>

 

int sequentialSearch(int arr[], int n, int x) {

    for (int i = 0; i < n; i++) {

        if (arr[i] == x) {

            return i;

        }

    }

    return -1;

}

 

int main() {

    int arr[] = {2, 5, 8, 12, 16, 23, 38, 56, 72, 91};

    int n = sizeof(arr) / sizeof(arr[0]);

    int target = 23;

 

    int index = sequentialSearch(arr, n, target);

 

    printf("顺序查找结果:");

    if (index != -1) {

        printf("元素%d在数组下标%d处\n", target, index);

    } else {

        printf("元素%d不在数组中\n", target);

    }

 

    return 0;

}

3.2

#include <stdio.h>

 

int binarySearch(int arr[], int n, int x) {

    int left = 0;

    int right = n - 1;

 

    while (left <= right) {

        int mid = (left + right) / 2;

        if (arr[mid] == x) {

            return mid;

        } else if (arr[mid] < x) {

            left = mid + 1;

        } else {

            right = mid - 1;

        }

    }

    return -1;

}

 

int main() {

    int arr[] = {2, 5, 8, 12, 16, 23, 38, 56, 72, 91};

    int n = sizeof(arr) / sizeof(arr[0]);

    int target = 23;

 

    int index = binarySearch(arr, n, target);

 

    printf("二分查找结果:");

    if (index != -1) {

        printf("元素%d在数组下标%d处\n", target, index);

    } else {

        printf("元素%d不在数组中\n", target);

    }

 

    return 0;

}

4.1 选择排序

#include <stdio.h>

#include <stdlib.h>

#define N 40

 

void Sort(int a[],int n);

 

int main()

{

    int num[N],k;

    printf("请输入数字个数:");

    scanf("%d",&k);

    for (int i=0;i<k;i++)

    {

        scanf("%d",&num[i]);

    }

    Sort(num,k);

    for (int i=0;i<k;i++)

   {

       printf("%d ",num[i]);

   }

    return 0;

}

 

void Sort(int a[],int n)

{

    for (int i=0;i<n-1;i++)

    {

        for (int j=i+1;j<n;j++)

        {

            if (a[j]<a[i])

               {

                   int t=a[j];

                   a[j]=a[i];

                   a[i]=t;

                }

        }

    }

}

4.2 交换排序

#include <stdio.h>
#include <stdlib.h>
#define N 40

void bubble_sort(int a[],int n);

int main()
{
    int  num[N],k;
    printf("请输入数字个数:");
    scanf("%d",&k);
    for (int i=0;i<k;i++)
    {
        scanf("%d",&num[i]);

    }
    bubble_sort(num,k);
    for (int i=0;i<k;i++)
   {
       printf("%d ",num[i]);
   }
    return 0;
}

void bubble_sort(int a[],int n)
{
    for (int i=0;i<n-1;i++)
    {
        for (int j=0;j<n-i-1;j++)
        {
            if (a[j]>a[j+1])
            {
            int t=a[j];
            a[j]=a[j+1];
            a[j+1]=t;
            }
        }
    }
}

4.3 冒泡排序

#include <stdio.h>

#include <stdlib.h>

#define N 40

 

void Sort(int a[],int n);

 

int main()

{

    int num[N],k;

    printf("请输入数字个数:");

    scanf("%d",&k);

    for (int i=0;i<k;i++)

    {

        scanf("%d",&num[i]);

 

    }

    Sort(num,k);

    for (int i=0;i<k;i++)

   {

       printf("%d ",num[i]);

   }

    return 0;

}

 

void Sort(int a[],int n)

{

    for (int i=0;i<n-1;i++)

    {

        int k=i;

    for (int j=i+1;j<n;j++)

    {

        if (a[k]<a[j])

        {

            k=j;

        }

    }

    if (k!=i)

      {

        int t=a[k];

        a[k]=a[i];

        a[i]=t;

      }

    }

}

4.4 插入排序

#include <stdio.h>

#include <stdlib.h>

#define N 40

 

void SortIntegerArray(int array[],int n);

 

int main()

{

    int num[N],k;

    printf("请输入数字个数:");

    scanf("%d",&k);

    for (int i=0;i<k;i++)

    {

        scanf("%d",&num[i]);

 

    }

     SortIntegerArray(num,k);

    for (int i=0;i<k;i++)

   {

       printf("%d ",num[i]);

   }

    return 0;

}

 

void SortIntegerArray(int array[],int n)

{

    int i,j,temp;

    for (i=0;i<n;i++)

    {

        temp=array[i];

    for (j=i-1;j>=0&&temp<array[j];j--)

    {

        array[j+1]=array[j];

    }

      array[j+1]=temp;

    }

}

5.1

#include <stdio.h>

#include <stdlib.h>

#define N 100

 

void Insert(int a[],int n,int x);

 

int main()

{

    int a[N],n,x;

 

    printf("Please enter total number:\n");

    scanf("%d",&n);

 

    printf("Input the sorted array:\n");

    for (int i=0;i<n;i++)

    {

        scanf("%d",&a[i]);

    }

 

    printf("Input x for insertion:\n");

    scanf("%d",&x);

 

    Insert(a,n,x);

 

    printf("The new array :\n");

    for (int i=0;i<=n;i++)

    {

        printf("%d,",a[i]);

    }

    return 0;

}

 

void Insert(int a[],int n,int x)

{

    int i;

    for (i=n-1;i>=0&&x<a[i];i--)

        {

            a[i+1]=a[i];

        }

        a[i+1]=x;

    }

5.2

#include <stdio.h>
#include <stdlib.h>
#define N 40

void SortIntegerArray(int array[],int n);

int main()
{
    int  num[N],k;
    printf("请输入数字个数:");
    scanf("%d",&k);
    for (int i=0;i<k;i++)
    {
        scanf("%d",&num[i]);

    }
     SortIntegerArray(num,k);
    for (int i=0;i<k;i++)
   {
       printf("%d ",num[i]);
   }
    return 0;
}

void SortIntegerArray(int array[],int n)
{
    int i,j,temp;
    for (i=0;i<n;i++)
    {
        temp=array[i];
    for (j=i-1;j>=0&&temp<array[j];j--)
    {
        array[j+1]=array[j];
    }
      array[j+1]=temp;
    }
}

6.

#include <stdio.h>
#include <stdlib.h>
#define N 100

int Delete (int a[],int n,int x);

int main()
{
    int a[N],n,x;

    printf("Please enter total number :  \n");
    scanf("%d",&n);

    printf("Input the sorted array : \n");
    for (int i=0;i<n;i++)
    {
        scanf("%d",&a[i]);
    }

    printf("Input x for delete : \n");
    scanf("%d",&x);

    int m=Delete(a,n,x);

    printf("The new array : \n");
    for (int i=0;i<m;i++)
    {
        printf("%d, ",a[i]);
    }
    return 0;
}

int Delete (int a[],int n,int x)
{
    int p,i;
    p=0;
    while (x!=a[p]&&p<n)
    p++;
    if (p==n)  return n;
    for (i=p+1;i<n;i++)
        a[i-1]=a[i];
    return n-1;
}

考虑柔性负荷的综合能源系统低碳经济优化调度【考虑碳交易机制】(Matlab代码实现)内容概要:本文围绕“考虑柔性负荷的综合能源系统低碳经济优化调度”展开,重点研究在碳交易机制下如何实现综合能源系统的低碳化与经济性协同优化。通过构建包含风电、光伏、储能、柔性负荷等多种能源形式的系统模型,结合碳交易成本与能源调度成本,提出优化调度策略,以降低碳排放并提升系统运行经济性。文中采用Matlab进行仿真代码实现,验证了所提模型在平衡能源供需、平抑可再生能源波动、引导柔性负荷参与调度等方面的有效性,为低碳能源系统的设计与运行提供了技术支撑。; 适合人群:具备一定电力系统、能源系统背景,熟悉Matlab编程,从事能源优化、低碳调度、综合能源系统等相关领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①研究碳交易机制对综合能源系统调度决策的影响;②实现柔性负荷在削峰填谷、促进可再生能源消纳中的作用;③掌握基于Matlab的能源系统建模与优化求解方法;④为实际综合能源项目提供低碳经济调度方案参考。; 阅读建议:建议读者结合Matlab代码深入理解模型构建与求解过程,重点关注目标函数设计、约束条件设置及碳交易成本的量化方式,可进一步扩展至多能互补、需求响应等场景进行二次开发与仿真验证。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值