数组及函数



一.数组

1.一维数组

(1)定义数组;

(2)使用数组;

(3)引用数组求学生成绩的输入、输出、求最大、最小、平均值、排序等操作:

#include <stdio.h>

 

#define N   10

 

int main(int argc,char *argv[])

 

{

int score[N];

 

 

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

 

    { printf("\n请输%d个学生成绩",i);

 

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

 

}

 

for(int j = 0;j<N;j++)

 

{

printf("\n第%d个学生成绩为%d\n",j,score[j]);

}

 

int max = score[0];

 

int min = score[0];

 

for(int j = 1;j<N;j++)

 

{

if(max<score[j])

 

{

max=score[j];

}

 

}

 

printf("\n max = %d\n",max);

 

for(int j = 1;j < N;j++)

 

{

 

if(min>score[0])

         

{

min = score[j];

}

 

}

 

printf(" min = %d\n",min);

 

int sum = 0;

 

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

 

{

sum +=score[i];

}

 

float aver = sum/N;

 

printf("aver = %.3f\n",aver);

 

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

 

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

 

{

if(score[i]>score[j])

 

{

int t = score[i];

 

score[i] = score[j];

 

score[j] = t;

}

}

 

printf("输出按从小到大排好序的学生成绩:\n");

 

    forint i = 0;i < N;i++)

 

{

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

}

 

 

forint i = 0; i < N - 1; i++)

 

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

 

{

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

 

{

int t = score[i];

 

score[i] = score[j];

 

score[j] = t;

}

}

 

printf ("输出按从排好序的学生成绩:\n");

 

 

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

 

 {

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

 }

return 0;

 

 

}

 

 

 

二.多维数组

(1)定义多维数组;

(2)使用多维数组;

(3)要求用二维数组处理学生成绩问题:

 如果学院有5个班,每个班30人,求所有成绩中最高分是哪个班的,第几个学生?

 

 

三.函数 (系统函数和自定义函数)

 

(1)函数是将程序中的功能模块化处理;

(2)函数的定义格式:

   返回值  函数名(参数列表)

       {

           函数体

        }

(3)自定义下列函数:

 

void arrayinput(int *array,int count)

 

{   

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

 

{   printf("输入第%d个学生成绩",i);

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

    }

}

 

 

void arrayprintf(int *array,int count)

 

{

 

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

 

{

printf("\n第%d个学生成绩为%d \n",i,array[i]);

}

}

 

int arrayMax(int *array,int count)

 

{

int max = array[0];

for(int i = 1;i < count;i++)

 

  {  if(max < array[i])

           

        { 

max = array[i];

         }

  }

 

return max;

}

 

 

 

int arrayMin(int *array,int count)

 

{

int min = array[0];

for(int i = 1;i < count;i++)

 

  {  if(min > array[i])

           

        { 

min = array[i];

         }

  }

 

return min;

}

 

 

 

 

void arraySort(int *array,int count,int order)

 

{

if(order == 0)

 

{

forint i = 0;i < count-1;i++)

 

{

forint j = i + 1;j < count;j++ )

 

{

if(array[i] >array[j])

 

{

int t = array[i];

 

array[i] = array[j];

 

array[j] = t;

}

}

}

 

printf("输出按从小到大排好序的学生成绩:\n");

 

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

 

{

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

}

}

 

 

 

else if(order == 1)

 

{

forint i = 0;i < count-1;i++)

 

{

forint j = i + 1;j < count;j++ )

 

{

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

 

{

int t = array[i];

 

array[i] = array[j];

 

array[j] = t;

}

}

}

 

printf("输出按从排好序的学生成绩:\n");

 

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

 

{

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

}

}

 

 

 

}

 

 

 

四.指针的操作

 

(1)指向变量的指针

(2)指针作为函数参数

(3)指向数组的指针

(4)有关指针程序:

 

#include <stdio.h>

 

#include <stdlib.h>

 

#define N  10

 

int main (int argc,char * argv[])

 

{

int *p;

 

p =(int*) malloc(sizeof(int)*10);

 

int *temp = p;

 

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

 

{

printf("\n请输入?第%d个学生成绩",i);

 

scanf("%d",temp);

 

temp++;

 

}

 

 

 

 

 

temp = p;

 

forint i = 0; i<N;i++)

 

{

printf("\n第%d个学生成绩为%d\n",i,*temp);

 

temp++;

}

 

 

 

 

 

 

 

temp = p;

 

int max = *temp;

 

for(int i = 1;i<N;i++)

 

{    temp++;

 

if(max < *temp )

 

max = *temp;

}

 

printf("\n max = %d",max);

 

 

 

 

 

 

temp = p;

 

 int min = *temp; 

 

for(int i = 1;i < N;i++)

 

{

temp ++;

 

if(min > *temp)

 

    min = *temp;

 

}

 

printf("\n min = %d",min);

 

 

 

temp = p;

 

float sum = 0;

 

float aver ;

forint i = 0; i < N;i++)

 

{

sum += *temp;

 

temp++;

 

}

 

aver = sum/N;

 

printf("\n aver = %.3f",aver);

 

 

五.字符串处理

 

(1)用字符处理字符数组

(2)自定义有关字符串的函数:

 

int mystrlen(char *s)

 

{    

   int n=0;

 

  while(*s){n++;s++;}

 

  return n;

 

}

 

 

 

int mystrcat(char *s,char *t) 

   int i,n=mystrlen(s); 

 

   for (i=0;i<mystrlen(t);i++)

 

        { 

s[i+n]=t[i]; 

 

         }

 

         s[n+mystrlen(t)]='\0'

 

 return 0;

 

 

 

 

int mystrcmp(char str1[],char str2[])

 

   {

      int flag=0;

 

      int i=0;

 

      while(str1[i]!='\0'||str2[i]!='\0')

 

       {

 

          if(str1[i]>str2[i])

 

          {

 

             flag=1;break;

          }

 

          if(str1[i]<str2[i])

 

          {

           flag=-1;break;

          }

 

            i++;

     }

 

       if(flag==0)

 

       {

         if(str1[i]!='\0')

 

          flag=1;

 

         else if(str2[i]!='\0')

 

         flag=-1;

 

      }

 

     return flag;

}

 

     

     

 

 

 

int strfind(char * str,char ch,int * loc)

 

    int i;

 

    for(i=0;str[i] != '\0'; i++){ 

 

      if(str[i] == ch){

 

        *loc = i+1; 

 

        return *loc; 

 

      } 

 

   } 

       *loc = -1;

     

       return 0; 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值