C语言:常规数据处理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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;
参考技术A 读入文件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...

以上是关于C语言:常规数据处理的主要内容,如果未能解决你的问题,请参考以下文章

RedisRedis的常规操作命令

SQL注入的常规思路及奇葩技巧

Go语言的数据类型

一文教你搞懂C语言的Q格式使用

C语言中结构体的初始化

软件设计师_C语言基础