C语言请帮一下忙^_^

来源:百度知道 编辑:UC知道 时间:2024/06/20 14:05:24
其中为什么要加语句ch = xx[ i ][ strlen(xx[ i ])-1];和xx[ i ][ 0 ] += ch;这条语句(xx[ i ][ j ] =xx[ i ][ j ]>>=4 + xx[ i ][ j-1 ];)算不算是正确的?
/*------------------------------------------------------------------------
题目100:函数READDAT()实现从文件IN.DAT中读取一篇英文文章存入到字符串数组
XX中;请编制函数CHA(),其函数功能是:以行为单位把字符串中的最后一个字符的ASCII
值右移4位后加最后第二个字符的ASCII值,得到最后一个新的字符,最后第二个字符
的ASCII值右移4位后加最后第三个字符的ASCII值,得到最后第二个新的字符,依此类
推一直处理到第二个字符,第一个字符的ASCII值加原最后一个字符的ASCII值,得到
第一个新的字符,得到的新字符分别存放在原字符串对应的位置上。最后已处理的字
符串仍按行重新存入字符串数组xx中,最后调用函数writeDat()把结果xx输出到文件
OUT10.DAT中。原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号
和空格。
注意:部分源程序已给出。
请勿改动主函数main()、读数据函数ReadDat()和输出数据函数writeDat()的内容。
------------------------------------------------------------------------*/
#include <stdio.h>
#include <string.h>
#include <conio.h>

char xx[50][80] ;
int maxline = 0 ; /* 文章的总行数 */

int ReadDat(void) ;
void WriteDat(void) ;

void CharConv

题目要求:“第一个字符的ASCII值加原最后一个字符的ASCII值,得到
第一个新的字符”,所以这里ch = xx[ i ][ strlen(xx[ i ])-1];是为了保存最后一个字符的原始值,用来和第一个字符相加

(xx[ i ][ j ] =xx[ i ][ j ]>>=4 + xx[ i ][ j-1 ];)是正确的。

附:C++ 运算符优先级列表 c语言的操作符共有15个优先级,如下:
Operators Associativity
() [] -> . left to right
! ~ ++ -- + - * (type) sizeof right to left
* / % left to right
+ - left to right
<< >> left to right
< <= > >= left to right
== != left to right
& left to right
^ left to right
| left to right
&& left to right
|| left to right
?: right to left
= += -= *= /= %= &= ^= |= right to left
, left to right
优先级从上到下依次递减,最上面具有最高的优先级,逗号操作符具有最低的优先级。
所有的优先级中,只有三个优先级是从右至左结合的,它们是单目运算符、条件运算符、赋值运算符。其它的都是从左至右结合。
具有最高优先级的其实并不算是真正的运算符,它们算是一类特殊的操作。()是与函数相关,[]与数组相关,而->及.是取结构成员。
其次是单目运算符,所有的单目运算符具有相同的优先级,因此在我认为的 真正的运算符中它们具有最高的优先级,又由于它们都是从右至左结合的,因此*p++与*(p++)等