省二C复习资料 下载本文

三)switch语句

(1)switch的执行过程 (2)break的用法 例题:

1.#include main()

{ int x=1,y=1,a=0,b=0; switch(x)

{case 1:switch(y) { case0:a++; case 1:b++;

case2:b++;break; }

case 2:a++;b++;break; case 3:a++;b++;

}

printf(“a=%d,b=%d\\n”,a,b); }

输出结果:

2.#include输入:3210

main() {charc;

while((c=getchar())!=’\\n’) {switch(c-‘1’) {case 0:

case 1:putchar(c+2); case 2:putchar(c+3);break; case 3:putchar(c+4); default:putchar(c+1);break; }

printf(“\\n”); }

} 输出结果:

四)算法

1.交换:t=a;a=b;b=t 2.分段函数

输入出租车里程S,输出应付车费F。 S和F的关系如下:

8?F???8?(S?3)*2

四、循环结构

S??3 S?36/48

一)循环条件均以条件为真(非0)进行循环,以条件为假(0)结束循环) 例题:

1. 以下叙述正确的是( )

A) do-while语句构成的循环不能用其它语句构成的循环来代替 B) do-while语句构成的循环只能用break语句退出 C) do-while语句构成的循环,在while后的表达式为非零时结束循环 D) do-while语句构成的循环,在while后的表达式为零时结束循环 2. 设有程序段: int k=10;

while(k=0) k=k-1;

则循环体执行的次数为( )

A)10次 B)9次 C)0次 D)1次 3. 下列( ) 循环不是无限循环

A) for(y=0; x=1 ; ++y); B) for(; ; x=0);

C) while (x=1) {x=1; } D) for(y=0,x=1;x> ++ y; x++)

二)三种循环的执行流程 例题:

1. 设变量y值为3,执行下列循环语句后,变量y的值的是( )

do y++; while(y++<4); A)3 B)4 C)5 D)6

2. 执行语句for(I=1;I++<4;); 后变量I的值是( )

A)3 B)4 C)5 D)0

三)循环嵌套的执行次数 例题:

1.#include “stdio.h” void main() { int I,j;

for(I=0;I<=3;I++) { for(j=0;j

输出结果:

四)break 和continue的用法 例题:

1.有以下程序

void main() { int a=1,b;

for(b=1;b<=10;b++) { if(a>=8) break;

if(a%2==1) { a+=5; continue;} a-=3;

7/48

}

printf(\

}

输出结果:

2.#include void main( )

{ int I, m=0, n=0, k=0; for(I=5;I<=7;I++) switch(i/6)

{ case 0: m++; n++; case 6: n++; break; default: k++; n++; }

printf(“%d,%d,%d\\n”, m, n, k); }

输出结果:

五)算法 求和

1.求1+2+3+??+100之和;

2.编程输出100以内所有6的倍数及它们的和; 3.求输入的10个学生的成绩之和; 4.求1-1/2+1/3-1/4+??+(-1)n+1(1/n)

5.求1+1/2+2/3+3/5+5/8+8/13+??(加100项)

1. 利用下面公式求s的值(求20项之和)

s=1/(1*2*3)-1/(2*3*4)+1/(3*4*5)-1/(4*5*6)+...+1/(19*20*21)-1/(20*21*22)

求最大、小值

1. 输入10个数据,求出其中的最大值; 2.输入10个数据,求出其中的最小值; 统计

1.输入10个学生的成绩,统计出及格的人数。

2.输入一行字符(以回车结束输入),统计其中数字、字母和其它字符的个数。 画图

1. 编写程序打印以下图案(必须使用循环结构,直接输出不给分)

1 23 456 7890

2. 打印出以下图案(必须使用循环结构,直接输出不给分) * ***

***** *******

8/48

求素数

1. 判断m是否是素数

2. 编程求100~300之间的全部素数的和

求最大公约数

1.求两个整数m 和n 最大公约数。

穷举法

1. \百马百担\问题。有100匹马驮100担货,每匹大马每次驮3担,每匹中马每次驮2担,

2匹小马每次分驮1担。编写程序求大、中、小马的匹数(大、中、小马的匹数均不得为0)。

2. 一个素数加上1000以后是43的倍数,求满足这个条件的最小素数。

3. 有2个小于40的正整数a和b,a的平方与b的和是1053,b的平方与a的和是873,

请编程求满足条件的a和b的值。(提示:满足条件的a,b的值唯一)

4. 一个自然数除以2余1,除以3余2,除以4余3,除以5余4,除以7余5,求满足这

个条件的最小的自然数?

5. 求所有的\水仙花数\之和。所谓\水仙花数\是指一个三位数,其各位数字的立方和等于

该数本身。例如153是一个\水仙花数\,因为:153=1*1*1+5*5*5+3*3*3。

五、数组 一)数组语法

(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 例题:

1. 数组定义为int a[10][10];,则数组a有( )个数组元素。

A)100 B)81 C)20 D)121 2. 以下一维数组 a的正确定义是( )

A)int a(10); B)int n=10,a[n]; C) int n; D)#define N 10 Scanf(“%d”,&n); int a[N]; Int a[n];

3. 设有语句”int a[]={3,4,5,9,8,7};”则表达式a[1]-a[4]的值是( )

A)-6 B)6 C)-4 D)2

4. 以下不能正确定义二维数组的是( )

A) int a[2][2]={ {4}, {5}};B) int a[][2]={4,5,6,7};

C) int a[2][2]={ {4},5,6}; D) int a[2][]={{4,5},.{6,7}};

9/48

二)字符串

1)字符串和字符数组的区别 2)字符串函数的应用 例题:

1. 以下程序的输出结果是( )

#include #include 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

2. 要将字符串a连接到字符串b后面,使用下面( )语句

A)strcpy(a,b); B)strcat(a,b); C)strcpy(b,a); D)strcat(b,a)

三)算法

一维数组常见题型: 1.数组插入 2.数组删除 3.数组逆置

4.数组查找(顺序查找、折半查找) 5.冒泡排序、选择排序 二维数组常见题型:

在矩阵上的进行操作:矩阵转置、矩阵求和、求最大值等。

字符数组常见题型:各字符串函数的实现

例题:

1. 已知字符串char s[50]=”Iamstudent.”,请编写程序将字符a插入到student之前,结果

为“Iamastudent”。

2. 有一个3×4的矩阵,要求编程以求出其中值最大的那个元素,以及它所在的行号和列

号。 程序如下:

#include void main() {

int i,j,row,col,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$*/ for(j=0;j<4;j++)

if(___) /*$BLANK2$*/ {

max=___; /*$BLANK3$*/ row=i;

10/48