c语言编程题方法2.docx

上传人:b****5 文档编号:8168679 上传时间:2023-01-29 格式:DOCX 页数:10 大小:454.11KB
下载 相关 举报
c语言编程题方法2.docx_第1页
第1页 / 共10页
c语言编程题方法2.docx_第2页
第2页 / 共10页
c语言编程题方法2.docx_第3页
第3页 / 共10页
c语言编程题方法2.docx_第4页
第4页 / 共10页
c语言编程题方法2.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

c语言编程题方法2.docx

《c语言编程题方法2.docx》由会员分享,可在线阅读,更多相关《c语言编程题方法2.docx(10页珍藏版)》请在冰豆网上搜索。

c语言编程题方法2.docx

c语言编程题方法2

第二类型:

结合in.dat文件修改out文件。

第一种类型:

直接按题目要求修改out.dat文件,如《全国计算机等级考试上机考试第三题(程序编写题)做题技巧基本步骤篇》,在这里就不再讲了。

这是最基本的类型,也是最简单的类型。

第二类型:

结合in.dat文件修改out文件。

如此题:

我们用《基本步骤篇》中讲解的方法,一直做到打开out.dat文件为止,如下图:

到这里,从目前我们掌握的技巧来看,没有办法做,因为,我们不知道out文件当中,每个字符串所对应的n的值,这就要求我们必须找到n的值。

方法是,用打开out文件的方法打开in.dat文件(与out.dat文件在同一个文件夹中)。

我们把in与out进行对比,大家就会发现,字符的部分完全一样,但是,in文件每一个字符串下面都有一个数字,这就是我们要找的n的值,我们再按题目要求对out文件进行修改。

修改完成之后,保存,关掉所有已经打开的文件,就可以了。

第三种类型:

无法按第一种类型做,也没有in文件,这时,需要去程序中找相关数据。

如此题(这个题目是比较难的,有很多注意事项,我用红色的进行标注):

同样,我们按《基本步骤篇》中的步骤,一直做到打开out文件为止。

大家看到out文件之后,会发现,这是一个没有任何规律的数字,我们把-858993460删了。

这时,大家首先想到的自然是去找in文件,但是,大家会发现,这个题目根本没有in文件。

根据题目的意思,这个题目要按我们这个方法做,我们必须要知道两组数据:

一是所有学生的成绩,二是指定的分数段。

我们来看程序部分:

#include

#defineN16

typedefstruct

{charnum[10];

ints;

}STREC;

intfun(STREC*a,STREC*b,intl,inth)

{

}

main()

{STRECs[N]={{"GA005",85},{"GA003",76},{"GA002",69},{"GA004",85},

{"GA001",96},{"GA007",72},{"GA008",64},{"GA006",87},

{"GA015",85},{"GA013",94},{"GA012",64},{"GA014",91},

{"GA011",90},{"GA017",64},{"GA018",64},{"GA016",72}};

STRECh[N],tt;FILE*out;

inti,j,n,low,heigh,t;

printf("Enter2integernumberlow&heigh:

");

scanf("%d%d",&low,&heigh);

if(heigh

n=fun(s,h,low,heigh);

printf("Thestudent'sdatabetween%d--%d:

\n",low,heigh);

for(i=0;i

printf("%s%4d\n",h[i].num,h[i].s);

printf("\n");

out=fopen("D:

\\k01\\24010001\\out.dat","w");

n=fun(s,h,80,98);

fprintf(out,"%d\n",n);

for(i=0;i

for(j=i+1;j

if(h[i].s>h[j].s){tt=h[i];h[i]=h[j];h[j]=tt;}

for(i=0;i

fprintf(out,"%4d\n",h[i].s);

fprintf(out,"\n");

fclose(out);

}

通过这个程序,再结合题目中的“N名学生的数据已在主函数中放入结构体数组s中”,我们不难发现,学生的成绩就是:

{"GA005",85},{"GA003",76},{"GA002",69},{"GA004",85},

{"GA001",96},{"GA007",72},{"GA008",64},{"GA006",87},

{"GA015",85},{"GA013",94},{"GA012",64},{"GA014",91},

{"GA011",90},{"GA017",64},{"GA018",64},{"GA016",72}

我们再继续看程序,其中n=fun(s,h,80,98);中的80,98就是我们需要的学生的分数段。

到目前为止,我们需要的两组数据:

所有学生的成绩,指定的分数段都已经找到了,我们就可以往out文件中写入内容了。

可是,我们写什么内容到out文件中呢?

到这里,就对我们C语言知识的一些基本功有一定的要求了。

在这个地方,大家要记住一定,out文件里的内容,按正常做题方法来看,肯定是由程序实现书写的,只是,我们这个办法,由我们自己代替了程序的工作,我们自己就必须要遵守程序的一些规则。

程序实现书写内容到文件当中,自然就是fprintf语句,所以,大家只要去程序中,只要看到fprintf语句,说明fprintf语句后面的输出内容都是要写入到out文件当中去的(我尽量讲得详细,但是,这里仍然不好理解,希望大家认真看,多看两次,能理解上面说的是什么)。

回到这个题:

第一个:

fprintf(out,"%d\n",n);这条语句是需要输出一个n的值到out文件当中,n=fun(s,h,80,98);即n就是80到98之间学生的人数,我们数一下,知道n的值为8,所以,我们首先在out文件当中书写一个8,由于有\n,所以,还需要回车一下。

第二个:

fprintf(out,"%4d\n",h[i].s);h[i].s就是学生的分数,80到98之间学生的分数,注意输出的时候4d%(具体什么意思,自己去看书),同时,根据前面的几条语句:

for(j=i+1;jh[j].s){tt=h[i];h[i]=h[j];h[j]=tt;}这实行了对学生分数从小到大的排序,所以,我们接下来按从小到大的顺序把80到98之间的学生分数按4d%的格式写入到out文件中,注意\n,说明每一个分数完了都要换行,包括最后一个。

第三个:

fprintf(out,"\n");这就是输出一个换行符,就是在out文件后面一行再按一次回车健。

接着往下看,再也没有fprintf语句,说明,已经完了,保存,得分。

第四种类型:

没有in文件,程序中也没有相关数据,那么他的数据就在程序的运行窗口。

比如此题:

同样,我们按《基本步骤篇》中的步骤,一直做到打开out文件为止。

同里,我们把:

后面所有的内容都删除掉(包括:

与-之间的两个空格)。

我们要做这个题,必须要知道所有的人年龄,我们发现,没有in文件,程序中也没有给出相关的数据,其实,我们再运行一下程序,得到黑色的运行窗口,大家就会发现所有人的年龄。

这时,我们只需要数0-9之间有多少,10-19之间有多少。

就行了。

我们来做一个,0-9之间,共有2人,于是,可能很多同学就直接这么写了:

0---9:

2。

这是不对的,同样,大家一定要看清楚输入格式!

程序中有这么一条语句:

fprintf(wf,"%4d---%4d:

%4d\n",i*10,i*10+9,d[i])大家注意看,:

的前面的后面都各有两个空格,按输入格式讲的知识,我们知道,空格必须要原样输出的,所以,:

与2之间,必须要先敲两个空格;然后,再看4d%,我们知道,还必须有三个空格,所以,:

与2之间,应该是5个空格!

第五种类型:

没有out文件。

由于我们没有写代码,所以,可能部分程序没办法正常运行,造成就没有out文件(out文件不是本来就有的,他是在运行的了程序之后才生成的),这种时候,就需要我们手动建立一个out文件,建立方法是:

1、如果说有in文件,复制一下in文件,然后在同一个文件夹下面粘贴,然后重命名为out就可以了。

如果说没有in文件,我们在考生文件夹的空白处,单击右健,选择新健,选择文本文档,然后对这个新健的文件重命名为out.dat(注意,必须修改文件的后缀名。

文件原名为新建文本文档.txt,我们必须全部删掉,然后写上out.dat。

如果说你看不到.txt,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1