c语言题目求解释

因为有答辩,所以我需要一下语句逐句的解释,请回答者帮我在一下命令各行后面写出这一句的意思是什么,解释越专业越好,谢谢了。有两个磁盘文件A和B,各存放一行字母,要求把这两个... 因为有答辩,所以我需要一下语句逐句的解释,请回答者帮我在一下命令各行后面写出这一句的意思是什么,解释越专业越好,谢谢了。
有两个磁盘文件A和B,各存放一行字母,要求把这两个文件中的信息合并(按字母顺序排列),  输出到一个新文件C中.1.程序分析:2.程序源代码:#include "stdio.h"main(){ FILE *fp;int i,j,n,ni;char c[160],t,ch;if((fp=fopen("A","r"))==NULL){printf("file A cannot be opened\n");exit(0);}printf("\n A contents are :\n");for(i=0;(ch=fgetc(fp))!=EOF;i++){c[i]=ch;putchar(c[i]);}fclose(fp);ni=i;if((fp=fopen("B","r"))==NULL){printf("file B cannot be opened\n");exit(0);}printf("\n B contents are :\n");for(i=0;(ch=fgetc(fp))!=EOF;i++){c[i]=ch;putchar(c[i]);}fclose(fp);n=i;for(i=0;i<n;i++)for(j=i+1;j<n;j++)if(c[i]>c[j]){t=c[i];c[i]=c[j];c[j]=t;}printf("\n C file is:\n");fp=fopen("C","w");for(i=0;i<n;i++){ putc(c[i],fp);putchar(c[i]);}fclose(fp);}
上面格式没弄好,不好意思,请改完的直接写在这里,或者发我邮箱jxmv.hi@163.com 谢谢
#include "stdio.h"
main()
{ FILE *fp;
int i,j,n,ni;
char c[160],t,ch;
if((fp=fopen("A","r"))==NULL)
{printf("file A cannot be opened\n");
exit(0);}
printf("\n A contents are :\n");
for(i=0;(ch=fgetc(fp))!=EOF;i++)
{c[i]=ch;
putchar(c[i]);
}
fclose(fp);
ni=i;
if((fp=fopen("B","r"))==NULL)
{printf("file B cannot be opened\n");
exit(0);
printf("\n B contents are :\n");
for(i=0;(ch=fgetc(fp))!=EOF;i++)
{c[i]=ch;
putchar(c[i]);
}
fclose(fp);
n=i;
for(i=0;i<n;i++)
for(j=i+1;j<n;j++)
if(c[i]>c[j])
{t=c[i];c[i]=c[j];c[j]=t;}
printf("\n C file is:\n");
fp=fopen("C","w");
for(i=0;i<n;i++)
{ putc(c[i],fp);
putchar(c[i]);
}
fclose(fp);
}
展开
 我来答
cilitie
推荐于2016-03-28 · 超过11用户采纳过TA的回答
知道答主
回答量:69
采纳率:0%
帮助的人:30.5万
展开全部
#include "stdio.h" /*这句话是包含头文件,stdio.h是类库自带的*/
main() /*主函数入口*/
{ FILE *fp; /*定义函数类型指针*/
int i,j,n,ni; /*定义几个整型变量*/
char c[160],t,ch; /*字符型变量t,ch,字符型数组c长度160*/
if((fp=fopen("A","r"))==NULL) /*以只读的方式打开当前目录下的文件A,并且通过==null来判断是否为空(即有没有打开)*/
{printf("file A cannot be opened\n"); /*在没有打开的情况下,输出引号中间的那句话*/
exit(0);} /*退出*/
printf("\n A contents are :\n"); /*如果能成功打开文件,输出引号中间的那段话*/
for(i=0;(ch=fgetc(fp))!=EOF;i++) /*循环 从文件A的开始,到结束符号EOF之前 逐个取出字符放到ch中*/
{c[i]=ch; /*将ch的值赋值给c[i],即c数组的第i个元素*/
putchar(c[i]); /*在屏幕上输出,即打印出这个字符*/
}
fclose(fp); /*将文件A关闭*/
ni=i; /*刚刚i记录了从A中获取的字符的长度个数,给ni*/
if((fp=fopen("B","r"))==NULL) /*同打开A,同样判断B文件是否打开*/
{printf("file B cannot be opened\n"); /*这几句话也同上*/
exit(0);
printf("\n B contents are :\n");
for(;(ch=fgetc(fp))!=EOF;i++) /*这些跟刚才读取A文件时是相同的*/
{c[i]=ch;
putchar(c[i]);
}
fclose(fp); /*关闭B文件*/
n=i; /*此时i是A+B文件的字符个数,给n*/
for(i=0;i<n;i++) /*当小于文件字符个数时候,进入循环,进行排序*/
for(j=i+1;j<n;j++)
if(c[i]>c[j])
{t=c[i];c[i]=c[j];c[j]=t;}
printf("\n C file is:\n");
fp=fopen("C","w"); /*打开C文件,方式是-写*/
for(i=0;i<n;i++)
{ putc(c[i],fp); /*向文件中输入c[i]*/
putchar(c[i]); /*向屏幕上打印c[i]*/
}
fclose(fp); /*将C文件关闭*/
}
xierenm163
2010-04-15
知道答主
回答量:7
采纳率:0%
帮助的人:0
展开全部
#include "stdio.h" //文件头,用于输入或输出
main()
{ FILE *fp; //定义文件指针fp
int i,j,n,ni; //定义整形变量
char c[160],t,ch; //定义字符串,字符变量
if((fp=fopen("A","r"))==NULL) //fopen("A","r")用于打开文件,表示打开文件A,且是只读打开,然后fp指向A;如果fp为空,则输出file A cannot be opened并退出。
{printf("file A cannot be opened\n");
exit(0);}
printf("\n A contents are :\n");
for(i=0;(ch=fgetc(fp))!=EOF;i++) //遍历fp,
{c[i]=ch; //将fp指向的字符输入到c
putchar(c[i]); //每找到一个就输出到屏幕
}
fclose(fp); //关闭文件;
ni=i; //ni记录c中字符的个数和当前位置
if((fp=fopen("B","r"))==NULL)
{printf("file B cannot be opened\n"); //表示打开文件A,且是只读打开,然后fp指向A;如果fp为空,则输出file A cannot be opened并退出
exit(0);
printf("\n B contents are :\n");
for(i=0;(ch=fgetc(fp))!=EOF;i++) //遍历fp
{c[i]=ch; //将fp指向的字符输入到c
putchar(c[i]);
}
fclose(fp); //关闭文件
n=i; //n记录c中字符的个数
for(i=0;i<n;i++)
{ //
for(j=i+1;j<n;j++) //
if(c[i]>c[j]) //假如c[i]>c[j]
{t=c[i];c[i]=c[j];c[j]=t;} //就交换c[i],c[j]
}
printf("\n C file is:\n"); //屏幕输出C file is:并换行
fp=fopen("C","w"); //以可读写方式打开文件C,如果没有C就创建一个C文件
for(i=0;i<n;i++)
{ putc(c[i],fp); //用循环一个一个地把字符写入C
putchar(c[i]); //屏幕输出c[i]中的字符
}
fclose(fp); //关闭fp指向的文件
}

参考资料: c语言,谭浩强 编

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友19de9c005
2010-04-14 · 超过32用户采纳过TA的回答
知道答主
回答量:81
采纳率:25%
帮助的人:63.4万
展开全部
#include "stdio.h"
main()
{
FILE *fp;
int i,j,n,ni;
char c[160],t,ch;
/**打开文件A,如果打开失败,则输出错误提示并退出程序*/
if((fp=fopen("A","r"))==NULL)
{
printf("file A cannot be opened\n");
exit(0);
}

/**将A的内容复制到字符数组c中,并在屏幕上显示*/
printf("\n A contents are :\n");
for(i=0;(ch=fgetc(fp))!=EOF;i++)
{
c[i]=ch;
putchar(c[i]);
}

/**关闭文件A*/
fclose(fp);

//记录A中字符数
ni=i;

/**打开文件B,如果打开失败,则输出错误提示并退出程序*/
if((fp=fopen("B","r"))==NULL)
{
printf("file B cannot be opened\n");
exit(0);
}
/**将B的内容复制到字符数组c中,并在屏幕上显示*/
printf("\n B contents are :\n");

/**我觉得你这里的i=0有问题,这样会覆盖A的内容*/
for(i=0;(ch=fgetc(fp))!=EOF;i++)
{
c[i]=ch;
putchar(c[i]);
}
/**关闭文件B*/
fclose(fp);

//记录A中字符数
n=i;

/**将A和B的内容按字母顺序排列,使用冒泡排序法*/
for(i=0;i<n;i++)
for(j=i+1;j<n;j++)
if(c[i]>c[j])
{
t=c[i];c[i]=c[j];c[j]=t;}
printf("\n C file is:\n");
}
/**打开文件C,设置为写状态*/
fp=fopen("C","w");
/**将排序后的c数组写入文件C*/
for(i=0;i<n;i++)
{
putc(c[i],fp);
putchar(c[i]);
}
/**关闭文件C*/
fclose(fp);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友77319893c
2010-04-14 · 超过37用户采纳过TA的回答
知道答主
回答量:71
采纳率:0%
帮助的人:0
展开全部
#include "stdio.h"
main()
{ FILE *fp;
int i,j,n,ni;
char c[160],t,ch;

if((fp=fopen("A","r"))==NULL)//尝试打开文件A,失败则给出提示并退出
{printf("file A cannot be opened\n");//错误提示内容
exit(0);}//退出
printf("\n A contents are :\n");//如果打开文件,则输出文件内容
for(i=0;(ch=fgetc(fp))!=EOF;i++)//依次取出文件A中字符,(ch=fgetc(fp))!=EOF:没有到文件末尾,EOF:字符串尾标志
{c[i]=ch;
putchar(c[i]);//取出并放入c中
}
fclose(fp);//关闭文件
ni=i;
//与文件A一致
if((fp=fopen("B","r"))==NULL)
{printf("file B cannot be opened\n");
exit(0);
printf("\n B contents are :\n");
for(i=0;(ch=fgetc(fp))!=EOF;i++)
{c[i]=ch;
putchar(c[i]);
}
fclose(fp);
n=i;
//下面是对c(即A,B中的字符)进行排序,用冒泡排序实现
for(i=0;i<n;i++)
for(j=i+1;j<n;j++)
if(c[i]>c[j])
{t=c[i];c[i]=c[j];c[j]=t;}
printf("\n C file is:\n");//将排号序的文件输出
fp=fopen("C","w");//打开C文件(与A操作一致)
for(i=0;i<n;i++)
{ putc(c[i],fp);
putchar(c[i]);
}
fclose(fp);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式