早教吧作业答案频道 -->其他-->
对您之前回答的追问(原问题我给按错钮提交了).这个回答我还是不太懂,执行次数是怎么变化的?执行次数的问题,我不太懂.执行次数是原来的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
这个回答我还是不太懂,执行次数是怎么变化的?执行次数的问题,我不太懂.执行次数是原来的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次,值会一样么
看了 对您之前回答的追问(原问题我...的网友还看了以下:
下列行为不属于先天行为的是A.寄居蟹完成蜕皮后,所有个体都会表现出寻找空贝壳并钻壳的行为B.马戏团 2020-05-13 …
请看右边的图片,将小偷被人游街示众说明()A.这种行为是合法的行为,能有效地震慑小偷小摸行为B.这 2020-05-14 …
小阳放学后以9千米/小时的速度骑自行车回家,自行车链条坏了,他停下来修理了5分钟,没有修好,只好推 2020-06-18 …
两列火车在平直的平行双轨道上相向行驶,火车的速度均保持30千米/时不变,当两列火车相距60千米时, 2020-07-08 …
甲乙丙三人去旅行,行程为75千米,甲与乙乘车以每小时25千米的速度前进,而乙则以每小时5千米的速度 2020-07-25 …
请看下边的图片,将小偷被人游街示众说明[]A.这种行为是合法的行为,能有效地震慑小偷小摸行为B.这种 2020-11-06 …
耶稣为什么说拉撒路睡了这句话是什么意思啊?(约翰福音11:11—14)请问大家是怎么理解耶稣说的这句 2020-11-08 …
下列说法中正确的是()A.对垃圾进行分类要严格执行国际统一的标准B.对垃圾进行分类的主要目的是便于垃 2020-12-01 …
非洲有一种花鸟,展翅时象花瓣,头部似花蕊,这样既能躲避敌害,又可轻取飞来的昆虫,这种行为在生物学上叫 2020-12-17 …
请看右边的图片,这种“示众”行为说明A.这种行为是合法的行为,能有效地震慑小偷小摸行为B.这种行为是 2020-12-21 …