《C程序设计》复习资料2

七、数组
一)数组语法
(1)数组的定义[  ]中必须是常量
(2)C语言规定只能逐个引用数组元素而不能一次引用整个数组
(3)引用一维数组每个元素的的方法:
                for(i=0;i<长度;i++)
                  a[i];
(4)引用二维数组每个元素的的方法:
                for(i=0;i<第一维长度;i++)
                      for(j=0;j<第一维长度;j++)
                                    a[i][j];
(5)引用时,下标的值从0开始,不要超过数组的范围
(6)数组初始化时所给的数据不能超过[ ]中给定的长度,若所给的数据不足长度,其它的为0
(7)二维数组初始化:
里面带{}的,则每个{}代表一行。 例如:
这样,数组的前几个元素的值为: a0][0=1a1][0=2a1][1=3a2][0=4 而其余元素的初值将自动设为0
内不带{}的,则按列宽分行。例
其结果是,a0][0=1a0][1=2a1][0=3a1][1=4 其余元素的值自动设为0
(8)若对元素赋初值时, 则定义数组时对第一维的长度可以不指定,但对第二维的长度不能省
例题:
1.以下选项中关于数组定义和初始化,正确的是______
A. int a[5]={1,2,3,4,5};    B. int a[5]=(1,2,3,4,5);
C. int a[5]=0;    D. int a[3]={1,2,3,4,5};
注解:数组初始化时,元素要用{}括起来,BC不正确,个数不能超过数组长度,D不正确,所以选择A。
2.设有int a[ ]={3,4,6,9,13,18},x;,执行语句x=a[1]-a[4];后,则变量x的值是______
A. -6    B. 9
C. 6    D. -9
注解:在元素下面标上下标,记注从0开始,可得a[1]=4,a[4]=13,计算得x=4-13=-9,所以选D
3.以下数组定义及初始化中不正确的是______
A. int a[2][3]={0};
B. int c[100][100]={{1},{2}};
C. int b[][3]={0,1,2,3};
D. int d[3][]= {{1},{2}};
注解:二维数组初始化时第二维的长度不能省,所以选D
4.设有定义:int t[][3]={9,8,7,6,5,4,3,2,1};,则执行 printf("%d",t[1][1]);后输出的结果是______
A. 8    B. 5
C. 2    D. 3
注解:,所以t[1][1]=5,选B
5.设有定义:int a[2][3]={{1},{2}},b[3][2]={1,2};,则a[1][0]+b[0][1]的值是______
A. 1    B. 2
C. 3    D. 4
注解:a[1][0]=2,b[0][1]=2,选D.
二)字符串
1)字符串和字符数组的区别
2)字符串函数的应用
例题:
1.以下程序的输出结果是(  )
#include <stdio.h>
#include<string.h>
main()
{  char st[20]=”2000\0\t\\”;
printf(“%d,%d\n”,strlen(st),sizeof(st));
}
A)7,7    B)4,20    C)10,20  D)20,20
注解:strlen是给出字符串有效字符个数,也就是第一个\0前的字符个数,而sizeof是给出数组所占的空间大小,1个字符串个字节,所有数组长度定义多少,就是多少,选B.
2.要将字符串a连接到字符串b后面,使用下面(  )语句
A)strcpy(a,b);    B)strcat(a,b);    C)strcpy(b,a);  D)strcat(b,a)
注解:选D,注意审题,是a连接到字符串b后。
三)算法
一维数组常见题型:
1.数组插入、删除
2.数组元素求和
3.数组逆置
4.数组查(顺序查、折半查)
fprintf作用5.冒泡排序、选择排序
二维数组常见题型:
    在矩阵上的进行操作:矩阵转置、矩阵求和、求最大值等。
字符数组常见题型:各字符串函数的实现
例题:
1.已知字符串char  s[50]=”Iamstudent.”,请编写程序将字符a插入到student之前,结果为“Iamastudent”。
2.有一个3×4的矩阵,要求编程以求出其中值最大的那个元素,以及它所在的行号和列号。
程序如下:
#include <stdio.h>
void main()
{
int i,j,row=0,col=0,max;
static int a[3][4]={{3,5,1,8},{6,4,11,7},{9,3,10,2}};
max=a[0][0];
for(i=0;i<___;i++)    /*$BLANK1$*/ 3
  for(j=0;j<4;j++)
    if(___)        /*$BLANK2$*/a[i][j]>max
      {
        max=___;    /*$BLANK3$*/a[i][j]
        row=i;
        col=j;
      }
printf("max=%d,row=%d,col=%d\n",max,row,col);
}
八、函数
一)函数语法
(1)程序是由多个函数组成的,一个程序有且只有一个main函数,程序的运行是从main函数开始到时main函数结束
(2)函数不能嵌套定义,可以嵌套调用
(3)使用函数的三点:定义、调用、申明(见下图)
(4)函数的参数:形参和实参
    要求形参和参类型一致,个数相同
    传递过程是将实参的值对应传给形参
(5)值传递和地址传递
    值传递:简单类型,实参传给形参,形参发生变化不能传给实参。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。