早教吧作业答案频道 -->其他-->
对您之前回答的追问(原问题我给按错钮提交了).这个回答我还是不太懂,执行次数是怎么变化的?执行次数的问题,我不太懂.执行次数是原来的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次,值会一样么
看了 对您之前回答的追问(原问题我...的网友还看了以下:
危险动作请勿模仿英语1危险动作请勿模仿imitate查了下,是及物动词,若用这个词的话,是要有宾语 2020-04-22 …
正四面体侧面与底面所成角为45度底面边长分别为3,4,5求侧面积.我是这样想的:底面积为6由面积射 2020-05-24 …
英语翻译1你舍得离开我吗?2我怎么会离开你呢3你愿意放弃现在的工作和家人,和她一起走?4我才不舍得 2020-06-03 …
求各位英语大神帮帮小弟重点句子:1.你怎样学习英语?我通过小组学习来学习英语.doyoustudy 2020-06-10 …
写出下列问句形式(1)我心里纳闷,这么大的风雪,他待在那儿干嘛?()写出下列问句形式(1)我心里纳 2020-06-30 …
英语翻译1.如果你方报价合理,我们会设法说服客户成交.2.我们愿按每顿900美元的价格接受您的订单 2020-07-03 …
求助:矩阵和的n次方解法比如(3E+B)^n=(3E)^n+n*(3E)^(n-1)*B(E+B) 2020-07-29 …
求助:矩阵和的n次方解法比如(3E+B)^n=(3E)^n+n*(3E)^(n-1)*B(E+B) 2020-07-29 …
快帮我)1.你能告诉我去最近的地铁站的路吗?——————————————thenearestunde 2020-11-20 …
英语翻译1.在这附近有书店吗?2.我怎么样才能到达银行?3沿着这条路走大约10分钟,你就能看见邮局4 2020-12-16 …