C语言辅导资料 下载本文

#include void main() {

int i,s,k,count=0;

for(i=100; i<=1000; i++) {

s=0; k=i;

while( ) {

s+=k; k= ; }

if(s!=5)

; else

count++; }

printf(“%d”, count); }

【例3.43】下面程序的运行结果是 。

#include void main() {

int i=5; do{

switch(i%2) {

case 4: i- -; break; case 6: i- -; continue; }

i- -; i- -; printf(“%d”,i); }while(i>0); }

【例3.44】下面程序的功能是计算一分数数列前20项的和:2/1,3/2,5/3,8/5,13/8,…

#include void main() {

float s=0.0; int i,a,b,t;

for( ;i<=20;i++) {

s+= ; t=a+b; b=a;

25

a=t; }

printf(“s=%.2f”,s); }

第四章 数 组

【要点归纳】

1、一维数组

任何数组在使用之前必须先说明,即指定数组名称,大小和元素类型。一旦说明了一个数组,系统就会为它在内存中分配一个所申请大小的存储空间(sizeof(类型)*长度)。 ⑴一维数组的说明

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

说明:①数组名是一个地址常量,不允许对其值进行修改。 ②“常量表达式”表示该数组拥有多少个元素,即数组的大小,它必须是正数数。 ⑵一维数组元素的引用

数组名[下标]

说明:下标是某个数组元素到数组开始元素的位置偏移量;数组下标从0开始。 ⑶一维数组的初始化

? 对数组的全部元素赋初始值; ? 对数组的部分元素赋初始值; ? 在对数组的全部元素赋初值时,也可以将数组定义为一个不确定长度的数组(形式上的不确定)。 2、二维数组

⑴二维数组的说明

类型说明符 数组名[常量表达式1][常量表达式2]; 注:①二维数组中元素的顺序是:按行优先存放,即在内存中先顺序存放第一行的元素,

再存放第二行的元素,依此类推。

②二维数组可看成是一个特殊的一维数组,它的元素又是一维数组。

⑵二维数组元素的引用

数组名[下标1][下标2] 例:int A[M][N]

其元素A[i][j] 排在第i*N+j+1个存储位置上。 ⑶二维数组的初始化

? 分行给二维数组赋初始值;

? 按数组存储的排列顺序赋初始值;

? 允许省略第一维长度说明来给二维数组赋初始值。 3、字符数组

字符数组是用来存放若干个字符的数组,其定义和引用方式与其它数组相同。 4、字符串数组

字符串数组的每个元素又都是一个字符串。字符串数组是二维数组。 4、字符串处理函数

⑴puts(字符数组) ⑵gets(字符数组)

⑶strcat(字符数组1,字符数组2)

26

⑷strcpy(字符数组1,字符数组2) ⑸strcmp(字符串1,字符串2) ⑹strlen(字符串) ⑺strlwr(字符串) ⑻strupr(字符串)

【本节例题选编】 1、选择题

【例4.1】以下有关C语言中数组的说法正确的是

A.数组元素的数据类型可以不一致

B.数组元素的个数可以不确定,允许随机变动

C.可以使用动态内存分配技术,定义元素个数可变的数组

D.定义一个数组后,就确定了它所容纳的具有相同数据类型元素的个数

【例4.2】若有说明:int a[][3]={0,0};则下列所述正确的是

A.数组a的每个元素都可得到初值0; B.二维数组a的第一维的大小为4; C.数组a 的行数为2;

D.只有元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值

【例4.3】以下对一维数组a的正确说明是 。

A.int a(10); B.int n=10, a[n]; C.int n; D.#define SIZE 10

scanf(“%d”,&n); int a[SIZE]; int a[n];

【例4.4】若有说明:int a[3][4];则对a数组元素的正确引用是 。

A.a[2][4] B.a[1, 3] C.a[1+1][0] D.a(2)(1)

【例4.5】以下错误的语句是

A.static char word[ ]={?C?,?h?,?i?,?n?,?a?}; B.static char word[ ]={“China”}; C.static char word[ ]=”China”; D.static char word[ ]=?China?;

【例4.6】下面程序 (每行程序前面的数字表示行号)

1 main( ) 2 {

3 float a[10]={0.0}; 4 int i;

5 for(i=0; i<3; i++) scanf(“%d”,&a[i]); 6 for(i=1; i<10; i++) a[0]=a[0]+a[i]; 7 printf(“%f\\n”,a[0]); 8 }

A.没有错误 B.第3行有错误 C.第5行有错误 D.第7行有错误

【例4.7】下面程序的运行结果是 。

#include void main() {

27

int a[6], i;

for(i=1; i<6; i++) {

a[i]=9*(i-2+4*(i>3))%5; printf(“-”,a[i]); } }

A.-4 0 4 0 4 B.-4 0 4 0 3 C.-4 0 4 4 3 D.-4 0 4 4 0

【例4.8】以下对C语言字符数组的描述错误的是

A.字符数组可以存放字符串

B.字符数组中的字符串可以进行整体输入输出

C.可以在赋值语句中通过输值运算符“=”对字符数组整体赋值 D.字符数组的下标从0开始

【例4.9】有下面的程序段

char a[3], b[ ]=”China”; a=b;

printf(“%s”,a);

则 。

A.运行后将输出China B.运行后将输出Ch C.运行后将输出Chi D.编译出错

【例4.10】判断字符串s1是否大于字符串s2,应当使用 。

A.if(s1>s2) B.if(strcmp(s1,s2)) C.if(strcmp(s2,s1)>0) D.if(strcmp(s1,s2)>0)

【例4.11】已知:char c1[]={“abcd”}; char c2[]={?a?,?b?,?c?,?d?};则下所述正确的是

A.数组c1和数组c2等价 B.数组c1和数组c2的长度相同 C.数组c1的长度大于数组c2的长度 D.以上都不对

【例4.12】下面程序的运行结果是 。

#include void main( ) {

char str[ ]=”SSSWLIA”, c; int k;

for(k=2; (c=str[k])!=?\\0?; k++) {

switch(c) {

case ?I?: ++k; break; case ?L?: continue;

default: putchar(c); continue; }

putchar(?*?);

28