早教吧 育儿知识 作业答案 考试题库 百科 知识分享

对您之前回答的追问(原问题我给按错钮提交了).这个回答我还是不太懂,执行次数是怎么变化的?执行次数的问题,我不太懂.执行次数是原来的2倍么(因为是2个for么)?为什么执行次数会对

题目详情
对您之前回答的追问(原问题我给按错钮提交了).
这个回答我还是不太懂,执行次数是怎么变化的?执行次数的问题,我不太懂.执行次数是原来的2倍么(因为是2个for么)?为什么执行次数会对结果产生这么大的影响?
以下为您的回答:
for (j=str-1; j>=1; j--)
for (k=j-1; k>=0; k--)
{
xx[i][j]>>=4;
xx[i][j]+=xx[i][k];
}

for (j=str-1; j>=1; j--)
{
xx[i][j] >>= 4;
xx[i][j] += 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
#include
#include
char xx[50][80];
int maxline = 0; /* 文章的总行数 */
int ReadDat(void);
void WriteDat(void);
void CharConvA(void)
{
int i,j,strl;
char ch;
for (i=0; i0; j--)
\*一开始我是这样写的:for (j=str-1; j>=1; j--)
for (k=j-1; k>=0; k--)
{
xx[i][j]>>=4;
xx[i][j]+=xx[i][k];
}
但是运行后的结果和答案不符,为什么这里面不能使用第二个for语句:for (k=j-1; k>=0; k--).*\
{
xx[i][j] >>= 4;
xx[i][j] += xx[i][j-1];
}
xx[i][0] += ch;
}
}
void main()
{
if (ReadDat())
{
printf("数据文件IN.DAT不能打开!\n\007");
return;
}
CharConvA();
WriteDat();
}
int ReadDat(void)
{
FILE *fp;
int i = 0;
char *p;
if ((fp = fopen("IN.DAT","r")) == NULL)
return 1;
while (fgets(xx[i],80,fp) = NULL)
{
p = strchr(xx[i],'\n');
if (p)
*p = 0;
i++;
}
maxline = i;
fclose(fp);
return 0;
}
void WriteDat(void)
{
FILE *fp;
int i;
fp = fopen("OUT.DAT","w");
for (i=0; i
▼优质解答
答案和解析
问题是你在循环里做的不是比较,而是运算,比如说,a=1;a=a+2;后者执行1次与2次,值会一样么