早教吧作业答案频道 -->其他-->
对您之前回答的追问(原问题我给按错钮提交了).这个回答我还是不太懂,执行次数是怎么变化的?执行次数的问题,我不太懂.执行次数是原来的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次,值会一样么
看了 对您之前回答的追问(原问题我...的网友还看了以下:
不懂得怎样培养语言的理解能力和表达能力我不懂得怎样表达我想要说的话,对于语言的表达能力很差,通常的 2020-04-27 …
旧时如梦.现时似旧.懂英语的解释一下英语怎么说(不要太死版太书面化)懂是什么意思的就帮我翻译一下这 2020-05-13 …
怎么配平,怎么写化学式,怎么知道生成沉淀和气体等,学化学那么久,什么都不懂 2020-05-13 …
高中化学很难吗?哎!没想到,高中的化学比我想象中的要难懂.高一讲道物质的量这个概念时,我就开始有点 2020-06-10 …
(NH⁴)₂SO₄的化合价怎么算,我初三刚学的,没怎么听懂比较复杂的化合物的化合价怎么算 2020-07-14 …
高中化学完全听不懂了怎么办?高一开始一节化学课都没有听过,现在高二上期就要完了,知道要努力了,试着 2020-07-14 …
我对拉康的镜像理论十分不理解,我想问问:什么是初次同化二次同化,希望能浅显一点,为什么是一次主题性 2020-07-16 …
一年计息两次,怎么理解?比如说某银行年利率为10%,一年计息2次,那么实际的年利率就是(1+10% 2020-08-04 …
问道bb进化后成长计算,请专业人士,懂的高人,讲解70法功的雪女,强化2后应该是82,飞升后,这强化 2020-11-04 …
语文的语法怎么学?什么定语,表语等等我都不懂,甚至也不懂找,怎么办?我的基础比较差,我的反应慢,老师 2020-12-23 …