22.下列程序的功能是:把str字符串中的所有字母改写成该字母的下一个字母,字母z改写成字母a。要求大写字母仍为大写字母,小写字母仍为小写字母,其他字符不做改变。 请编写函数CharChange(char*str)实现程序要求,最后调用函数RWData()从IN.dat文件中读取50组数据,分别得出结果,并把结果输出到文件OUT.dat中。
* H* `7 Z( `! C. b: B0 i 例如,str字符串中原有的内容为:Mn.123Zxy,则调用该函数后,结果为:No.123Ayz。
- I+ z9 W, S! ~, m6 I B 【答案】' J0 C; G2 I$ a4 t
void CharChange(char *str)$ g- g/ \/ C, d1 P- n
{ while (*str)
+ }" b! S9 k0 S# K { if (*str=='z' || *str=='Z')1 }# a- w! D! Y( w0 K" u5 {
*str -= 25;- e; Q9 N! b2 c. A
else if (isalpha(*str))
% j7 k9 J3 h2 x% w) T4 T, L# g$ M$ e *str += 1;
8 e4 J+ t; c* S4 k str++;
6 F: b [( ^, }! M: g }; J# p3 y9 N) Q* i g1 b0 w4 K
}
1 ]3 G! Z+ z! K* W2 x: x2 e 23.已知在文件IN.dat中存有100个产品销售记录,每个产品销售记录由产品代码code(字符型4位)、产品名称name(字符型10位)、单价uprice(整型)、数量amount(整型)、金额sum(长整型)5部分组成。其中,金额=单价×数量。函数RData()读取这100个销售记录并存入结构数组sell中。请编写AscendSort()函数,其功能是:按产品名称从小到大进行排列,若产品名称相等,则按金额从小到大进行排列,最终排列结果仍存入结构数组sell中。最后调用函数WData(),把结果输出到文件OUT.dat中。7 l, D3 D" z; z0 E3 u6 B
【答案】 e1 t4 H H. A- X" ^4 q/ o
void AscendSort()/ A; A- N" Q1 @, ~; D
{ int i, j;
/ k0 q% _! m8 g. }+ o& p PRO temp;8 t" i$ @& k; |# c+ X6 U \7 w1 o
for (i=0; i sell[j].sum)
& l7 l- H2 F' x7 Z { temp = sell;
7 ?$ B! L, l" `3 J sell = sell[j];
8 H1 j: h. @: h& F# u7 | sell[j] = temp;
0 Q; K0 D; Y1 e4 F; } }3 c' d* U6 u2 F) f7 X
}) o2 m+ U1 k. P( b, J+ j; a
}, F( F$ n6 m" ^
24.已知数据文件IN.dat中存有200个四位数,并已调用读函数RData()把这些数存入数组a中,请编写函数evenVal(),其功能是:若一个四位数的千位上的数字值小于等于百位上的数字值,百位上的数字值小于等于十位上的数字值,以及十位上的数字值小于等于个位上的数字值,并且该四位数是偶数,则统计出满足此条件的个数count,并把这些四位数按从小到大的顺序存入数组b中。最后调用写函数WData(),把结果count以及数组b中符合条件的四位数输出到OUT.dat文件中。
) \% v4 m/ o+ t' S8 V 程序中已定义数组a[200],、b[200],已定义变量count。
! j9 D, W3 M: _ 【答案】$ y+ ~# V2 R% u
void evenVal()8 w2 V& q& \3 n' Y
{ int i, j;
7 _8 `# ^* T5 R1 `8 r int a1, a2, a3, a4, k;3 D2 d. {) m6 v5 J. O0 r
) k; {- J2 } `+ U0 X for (i=0; i |