22.下列程序的功能是:把str字符串中的所有字母改写成该字母的下一个字母,字母z改写成字母a。要求大写字母仍为大写字母,小写字母仍为小写字母,其他字符不做改变。 请编写函数CharChange(char*str)实现程序要求,最后调用函数RWData()从IN.dat文件中读取50组数据,分别得出结果,并把结果输出到文件OUT.dat中。2 K( h, j5 c0 A/ o' V7 C1 l+ |
例如,str字符串中原有的内容为:Mn.123Zxy,则调用该函数后,结果为:No.123Ayz。
- s4 Z3 j1 C! z3 _% m 【答案】+ J* |9 A3 A2 @& f6 H+ [4 g7 S* `5 o
void CharChange(char *str)
; @2 V% l9 K- @% s) t4 x { while (*str)
' K# D. \# S5 U9 X2 J7 }7 M- n { if (*str=='z' || *str=='Z')4 R; i n' z7 W V+ m4 M1 E& @
*str -= 25;5 o, p" b, k. m9 h( N1 T
else if (isalpha(*str))) J" `' D9 O. n0 g6 A
*str += 1;
3 ^; D* j4 _5 ?) l str++;5 V) j) B0 D! a- _3 w' k. u# U
}
0 U# D1 E U( U$ H: A, {7 U8 W }
( A( u) F: E( ]6 Z3 `3 N 23.已知在文件IN.dat中存有100个产品销售记录,每个产品销售记录由产品代码code(字符型4位)、产品名称name(字符型10位)、单价uprice(整型)、数量amount(整型)、金额sum(长整型)5部分组成。其中,金额=单价×数量。函数RData()读取这100个销售记录并存入结构数组sell中。请编写AscendSort()函数,其功能是:按产品名称从小到大进行排列,若产品名称相等,则按金额从小到大进行排列,最终排列结果仍存入结构数组sell中。最后调用函数WData(),把结果输出到文件OUT.dat中。. h: Y' ?: ]- T3 k3 O2 V |
【答案】, D; E2 o5 c3 Q% y
void AscendSort()9 v! r/ z: M* L* ?! q
{ int i, j;
" e7 K$ @( s9 ^% Y$ p% d PRO temp;2 i. u. i2 Y7 {: @# x- c7 L% d
for (i=0; i sell[j].sum) a, O0 {/ T& B' l. [
{ temp = sell;4 H% o& `1 Y3 @6 `# c4 `
sell = sell[j];
. C4 `# N" x' w0 ~; {' b9 }+ O" Q+ l sell[j] = temp;9 `$ R; e1 M' P8 | ]+ U! {4 q
}! \. f+ i. Y' h ~
}
# A3 h" H# g" |# r" T! n }3 ]+ B. l Q) d0 u" X- {/ t" j
24.已知数据文件IN.dat中存有200个四位数,并已调用读函数RData()把这些数存入数组a中,请编写函数evenVal(),其功能是:若一个四位数的千位上的数字值小于等于百位上的数字值,百位上的数字值小于等于十位上的数字值,以及十位上的数字值小于等于个位上的数字值,并且该四位数是偶数,则统计出满足此条件的个数count,并把这些四位数按从小到大的顺序存入数组b中。最后调用写函数WData(),把结果count以及数组b中符合条件的四位数输出到OUT.dat文件中。( {! d& F; m) Z4 J) b
程序中已定义数组a[200],、b[200],已定义变量count。* e+ {1 b% l6 O5 @9 {7 A2 E
【答案】
& R5 K5 u1 [: u9 F, q' N2 t# c void evenVal()
7 {3 l# W/ }* E& r9 Y { int i, j;
* p( z J- |( t0 H int a1, a2, a3, a4, k;- A5 u t7 E6 e: F/ [9 Y& M
4 ?' l5 `1 t8 B6 v7 c2 t8 n3 B* D for (i=0; i |