给各位新老学员的通知
作者:黄伟 日期:2009-09-28
强化阶段的编程题分类
作者:黄伟 日期:2010-01-04
第三单元 02-字符串
作者:黄伟 日期:2009-12-05
第三单元 02-字符串
1.字符数组的定义
2.字符数组的输入和输出
3.字符串的常见处理
例题1:给定两个字符串char s[200],和char t[200],将t中的内容连接到s的尾部形成新串
例题2:给定一个字符串char s[200],由字母字符组成,将大写字符改成小写,小写改成大写。
例题3:给定一个字符串char s[200],将其中字母字符改成下一个字符a->b,b->c...z->a大写仍大写,小写仍小写,其他字符不变
例题4:给定一个字符串char s[200],将其逆置后输出
例题5:给定一个字符串char s[200],char t[200],将s中ASCII值为偶且下标为偶的字符存入t中形成新串并输出
例题6:给定一个字符串char s[200],由字母和星号组成
6.1删除前导星号
6.2删除后导星号
6.3删除中间星号
6.4使前导星号个数不多于n个
6.5使后导星号个数不多于n个
例题1:给定两个字符串char s[200],和char t[200],将t中的内容连接到s的尾部形成新串
#include <stdio.h>
#include <string.h>
void main()
{
char s[200]="chinese";
char t[200]="kongfu";
int i,c;
c=strlen(s);
for(i=0;i<=strlen(t);i++)
{
s[c++]=t[i];
}
第3单元 03-二维数组
作者:黄伟 日期:2009-12-05
二维数组中需要掌握的内容
1.二维数组的定义
2.二维数组的输入和输出
3.二维数组中数据进行处理的常见算法(遍历范围的控制,两种结构,两种特殊操作)
例题1:给定一个二维数组int a[5][6];求二维数组的累加和
例题2:给定一个二维数组int a[5][6];求其最大值
例题3:给定一个二维数组int a[5][5];将其下三角元素清成0
例题4:给定一个二维数组int a[5][5];将其上三角元素乘以2
例题5:给定一个二维数组int a[5][5];输出其对角线上元素的值
例题6:给定一个二维数组int a[5][5];输出其副对角线上元素的值
例题7:给定一个二维数组int a[5][6];和int b[5];分别求出a中各行的累加和并存入b中
例题8:给定一个二维数组int a[5][6];和int c[6];分别求出a中各列的最大值并存入c中
例题9:给定一个二维数组int a[5][6];以行为单位进行逆置并输出
例题10:给定一个二维数组int a[5][6];以列为单位进行逆置并输出
例题11:给定一个二维数组int a[5][5];将其转置后输出
例题12:给定一个二维数组int a[5][5];和int b[5][5];将A+A'->B
例题1:给定一个二维数组int a[5][6];求二维数组的累加和
#include <stdio.h>
void main()
{
int a[5][6]={
{3,12,6,7,1,3},
{6,14,3,5,6,3},
{9,55,6,21,2,8},
{12,3,21,41,1,12},
{14,2,3,4,6,34}
};
int i,j,s;
s=0;
for(i=0;i<5;i++)
{
for(j=0;j<6;j++)
{
s+=a[i][j];
}
}
第3单元-01一维数组
作者:黄伟 日期:2009-12-03
一维数组中需要掌握的题型有
1.一维数组求累加和及平均值
2.一维数组中求最大值和最小值
3.在一维数组中进行位置移动
4.对一维数组进行逆置
5.将运算结果保存到一维数组中
例题1:给定一维数组int a[10],求其累加和并输出。
#include <stdio.h>
void main()
{
int a[10]={3,15,2,19,64,52,73,94,11,6};
int i,s;
s=0;
for(i=0;i<10;i++)
{
s+=a[i];
}
printf("SUM=%d\n",s);
printf("AVER=%f",s/10.0);
}
例题2:给定一位数组int a[10],求其最大值并输出
#include <stdio.h>
void main()
{
int a[10]={3,15,2,19,64,52,73,94,11,6};
int i,max;
第2单元-03循环结构
作者:黄伟 日期:2009-10-21
1.循环基本结构
C语言中实现循环控制基本结构的语句主要有三种for,while和do-while语句,我们先看看这几种循环语句的基本执行过程
for(初始;条件;控制)
{
循环体;
}
这条语句的执行过程如下图所示

那我们通过一个简单的例子看一下他的执行过程
for(i=1;i<=10;i++)
{
printf("%4d",i);
}
我们可以看的出来,通过初始,条件和控制三个部分起到了控制循环体执行次数的作用,因此我们首先要掌握如何用各种语句进行循环体执行次数的控制。
对于这个程序我们必须搞清楚两件事情:一是循环体部分被执行的次数,二是循环结束后变量i的值
我们可以看出当i的值是1,2,……10这十个数字时条件会成立,而成立则就会执行循环体部分,当i的值是11的时候,条件不成立则退出循环,所以循环体是当i的值为1到10的情况下执行了10次,而循环结束后变量i的值是11。
再来看while循环
初始;
while(条件)
{
循环体;
控制;
}
他的执行过程如下图所示:

还是刚才for循环语句的三个因素用到while循环语句中
i=1;
while(i<=10)
{
printf("%4d",i);
i++;
}
和刚才情况一样,我们继续考虑循环体被执行的次数和循环结束后变量i的值,我们可以看到效果是完全一样的。
再看do-while循环
初始;
do
{
循环体;
控制;
}while(条件);
他的执行过程如下图所示:

还是刚才for循环语句的三个因素用到do-while循环语句中
i=1;
do
{
printf("%4d",i);
i++;
}while(i<=10);
和刚才情况一样,我们继续考虑循环体被执行的次数和循环结束后变量i的值,我们可以看到效果是完全一样的。循环体依然是在变量i从1到10执行到10次,循环结束后变量i的值是11。
我们可以看到这三个循环语句都是“条件成立时进行循环,条件不成立时退出循环”,都是“当型循环”,“直到型循环”的执行过程是“条件不成立时进行循环,直到条成立时退出循环”,我们在这里不研究“直到型循环”。
第2单元-02选择结构
作者:黄伟 日期:2009-10-21
选择结构
选择结构主要是一种通过判断,选择执行相应某些语句的一种流程控制结构,主要形式有两种形式,如下图所示
if-else语句

switch-case语句

第一种形式是通过判断条件是否成立,选择执行两方中的某一方。第二种形式是判断测试表达式的值和那个值匹配,执行相应的支上的语句。
1.基本结构
A;
if(条件)
{
支语句1;
}
else
{
支语句2;
}
B;
在基本结构种我们特别强调两个方面
a)承前启后的语句A和语句B,这两个语句并不是选择语句,而是选择语句之前后之后的两个语句,无论条件是否成立,这两条语句都会被执行到,这一点从流程控制图上能清楚的看到,我们在设计的时候一定要考虑一下那条语句执行后开始进行选择语句和选择执行某个分支语句之后用接着从那条语句开始执行。
b)注意组合语句的使用,如果支语句中是多条语句,那么一定要用组合语句符{}把他们括起来才行,否则计算机只将其中第一条作为支上的部分,后面的会认为是主干上的部分,当然如果只是一条语句的话,用{}括起来可以,不用也可以。因此我建议大家无论支语句是一条还是多条,都先用一对大括号括起来,保证不会出错,而后发现只是将一条括起来的话,也可以去掉。这样就不容易出错了。
例题:输入两个数字,找出较大的数字并输出
#include <stdio.h>
void main()
{
int a,b,max;
scanf("%d%d",&a,&b);
if(a>b)
max=a;
else
max=b;
printf("MAX=%d",max);
}
测试:
输入12 67
结果输出67
输入98 53
结果输出98
2.选择嵌套
选择结构的基本语句,经过条件判断,只能是成立或不成立,选择执行其中一方,这样的结构似乎只是将流程分成了“两路”,而我们在设计的时候肯定会遇到根据当时的状况需要将流程分成“多路”的需要,那么利用if-else结构怎样才能实现呢?那么这就需要我们在选择语句的支语句中采用选择语句,也就是说在支上再分支,也可以说成是:分支语句的支语句1或支语句2本身又是一个选择结构语句。这样以来就能实现根据情况选择“多路”中的某一路来执行了。那么这个时候我们就要考虑这样的程序我们应该怎样进行设计呢。我们的办法是借助N-S流程图帮我们进行这种比较复杂的选择结构的设计。
题意 N-S流程图 程序
例题:输入三个数,找出最大的数字并输出
找到三个数字中的最大值的N-S图如下:

根据N-S图写出的程序如下
#include <stdio.h>
void main()
{
int a,b,c,max;
scanf("%d%d%d",&a,&b,&c);
if(a>b)
{
if(a>c)
max=a;
else
max=c;
}
else
{
if(b>c)
max=b;
else
max=c;
}







