C语言数组和函数实例练习(一)

C语言的数组和函数部分的知识,在语法上和Java语法是有所相似的,这里只通过实例总结一些自己感觉需要理解的部分知识。

1.数组

数组中的元素具有相同的数据类型;数组一旦创建,不能被改变;数组中元素在内存中是连续依次存在的;使用时需要随时注意下标越界的问题。

例1:输入数量不确定的[0,9]范围内的整数,统计每个数字出现的次数,输入-1时结束程序。

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int i;
    int num[10]={0};
    scanf("%d",&i);
    while(i!=-1){
        if(i>=0&&i<=9){
            num[i]++;
        }
        scanf("%d",&i);
    }
    for(i=0;i<10;i++)
    {
        printf("%d出现了%d次\n",i,num[i]);
    } 
    return 0;
} 

例2:在一组给定的数据中,找出某个数据是否存在。

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 int search(int key,int a[],int length)
 4 {
 5     int ret=-1;
 6     int i;
 7     for(i=0;i<length;i++)
 8     {
 9         if(a[i]==key)
10         {
11             ret=i;
12             break;
13         }
14     }
15     return ret;
16 }
17 int main()
18 {
19     int a[10]={1,2,3,4,5,6,7,8,9,10};
20     int x;
21     int loc;
22     printf("请输入一个数字:"); 
23     scanf("%d",&x);
24     loc=search(x,a,10);
25     if(loc!=-1)
26     {
27         printf("%d在第%d个位置上。\n",x,loc);
28     }else{
29         printf("%d不存在!"); 
30     }
31     return 0;
32 }

二维数组:int a[i][j];//i行j列的数组

例3:将一个二维数组行和列的元素互换,存到另一个二维数组中。

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 int main()
 4 {
 5     int a[2][3]={{1,2,3},{4,5,6}};
 6     int b[3][2],i,j;
 7     printf("array a:\n");
 8     for(i=0;i<=1;i++)
 9     {
10         for(j=0;j<=2;j++)
11         {
12             printf("%5d",a[i][j]);
13             b[j][i]=a[i][j];
14         }
15         printf("\n");
16     }
17     printf("array b:\n");
18     for(i=0;i<=2;i++)
19     {
20         for(j=0;j<=1;j++)
21         {
22             printf("%5d",b[i][j]);
23         }
24         printf("\n");
25     }
26     return 0;
27 }

2.函数

C语言中的函数和Java中的方法是一个道理的,都是一段实现某种功能的代码块,也都要注意返回值、形参实参等。

***注意:若函数有返回值,必须使用带值的return。

             C语言在调用函数时,永远只能传值给函数,不能传变量。

             C语言不允许函数嵌套定义。

例1:求1-10,20-30,45-60三个区间数字的总和。

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 int sum(int a,int b)
 4 {
 5     int i;
 6     int sum;
 7     for(i=a;i<=b;i++)
 8     {
 9         sum=sum+i;
10     }
11     return sum;
12 }
13 int main()
14 {
15     int x,y,z,result;
16     x=sum(1,10);
17     y=sum(20,30);
18     z=sum(45,60);
19     result=x+y+z;
20     printf("这三组数的和为%d",result);
21 }

例2:swap()无法实现交换两个变量的值。

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 void swap(int a,int b)
 4 {
 5     int t;
 6     t=a;
 7     a=b;
 8     b=t;
 9 }
10 int main()
11 {
12     int a=5;
13     int b=6;
14     swap(a,b);
15     printf("a=%d,b=%d",a,b); 
16     return 0;
17 } 

原因是:C语言在调用函数时,永远只能传值给函数,不能传变量。

posted @ 2017-05-14 20:23  王醒燕  阅读(4637)  评论(0编辑  收藏  举报