C语言基础与提高( 数组、函数 )

来源:互联网 发布:淘宝怎么刷信誉的方法 编辑:程序博客网 时间:2024/05/02 00:29

C语言的学习来到了数组和函数,这两者也是C语言相对重要的部分,对后面学习指针等内容有很大的帮助,所以我学起来也是相对认真。在学习这两部分时除了要理解相关的基础知识外,也要多练习编程,会一些基本的算法,所以在整理一些基础知识后,我着重的练习了一些简单算法的编程。

一:1、维数组的定义格式为:

              类型说明符  数组名[常量表达式];  例如:  int a[10]; 

              它表示定义了一个整形数组,数组名为a,有10个元素。

        2、 数组的地址,a和&a

               &a[0]:a[0]的首地址     &a[1]:a[1]的地址     &a[0]+1:a[1]的地址     &a+1:超出地址范围    a:a[0]的首地址

二:二维数组

       1、 类型说明符  数组名[常量表达式][常量表达式];

        2、在二维数组中 a+i ,a[i],*(a+i),&a[i],&a[i][0]的值相等即它们都代表同一地址。

        3、*(a[1]+1)  ,*(&a[1][1]),(*(a+1))[1]都表示一行一列元素值。

               &a[i]或a+i指向行       a[i]或*(a+i)指向列

       4、 #include <stdio.h>

         int main()
        {
int a[5] = {0};
int i,j;
int k ;
        int length = sizeof(a)/sizeof(int);
printf("please input five numbers:\n");
for(i = 0; i < length; i++)
{
scanf("%d",&a[i]);
}

for(i = 0; i < length-1; i++)
{
for(j = 0; j < length-i-1; j ++)
{
if(a[j] > a[j+1])
{
k = a[j]; a[j] = a[j+1]; a[j+1] = k;
}
     }

}
       for(i = 0; i < length; i++)
printf("%d",a[i]);
return 0;
       }                           (冒泡排序)

三、字符数组

       1、逐个字符输入输出。用格式符“%c”输入或输出一个字符。
             将整个字符串一次输入或输出。用“%s”格式符,意思是对字符串的输入输出。

        2、 (1)用“%s”格式符输出字符串时,printf函数中的输出项是字符数组名,而不是数组元素名。
               (2)如果数组长度大于字符串实际长度,也只输出到遇′\0′结束。
               (3)输出字符不包括结束符′\0′。
               (4)如果一个字符数组中包含一个以上′\0′,则遇第一个′\0′时输出就结束。 
               (5)可以用scanf函数输入一个字符串。

        3、strcat函数
              其一般形式为:strcat(字符数组1,字符数组2)
              Strcat的作用是连接两个字符数组中的字符串,把字符串2接到字符串1的后面,结果放在字符数组1中,函数调用后得到一个函数值——字符数组1的地址。

        4、strcpy函数 
              其一般形式为:strcpy(字符数组1,字符串2) 
              strcpy是“字符串复制函数”。
              作用:是将字符串2复制到字符数组1中去。例如:
              char str1[10],str2[]={″China″};
              strcpy(str1,”china”); 

        5、strcmp函数 
              其一般形式为:strcmp(字符串1,字符串2) 
              strcmp的作用是比较字符串1和字符串2。
              例如:strcmp(str1,str2);
              strcmp(″China″,″Korea″);
              strcmp(str1,″Beijing″);

        6、strlen函数 
              其一般形式为: strlen (字符数组) 
              strlen是测试字符串长度的函数。函数的值为字符串中的实际长度(不包括′\0′在内)。

        7.#include <stdio.h>
           #include <string.h>
           int main()
          {
           char ptr[20] = {0};
           char new[30] = {0};
           char ch;
          int num,i,length;
          printf("please input:\n");
          scanf("%s%d %c",ptr,&num,&ch);

 
          length = strlen(ptr);
          strncpy(new,ptr,num-1);
          new[num-1] = ch;
          strcat(new,ptr+num-1);

          printf("%s\n",new);
          return 0;
          }                     (往字符串指定位置输入一个字符)

   四、函数

      1、  函数调用的形式:
      (1)作为函数语句调用。函数一般无返回值。例:
       printf(“Hello,World!\n”);
      (2)作为函数表达式调用。例:
        m=max(a,b)*2;
     (3)作为函数参数调用。例:
       printf(“%d”,max(a,b));
         m=max(a,max(b,c));

      2、值传递方式方式:
             函数调用时,为形参分配单元,并将实参的值复制到形参中;
            调用结束,形参单元被释放,实参单元仍保留并维持原值;
            特点:
            形参与实参占用不同的内存单元;  单向传递

     3、 地址传递方式:
            函数调用时,将数据的存储地址作为参数传递给形参
            特点:
           形参与实参占用同样的存储单元;
            “双向”传递;
           实参和形参必须是地址常量或变量;

    4、(1)通过函数名找到函数的入口地址;

          (2)为形参分配内存空间;

          (3)把实参的值传给形参;

          (4)执行函数体;

          (5)返回;

          (6)释放内存空间;