C语言:常规数据处理

常规数据处理:用户输入10个整数,求出最大值、最小值和平均值、总和、排序、查找。要求:各功能使用函做,程序执行时,用户选择要进行的处理方式,处理完毕后输士“Continue?Y/N",若用户选择Y继续进入用户选择处理方式,直到用选择退出(N)才结束程序。(实验授课提示:通过这个实际例子熟杰选择结构程序设计的法,及 switch语句,进一步熟悉循环结构程序设计、掌握c语言常见算法的实现。)

#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>

#define size 10
int *getmax(int *nums);//获取最大值地址
int *getmin(int *nums);//获取最小值地址
float getave(int *nums);//获取平均值
int getsum(int *nums);//获取总和
int *sx(int *nums);//返回升序后的数组
int *jx(int *nums);//返回降序后的数组
int *findnum(int *nums);//找到数值返回相同数值对应的第一个地址,没有找到返回NULL
void prfnums(int *nums);//打印数组
int main()
{
    //最大值、最小值和平均值、总和、排序、查找
    int i,nums[size],ans,*max,*min,sum,*jxns=NULL,*sxns=NULL,*num;
    float ave;
    char anc;
    printf("输入10个数字:");
    for(i=0;i<size;i++)
        scanf("%d",&nums[i]);
    max=getmax(nums);
    min=getmin(nums);
    ave=getave(nums);
    sum=getsum(nums);
    jxns=jx(nums);
    sxns=sx(nums);
    while(1)
    {
        system("cls");
        printf("输入的数组为:");
        prfnums(nums);
        printf("请选择处理方案:\n");
        printf("1、求最大值。\n2、求最小值。\n3、求平均值。\n4、求总和。\n5、降序排列。\n6、升序排列。\n7、查找指定值。\n");
        scanf("%d",&ans);
        switch(ans)
        {
            case 1:printf("最大值为第%d个元素:%d\n",max-nums+1,*max);
                   break;
            case 2:printf("最小值为第%d个元素:%d\n",min-nums+1,*min);
                   break;
            case 3:printf("平均值为:%f\n",ave);
                   break;
            case 4:printf("总和为:%d\n",sum);
                   break;
            case 5:printf("降序排列后的数组为:");
                   prfnums(jxns);
                   break;
            case 6:printf("升序排列后的数组为:");
                   prfnums(sxns);
                   break;
            case 7:num=findnum(nums);
                   if(num!=NULL)
                        printf("第一个对应的数值位置在数组第%d个元素\n",num-nums+1);
                   else
                        printf("未找到对应数值\n");
                   break;
        }
        while(1)
        {
            printf("Continue?Y/N\n");
            getchar();
            scanf("%c",&anc);
            if(anc=='N')
                return 0;
            if(anc=='Y')
                break;
            else
                printf("输入不符合要求,重新回答\n");
        }
    }
    return 0;
}
void prfnums(int *nums)//打印数组
{
    int i;
    for(i=0;i<size;i++)
        printf("%d ",nums[i]);
    printf("\n");
}
int *getmax(int *nums)//获取最大值地址
{
    int i,*max=&nums[0];
    for(i=1;i<size;i++)
    {
        if(*max<nums[i])
            max=&nums[i];
    }
    return max;
}
int *getmin(int *nums)//获取最小值地址
{
    int i,*min=&nums[0];
    for(i=1;i<size;i++)
    {
        if(*min>nums[i])
            min=&nums[i];
    }
    return min;
}
float getave(int *nums)//获取平均值
{
    float ave;
    ave=(float)getsum(nums)/size;
    return ave;
}
int getsum(int *nums)//获取总和
{
    int i,sum=0;
    for(i=0;i<size;i++)
    {
        sum=sum+nums[i];
    }
    return sum;
}
int *sx(int *nums)//返回升序后的数组
{
    int i,j,*numSave=NULL;
    numSave=(int *)malloc(sizeof(int)*size);
    for(i=0;i<size;i++)
        numSave[i]=nums[i];
    for(i=0;i<size-1;i++)
        for(j=i+1;j<size;j++)
        {
            if(numSave[i]>numSave[j])
            {
                numSave[i]^=numSave[j];
                numSave[j]^=numSave[i];
                numSave[i]^=numSave[j];
            }
        }
    return numSave;
}
int *jx(int *nums)//返回降序后的数组
{
    int i,j,*numSave=NULL;
    numSave=(int *)malloc(sizeof(int)*size);
    for(i=0;i<size;i++)
        numSave[i]=nums[i];
    for(i=0;i<size-1;i++)
        for(j=i+1;j<size;j++)
        {
            if(numSave[i]<numSave[j])
            {
                numSave[i]^=numSave[j];
                numSave[j]^=numSave[i];
                numSave[i]^=numSave[j];
            }
        }
    return numSave;
}
int *findnum(int *nums)//找到数值返回相同数值对应的第一个地址,没有找到返回NULL
{
    int i,num;
    printf("输入你要查找的数值:");
    scanf("%d",&num);
    for(i=0;i<size;i++)
        if(nums[i]==num)
            return &nums[i];
    return NULL;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-06-14
读入文件ex.c,并把其中所有的小写字母改为大写字母,其余字符不变,在屏幕上输出。 #include main() { FILE *fp; char ch; if((fp=fopen("ex.c","r"))==NULL) { printf("Cannot open file strike any key exit!"); getch(); exit(1); } ch=fget...
相似回答