早教吧作业答案频道 -->其他-->
对您之前回答的追问(原问题我给按错钮提交了).这个回答我还是不太懂,执行次数是怎么变化的?执行次数的问题,我不太懂.执行次数是原来的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次,值会一样么
看了 对您之前回答的追问(原问题我...的网友还看了以下:
能帮我解个题不,随机变量的在一个纸箱中装有12个电灯泡,其中3个有缺陷,现在从中任意挑5个,要求每 2020-05-15 …
从一件小事,琐事体现亲情之爱的作文,帮我想个题材,不许送伞的我们要列提纲的,我是想不出例子了,老师 2020-05-17 …
初中的最简公分母怎么求啊,什么叫所有因式的最高次幂的积做为公分母.各位高人不要说什么道理.最好是给 2020-06-02 …
写一段题记文章主要内容写一个家教对我产生的影响,对我思想的转变.根据这个内容,帮我写个题记,大概写 2020-06-06 …
关于阅动课堂2011年第三届创意作文大赛,主题是“不要怕.”帮我想个题目,好加五分我想写不要怕唱歌 2020-06-13 …
56789五个数字如何能用加减乘除各一次算出24点加减乘除只能各用一次!给我这个题目的朋友说``` 2020-06-27 …
什么情况下用Thedoctors?Itiswellknownthatdoctorsarebadly 2020-07-07 …
帮我算个题,有两次排名,第一次330名,第二次次260名,第一次取60%第二次取40%,看看平均名 2020-07-09 …
帮我找个让人耳目一新的作文题目~我的作文内容是关于孝敬父母的,谁帮我想个题目?我要那种很有感觉的题 2020-07-15 …
作文《那次考验了我》只要帮我想个题目 2020-11-06 …