求用C语言解决以下问题

  1. 输入n,再输入n个整数存入一维数组,输出其中的最大值和对应下标;
  2. 输入n,再输入n个0~100的整数存入一维数组,输出其中出现次数最多的元素;
  3. 输入n,再输入n个整数存入一维数组,对其按升序排序后输出显示,然后输入一个待删除元素,从数组中删除该元素后输出显示。

第一题:


#include <stdio.h>

int main()
{
    int i,n;
    int a[100];
    int max,maxindex;
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        scanf("%d",&a[i]);
        if(i==0) 
        {
            max = a[0];
            maxindex = 0;
        }else
        {
            if(a[i]>max)
            {
                max = a[i];
                maxindex = i;
            }
        }
    }
    printf("最大值:%d,下标:%d",max,maxindex);
    return 0;
}

第二题:

img

代码:

#include <stdio.h>
//冒泡排序
void bubble_sort(int a[],int n)
{
    int i,j,t;
    for (i=0;i<n-1;i++)
    {
        for (j=0;j<n-1-i;j++)
        {
            if(a[j] > a[j+1])  //从小到大,升序
            {
                t = a[j];
                a[j]=a[j+1];
                a[j+1]=t;
            }
        }
    }
}

int main()
{
    int i,n;
    int a[100];
    int cnt=1,maxcnt=0,ele;
    scanf("%d",&n);
    for(i=0;i<n;i++)
        scanf("%d",&a[i]);
    
    bubble_sort(a,n);

    ele = a[0];
    for (i=1;i<n;i++)
    {
        if (a[i] == a[i-1])
        {
            cnt++;
        }else
        {
            if(cnt > maxcnt)
            {
                maxcnt = cnt;
                ele = a[i-1];
            }
            cnt = 1;
        }
    }
    if(cnt > maxcnt)
    {
        maxcnt = cnt;
        ele = a[i-1];
    }
    printf("出现次数最多的数是:%d",ele);
    return 0;
}

第三题:

#include <stdio.h>
//冒泡排序
void bubble_sort(int a[],int n)
{
    int i,j,t;
    for (i=0;i<n-1;i++)
    {
        for (j=0;j<n-1-i;j++)
        {
            if(a[j] > a[j+1])  //从小到大,升序
            {
                t = a[j];
                a[j]=a[j+1];
                a[j+1]=t;
            }
        }
    }
}

int main()
{
    int i,j,n,m;
    int a[100];
    scanf("%d",&n);
    for(i=0;i<n;i++)
        scanf("%d",&a[i]);
    
    bubble_sort(a,n);

    //显示
    for(i=0;i<n;i++)
        printf("%d ",a[i]);
    printf("\n");
    printf("请输入要删除的数:");
    scanf("%d",&m);

    for (i=0;i<n;i++)
    {
        //只删除遇到的第1个
        if(a[i] == m)
        {
            for(j=i;j<n-1;j++)
                a[j]=a[j+1];
            break;
        }
    }
    n--;
    //显示
    printf("删除%d后:",m);
    for(i=0;i<n;i++)
        printf("%d ",a[i]);
    
    return 0;
}


#include "stdio.h"
void main()
{
    int a[100];
    int n;
    int i;
    int max=0,index=-1;
    scanf("%d",&n);
    for(i=0;i<n;i++){
        scanf("%d",&a[i]);
        if(max<a[i]){
            max =a[i];
            index = i;
        }
            
    }
    printf("max=%d,下标:%d",max,index);
    
    
}

1、循环比较的时候,记录最大值的下标就可以了
2、定义一个大小为101的数组,在输入n个数的同时统计每个数的出现次数,最后比较这个数组中的最大值就是出现最多次数的数
3、冒泡排序,找到删除元素位置后,将后面元素全部向前移动一个位置

#include<stdio.h>
int main() {
    int n,i,max,maxi;
    scanf("%d",&n);
    int a[n];
    for(i=0;i<n;i++){
        scanf("%d",&a[i]);
    }
    a[0]=max;maxi=0;
    for(i=0;i<n;i++){
        if(a[i]>max){
            max=a[i];
            maxi=i;
        }
    }
    printf("%d %d",max,maxi);
    return 0;
}
#include<stdio.h>
int main() {
    int n,i,max,maxi;
    scanf("%d",&n);
    int a[n],b[101]={0};
    for(i=0;i<n;i++){
        scanf("%d",&a[i]);
        b[a[i]]++;
    }
    max=b[0];maxi=0;
    for(i=1;i<=100;i++){
        if(b[i]>max){
            max=b[i];
            maxi=i;
        }    
    }
    printf("%d",maxi);
    return 0;
}
#include<stdio.h>
int main() {
    int n, i,j,t,x;
    scanf("%d", &n);
    int a[n];
    for(i = 0; i < n; i++) {
        scanf("%d", &a[i]);
    }
    for(i = 0; i < n - 1; i++) {
        for(j = 0; j < n - 1 - i; j++) {
            if(a[j] > a[j + 1]) {
                t = a[j];
                a[j] = a[j + 1];
                a[j + 1] = t;
            }
        }
    }
    printf("排序后:");
    for(i = 0; i < n; i++) {
        printf("%d ", a[i]);
    }
    printf("\n输入待删除的数:");
    scanf("%d", &x);
    int index = -1;
    for(i = 0; i < n; i++) {
        if(a[i] == x) {
            index = i;
            break;
        }
    }
    if(index == -1) {
        printf("未找到");
    } else {
        for(i = index + 1; i < n; i++) {
            a[i - 1] = a[i];
        }
        printf("删除后:");
        for(i = 0; i < n-1; i++) {
            printf("%d ", a[i]);
        }
    }
    return 0;
}