C语言:常规数据处理

Python020

C语言:常规数据处理,第1张

#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=0i<sizei++)

        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=0i<sizei++)

        printf("%d ",nums[i])

    printf("\n")

}

int *getmax(int *nums)//获取最大值地址

{

    int i,*max=&nums[0]

    for(i=1i<sizei++)

    {

        if(*max<nums[i])

            max=&nums[i]

    }

    return max

}

int *getmin(int *nums)//获取最小值地址

{

    int i,*min=&nums[0]

    for(i=1i<sizei++)

    {

        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=0i<sizei++)

    {

        sum=sum+nums[i]

    }

    return sum

}

int *sx(int *nums)//返回升序后的数组

{

    int i,j,*numSave=NULL

    numSave=(int *)malloc(sizeof(int)*size)

    for(i=0i<sizei++)

        numSave[i]=nums[i]

    for(i=0i<size-1i++)

        for(j=i+1j<sizej++)

        {

            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=0i<sizei++)

        numSave[i]=nums[i]

    for(i=0i<size-1i++)

        for(j=i+1j<sizej++)

        {

            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=0i<sizei++)

        if(nums[i]==num)

            return &nums[i]

    return NULL

}

方法一;自定义函数,参数传递多组数据变量地址。这样对原数据处理,原变量值就改变了。

方法二:直接将数据定义成全局变量。

方法三:定义数组或结构体,将处理后的多组数据作为返回值返回。

方法四:一个函数要处理不定个数的参数,按最大参数个数接收,约定空值,之后在函数内做判断。

最简单的办法是将大数当作字符串进行处理,也就是将大数用10进制字符数组进行表示,

然后模拟人们手工进行“竖式计算”的过程编写其加减乘除函数。但是这样做效率很低,

因为1024位的大数其10进制数字个数就有数百个,对于任何一种运算,都需要在两个有

数百个元素的数组空间上做多重循环,还需要许多额外的空间存放计算的进位退位标志

及中间结果。其优点是算法符合人们的日常习惯,易于理解。

C语言简介:

是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。

C语言特点:

1、C语言是一个有结构化程序设计、具有变量作用域递归功能的过程式语言。

2、C语言传递参数均是以值传递,另外也可以传递指针。

3、不同的变量类型可以用结构体组合在一起。

4、只有32个保留字,使变量、函数命名有更多弹性。

5、部份的变量类型可以转换,例如整型和字符型变量。

6、通过指针,C语言可以容易的对存储器进行低级控制。

7、预编译处理让C语言的编译更具有弹性。