商品记录排序问题考试形式比较单一,题库中所占比例1/10左右,题目主要考察strcmp函数的应用和结构体,结构数组,字符比较函数应用,冒泡排序法的应用,相对来讲比较容易复习题目类型。
该类型题目,大家熟练掌握。
3、41-49:
int i,j;
PRO data; 此处注意PRO的大小写 for(i=0;i if(strcmp(sell[i].mc,sell[j].mc)<0||strcmp(sell[i].mc,sell[j].mc)==0&&sell[i].je *************************************************************************** { data=sell[i]; sell[i]=sell[j]; sell[j]=data; } 第三部分 字符处理问题(相对较复杂) 抽中率在33%左右 字符处理问题在整个题库中占比列比较大,题目考察形式相对比较多,下面按照考试题型分别加以介绍。大家在各个类型中需要掌握答题规律和技巧。这部分请重点理解对一篇文章的处理方法(高频率运用strlen函数和for语句循环操作一个二维字符数组) 在100题里只要是读取一篇英文文章再对文章的字符串进行指定处理的题目。一般都是要涉及到一个二维数组用来存放字符串。在编制程序代码时也一般都要用到两个大的循环架子,即外循环控制各个行,内循环控制每行的各个字符的扫描!这点应该熟练到只要一见到这类题就应该作出的第一本能反映,上来就应该先写出这俩循环架子,这也算是一个作题规律! 字符处理问题形式1:字符替换问题:4,5,50-58,59 字符处理问题形式2:字符排序问题:7,73,74,75,76,77 字符处理问题形式3:字符移动问题 60,61,62,63,64,65 字符处理问题形式3:特殊问题 66,67,68 带 :标志表示相对复杂题目,请大家注意 ↓字符处理问题形式1 替换 ------------------------------------------------------------ 重点掌握主要有几种方法: ? 要知道小写字母和大写字母怎样产生的。他们在ASCII码表中有相应的数值对应,a对 应97, A对应65,也就是说小写字母比大写字母大32,字母之间的关系:b-z, B-Z就是依次加1,也就时候b = a + 1;B = A+1;注意这里是直接数值相加,所以变换的时候直接按数值加减即可。 ? 第二种方法就是用小写和大写的直接差值进行计算,其实原理与上面相同, 对应的小写 字母减去大写字母等于32 是衡等的。 char a = 'a'; a -=32;//获取一个大A a = 'b'; a -= 32;//获取一个大B ? 字符串倒转算法: d c b a h g f e 9 4 3 2 8 7 6 5 则处理后字符串 h g f e d c b a 8 7 6 5 9 4 3 2 for(j=len/2-1,k=len-1;j>=0;k--,j--) //注意此处j条件不能为j>0 { tmp=xx[i][j]; xx[i][j]=xx[i][k]; } xx[i][k]=tmp; 下面题目是以上前两点在题目中的运用: 4、 int i,j,len; for(i=0;i { /*注意此处的大括号不能丢*/ len=strlen(xx[i]); for(j=0;j { if(xx[i][j]*11%6<=32||xx[i][j]*11%6>130) continue; /*注意此处没有使用中间变量*/ else xx[i][j]=xx[i][j]*11%6; } } 5、 int i,j,len; for(i=0;i len=strlen(xx[i]); for(j=0;j if(xx[i][j]>='a'&&xx[i][j]<='z') /*小写字符表示方法*/ if(xx[i][j]=='z') xx[i][j]='a'; else xx[i][j]+=1; /*注意下一个字符表示方法*/ } 50-58:字符替换题目 50 int i,j,len; char ch; for(i=0;i len=strlen(xx[i]); for(j=0;j ch=xx[i][j]*11%6; if(xx[i][j]%2==0||ch<=32) continue; else xx[i][j]=ch; } } 51 int i,j,len; char ch; for(i=0;i { /*注意此处不能丢掉大括号*/ len=strlen(xx[i]); for(j=0;j } if(ch>='0'&&ch<='9'||ch<=32) continue; else xx[i][j]=ch; 题目5的简单条件变化 ★ 60:有关字符指针操作 while(*s) { if(*s=='z'||*s=='Z') { *s-=25; s++; } else if(*s>='a'&&*s<'z') { *s+=1; s++; } else if(*s>='A'&&*s<'Z') { *s+=1; s++; } Else /*此处else不能丢掉*/ s++; /*此处指针下移不能丢到*/ } 另外一种做法:如果指针不熟悉的同学,可以采用这种方法 int i; for(i=0;i s[i]-=25; else if(s[i]<'Z'&&s[i]>='A') s[i]+=1; else if(s[i]<'z'&&s[i]>='a') s[i]+=1; 上题请大家如何合并判断字母条件,简化嵌套层次 ↓字符处理问题形式2 排序-------------------------------------------------------- 7 int i,j,k,len; char tmp;