二级C语言上机编程题技巧总结解析.docx
《二级C语言上机编程题技巧总结解析.docx》由会员分享,可在线阅读,更多相关《二级C语言上机编程题技巧总结解析.docx(36页珍藏版)》请在冰豆网上搜索。
二级C语言上机编程题技巧总结解析
二级C语言上机编程题技巧
一、方法总结
1、二级C语言上机编程题在二级上机考试中属于较难题型,因此很多同学都害怕通过不了。
综合往年的考试,结合考试大纲,每年考试的编程题都有一定的规律和方法,只要同学们认真熟练使用做题的方法,通过考试是没有问题的。
2、编程题做题方法一:
使用C语言特有的函数做题
(1)编程思想:
使用C语言函数库中的做题,做题时必须注意包含对应的头文件
(2)考题举例:
题库中的第37题,要求将数字字符串转化为对应整数,例如“-1234”转化后为-1234。
做题时需要添加头文件#include"stdlib.h",然后在fun函数中写入程序returnatol(p);其中atol(p)表示将p从字符串转化为长整型数。
最后编译,运行后输入测试数据后即可得到满分。
#include
#include"stdlib.h"
longfun(char*p)
{
returnatol(p);
}
(3)方法总结:
该类方法可以适用的题目较少,同学们了解即可。
3、编程题做题方法二:
使用规律做题
部分题目的答案是固定的,不会因为输入的数据改变而改变,因此这部分题目我们直接将答案记住即可,减少编程的麻烦。
题库中的70题,求cos(x)-x=0的一个实根。
做题时候在fun函数中输入return0.739085;后点击编译和运行即可,无需输入测试数据。
(补充:
如果需要输入测试数据,程序在输出的黑屏上面会提示,不过一般是英文提示,所以同学们要格外小心)
doublefun()
return0.739085;
(3)考题总结:
该题为每年必考的题目,因此同学们要将答案熟记,以便大家能顺利通过考试。
4、编程题做题方法三:
使用C语言编程
该种方法是考试中使用频率最多的方法,就是使用学习的C语言进行编程,对C语言的知识进行综合运用,因此难度较大,容易出错。
题库14题,求小于形参n同时能被3和7整除的所有自然数之和的平方根,并作为函数的返回。
做题时时一定要按照三个步骤来:
一要定义,二要满足题意,三要看有无返回。
doublefun(intn)
inti;
intsum=0;
for(i=0;i{if(i%3==0&&i%7==0){sum=sum+i;}}returnsqrt(sum);}(3)考题总结:该题属于编程方法中较简单的题型,做题时也可以使用简便方法,请参考考试总结中的叙述。5、编程题做题方法四:使用简便方法做题(1)编程思想:顾名思义这是一种简单而且高效的方法,可是要提醒大家里面的方法不是看一遍就能掌握的,同学们要仔细再仔细,多练习多思考。(2)考题举例:题库第8题,要求除了字符串前导的*号之外,将串中其他的*号全部删除。例如,字符串的内容:****A*BC*DEF*G*******,删除后为:****ABCDEFG。做题步骤如下:1)读题目,否则将不能正确做题。该题目的要求很清晰,就是删除*号,但是不能删除前导*号。这里大家要知道什么是前导*号?其实它是指字符串中第一个字母以前的全部*号,该题中有4个前导*号。2)开始做题,找到NONO函数,了解做题的来龙去脉。以该题为例,以下是NONO函数的全部内容:NONO(){/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*in,*out;inti;chars[81];in=fopen("D:\\k01\\24010001\\in.dat","r");out=fopen("D:\\k01\\24010001\\out.dat","w");for(i=0;i<10;i++){fscanf(in,"%s",s);fun(s);fprintf(out,"%s\n",s);}fclose(in);fclose(out);}分析NONO函数:分析过程有点多,第一次就要将其看懂,后面就可以很轻松!1FILE*in,*out;表示定义了两个文件类型的指针in和out,用来指向某个打开的某个文件。2inti;chars[81];定义了一个整型的变量i,一般用来表示循环的递增;定义了一个字符类型的一维数组s,这里数组s没有存储任何的数据,因此一般是闲置用来后面题目中存放数据使用的。3in=fopen("D:\\k01\\24010001\\in.dat","r");in是上面定义的文件指针,用来指向一个文件in.dat。首先大家要知道open在英语里面表示是“打开”,file在英语里面是“文件”,因此形象记忆fopen就是打开文件,打开什么文件?看后面的存储目录D:\\k01\\24010001\\in.dat,就是这个路径下面的文件in.dat,以”r”只读的形式打开,记住不能就行对in.dat的改动。4out=fopen("D:\\k01\\24010001\\out.dat","w");out文件指针用来指向out.dat,打开的方式以”w”写的方式写数据,换句话说:in.dat是考试时候的数据源文件,而out.dat是用来存放答案的文件,所以要确保out.dat中的数据完全正确。5for(i=0;i<10;i++)循环语句,该循环将执行10次6fscanf(in,"%s",s);从in文件所指向的数据源文件in.dat中读取一行字符串数据给一维数组s,(顺便说下为什么知道是读取一行字符串数据,是因为%s格式是用来控制字符串的,因此不难判断),通过循环语句,将读取10行数据进行处理,该题目总共40分,因此每行就是4分。7fun(s);调用函数fun,传入实参s,我们从题目得知fun函数要完成的事情是删除字符串中的*号,但是不删除前导*号,每次传入的数据都会被执行。8fprintf(out,"%s\n",s);printf在第二章学习的时候知道是输出的意思,fprintf的意思是将数据输出到out指针指向的文件中,以“%s\n”格式方式输出,输出的数据是s,同学们一定要注意,此时的s是修改过的s,即是删除*号后的字符串。9fclose(in);关闭文件指针in10fclose(out);关闭文件指针out,文件打开后要将其关闭。 3)在VC6.0中fun函数位置输入一些简单的语句,例如:输入定义一个test变量,给其赋值,最好多敲几个回车进去,如果数据有返回值,必须输入返回值。然后点击编译,运行后将出现这个界面:要求输入一个字符串,可以任意的从键盘中输入字符串,例如输入:12345回车,得到:程序中出项Pressanykeytocontinue则说明程序已经运行,将在考试文件夹下面生成out.dat文件,否则在考生文件夹下面将不会生成out.dat文件,就没有办法继续做题。4)打开in.dat1关闭第三步程序运行的界面,打开int.dat文件。2在VC++6.0界面中“单击File”,在弹出的菜单中选取“Open”,打开考生文件夹D:\\k01\\24010001下面的in.dat文件。截图如下:3查找范围里面选中D盘4找到k01下面的24010001,发现没有in.dat文件,单击文件类型,选择“所有文件(*.*)”即可5选中in.dat,然后单击打开,出现下图所示界面为正确打开分析in.dat中的数据发现每行数据都是由*号和字母组成的,总共有10行。5)打开out.dat1和打开in.dat同样的方法打开out.dat2将out.dat里面的数据清空,即将out中所有东西都删除,让out没有任何的代码3将in.dat中第一行数据****A*BC*DEF*G********复制到out.dat中4将out.dat第一行数据的中间*和尾部*全部删除,然后敲入回车5以此类推将in.dat中剩余9行按照上面的步骤复制到out.dat中进行修改,两行中间没有空行6)保存交卷1单击左上方的保存,保存结果2保存后关闭vc++6.0方可交卷二、考题总结第一种类型:字符串操作一,字符串删除*号1、考题库中考题对应编号:8、9、10、19、45、54、57、61、65、71、77、90、92、93、100、56、60、72、75、85、862、举例:以第10题为例讲解1)分析题目:使字符串的前导*号不得多于n个,若多于n个,则删除多余的*好,若少于或等于n个,则什么也不做,字符串中间和尾部*号不得删除。2)分析NONO函数:NONO(){/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*in,*out;inti,n;chars[81];in=fopen("D:\\k01\\24010001\\in.dat","r");out=fopen("D:\\k01\\24010001\\out.dat","w");for(i=0;i<10;i++){fscanf(in,"%s",s);fscanf(in,"%d",&n);fun(s,n);fprintf(out,"%s\n",s);}fclose(in);fclose(out);}NONON函数具体分析方法前面(方法四)已经详细讲解过了,现将不同的点进行分析。fscanf(in,"%s",s);表示从in.dat中读取一个字符串放到数组s中fscanf(in,"%d",&n);表示从in.dat中读取一个整型数据给变量n,从题目中我们不难发现s和n之间的关系,就是如果s字符串中的前导多于n个删除,则删除多余的*号,否则什么也不做。fprintf(out,"%s\n",s);只将修改后的字符串输出3)在fun函数中输入测试数据,该题函数返回void则无需return语句#includevoidfun(char*a,intn){inttest;test=5;}4)编译运行,输入一个字符串后还需输入一个n5)打开in.dat分析in.dat中的数据刚好是一行字符串一行整数,总共有20行,通过fscanf(in,"%s",s);fscanf(in,"%d",&n);两个函数每次输入两个数据分别给s和n,例如第一行中输入的时候s字符串就该为:*******A*BC*DEF*G****,n的值就为:4,s字符串中的前导*号为个,多于了n的值,因此需要将多于的3个*号删除。6)打开out.dat打开out.dat并清空数据,因为fprintf(out,"%s\n",s);只将修改后的字符串输出,将第一个字符串删除3个*号填写到out.dat中,不输出in.dat中的4以此类推将数据进行输入:7)保存交卷第二种类型:字符串操作二,移动字符串1、考题库中对应试题编号:1、42、83、872、试题举例:以第1题为例(1)分析题目:把1到第m个字符平移到字符串的最后(2)分析NONO函数:注意fscanf(rf,"%d%s",&m,a);表示从rf指向的文件in.dat中读取两个数据,一个整型数据给变量m,另外一个给数组a。根据题目我们不难判断,程序就完成:将数组a中的字符串从第1个到第m个移动到最后。(3)在fun函数中输入测试数据,,该题函数返回void则无需return语句,在执行窗口中需要输入m的值。(4)编译,执行,输入测试数据(5)打开in.dat分析:in.dat结合NONO函数中的fscanf函数可以得到,函数将整数3给了m,将字符串:ABCDEFGHIJK给了数组a(6)打开out.dat1将in.dat中第一行中的字符的前3个字母移动到最后2依次类推将得到正确的结果。(7)保存交卷第三种类型:数学问题一,将两个数字按照要求合并成一个数字1、对应题库中的题目编号:13、38、44、46、63、69、78、88、94、95、962、试题举例:以13题为例(1)分析题目:将a中十位和个位数依次放在变量c的百位和个位上,b中的十位和个位依次放在变量c的十位和千位上(2)分析NONO函数:(3)在fun函数中输入测试数据,编译,执行,该题函数返回void则无需return语句,在执行窗口中需要输入12空格45回车后,出现下图结果。(4)打开in.dat,fscanf(rf,"%d,%d",&a,&b);第一行中将45给了变量a,将12给了变量b(5)打开out.dat。fprintf(wf,"a=%d,b=%d,c=%ld\n",a,b,c);输出格式一定要注意,如下图所示,否则不得分。(6)保存交卷第四种类型:数学问题二,二维数组相关类型题目1、题库中对应题目编号:15、17、24、26、31、32、40、41、43、50、812、考题举例:以15题为例(1)题目分析:将M行N列的二维数组中的数据,按行的顺序依次放到二维数组中(2)NONO函数:(3)在fun函数中输入测试数据,编译,执行,该题函数返回void则无需return语句,出现下图结果。(4)打开in.dat。fscanf(rf,"%d%d",&mm,&nn);从in.dat中第一行输入两个整型数,第一个3给变量mm表示数组中的行,第二个4给变量nn表示数组中的列。for(i=0;ifor(j=0;j例如第一行mm为3,nn为4,则应该有一个3行4列的二维数组。(5)打开out.dat。根据for(i=0;ifor(i=0;i以行的形式进行输出,结果如下:第一个33前面要加一个空格,因为%3d要求输出的宽度为3,但是33这个数字只占了2个的宽度,因此必须在33前面加一个空格,依次类推,第二33至55都要在前面加一个空格。输完数据后要记得执行fprintf(wf,"\n");输出一个换行符。将题目中其它的二维数组修改后的结果如下:(7)保存交卷第五种类型:找出数组中的最大值或者最大值所在的下标1.题库中对应题目编号:18、29、36、66、83、552.考题举例:以18题为例(1)题目要求:求出数组中最大数的下标并存放在k所指的存储单元中(2)NONO函数:(3)在fun函数中输入测试数据,编译,执行,该题函数返回int则需return语句,另外题目中严格要求k返回的是最大值下标,因此必须给*k初始值0,出现下图结果。(4)打开in.dat文件。NONNO函数中:说明的信息是将10个据通过fscanf函数读入到数组a中,从10个数据中找到最大值及其下标分析:in.dat可以发现,里面的数据都是10列,总共有10行,因此只要将每一行的最大值及其下标找出来存放在out.dat中即可。(5)打开out.dat并清空文件里面的数据该语句将最大值下标k及其最大值以%d,%d的形式输出,结合in.dat中的第一行数据不难发现最大值是121,它所在的下标是1(补充:下标是从0开始的),因此将1,121输入到out.dat中的第一行,记得在121后面加上回车进行换行。(6)保存交卷第六种类型:字符串操作三。包括统计单词、字符的个数,比较字符串,转换字符串1、题库中对应题目编号:26,30,37,40,53,56,59,60,74(比较特殊,多练习)2、考题举例:以53题为例(1)题目要求:求出ss所指字符串中指定字符的个数,例如字符串:123412132,输入的字符为:1,则输出为:3。该类型的题目一定要知道哪个字符需要计算个数。(2)NONO函数:(3)在fun函数中输入测试数据,编译,执行,该题函数返回int则需return语句,出现下图结果。(4)打开in.dat文件。NONO函数中的两个fscanf分别从in.dat中读取两行数据给数组a和数组b,以第一行和第二行数据为例,数组a存储字符串为:hsfgjkdgfdgfdgkfdjgkldf,数组b存储字符为:h,做题时需要从字符串中找出字符h的个数,为1(5)打开out.dat文件,并清空里面的数据首先程序先将*b的值赋值给变量ch,通过in.dat中分析可以得到,*b存放的就是指定的字符,以第一行为例就应该为h。数据在写入out.dat时,必须以%c=%d\n的形式输出,其中%c对应ch,即为h,%d对应的是函数的返回值,即为h在字符串中的个数为1。输出的结果为:其它行依次类推(6)保存交卷第七种类型:字符串操作四,删除指定字符1、题库中对应题目编号:4、12、25、28、35、39、52、55、72、75、85、862、考题举例:以第4题为例(1)题目要求:将ss所指字符串中所有下标为奇数位置上的字母转为大写,若该位置不是字母,则不转换。该类型的题目不难但是必修认真,有耐心!(2)NONO函数:该题中的NONO函数比较难理解,同学们只需将红色方框里面的语句读懂就行,具体的将在第四步中介绍。(3)在fun函数中输入测试数据,编译,执行,该题函数返回void则无需return语句,出现下图结果。(4)打开in.dat文件fgets(tt,50,rf)表示从in.dat中读入一个字符串给tt数组,如果不了解也不要紧,对做题没有太大的影响。做题时候首先要知道字符的字符的小标是否是奇数,我们可以通过标注数字删除不符合的字符。以第一行为例,将奇数位置的字符改动就行,记住空格占一个字符,在做其它题目时候一定要小心dsf fds fdslj fdsl fds ljkfsd012345678910111213141516171819202122232425262728(5)打开out.dat文件,清空数据。fprintf(wf,"%s\n",tt);将tt数组中的字符串修改后进行输出,即将下标是奇数位置的小写字符改为大写字母。(6)保存交卷 第八种类型:结构体1、题库中对应题目编号:2、3、16、23、33、51、58、64、68、82、97、98、992、考题举例:以第二题为例(备注第二题是该类型中最典型的例题)(1)题目要求:N名学生的数据已经通过主函数存放在s数组中,函数功能是:把指定分数范围内的学生数据放在b所指的数组中,分数范围内的学生人数由函数返回。(注释:该题不仅仅考查题目中要求的内容,在程序段中有特殊的语句需要执行,所以需要特别注意!)(2)main函数:该题没有NONO函数,因此以主函数为准。说明main函数:1)在main函数之前定义了一个结构体STREC,里面有两个成员,分别表示学号和成绩,该题中一定要认清操作的是学号还是成绩,特别是输出的时候,该类型的题目都拥有相同的考点。2)在主函数中STRECs[N];定义了一个结构体类型的数组,长度为N,并且为其赋值16个数据。STRECh[N],tt;FILE*out;定义了另一个结构体数组h,和结构体变量tt,文件指针。在下图中已经用红色框住的部分需要明白。第一红框到第二个红框之间的部分可以不去理解,对做题没有影响。3)n=fun(s,h,80,98);最为关键,结合题目可以知道该句话的含义是:从结构体数组s中找到80到98之间的所有数据放到结构体数组中。帅选的数据为:总共8个,题目中说将分数范围内的人数返回,这样可以得知n的值为84)fprintf(out,"%d\n",n);将n以%d的格式输出到out.dat中5)为冒泡法排序,旨在将h中的数据按照分数进行从小到大排序,如果不了解排序过程请参考“注意事项”,结构体数组h中的数据进行从小到大的操作后变为:6)表示将排序后h中的数据以4d%\n的形式输出到out.dat中,并且输出的是h[i].s成绩数据项。(3)在fun函数中输入测试数据,编译,执行,该题函数返回int则需return语句,出现下图结果。执行结果中必须出现“Pressanykeytocontinue”字样才会生成out.dat文件,都则将不生成该文件。(4)打开out.dat(因为没有in.dat,所以无须打开它),清空里面的数据。1)首先输出n的值,以%d\n的形式进行输出:2)其次将h排序后的第一个数据输出,以%4d\n的形式输出,第一个数据位85,85的宽度为2,但是输出中要求为4,所以必须在85前面加上2个空格。3)将剩余数据全部输出:(5)保存交卷第九种类型:链表类型1、题库中对应题目编号:22、80、842、考题举例:以22为例进行讲解(1)题目要求:N名学生的成绩已经在主函数中放在一个带头结点的链表中,h指向链表的头结点,函数功能是:找出学生的最高分,由函数值返回。(注释:返回值是最高分,不是数据整体)(2)NONO函数:主要观察红框部分,具体解释将在下面介绍。(3)在fun函数中输入测试数据,编译,执
if(i%3==0&&i%7==0)
sum=sum+i;
returnsqrt(sum);
该题属于编程方法中较简单的题型,做题时也可以使用简便方法,请参考考试总结中的叙述。
5、编程题做题方法四:
使用简便方法做题
顾名思义这是一种简单而且高效的方法,可是要提醒大家里面的方法不是看一遍就能掌握的,同学们要仔细再仔细,多练习多思考。
题库第8题,要求除了字符串前导的*号之外,将串中其他的*号全部删除。
例如,字符串的内容:
****A*BC*DEF*G*******,删除后为:
****ABCDEFG。
做题步骤如下:
1)读题目,否则将不能正确做题。
该题目的要求很清晰,就是删除*号,但是不能删除前导*号。
这里大家要知道什么是前导*号?
其实它是指字符串中第一个字母以前的全部*号,该题中有4个前导*号。
2)开始做题,找到NONO函数,了解做题的来龙去脉。
以该题为例,以下是NONO函数的全部内容:
NONO()
{/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。
*/
FILE*in,*out;
inti;chars[81];
in=fopen("D:
\\k01\\24010001\\in.dat","r");
out=fopen("D:
\\k01\\24010001\\out.dat","w");
for(i=0;i<10;i++)
fscanf(in,"%s",s);
fun(s);
fprintf(out,"%s\n",s);
fclose(in);
fclose(out);
分析NONO函数:
分析过程有点多,第一次就要将其看懂,后面就可以很轻松!
1FILE*in,*out;表示定义了两个文件类型的指针in和out,用来指向某个打开的某个文件。
2inti;chars[81];定义了一个整型的变量i,一般用来表示循环的递增;定义了一个字符类型的一维数组s,这里数组s没有存储任何的数据,因此一般是闲置用来后面题目中存放数据使用的。
3in=fopen("D:
\\k01\\24010001\\in.dat","r");in是上面定义的文件指针,用来指向一个文件in.dat。
首先大家要知道open在英语里面表示是“打开”,file在英语里面是“文件”,因此形象记忆fopen就是打开文件,打开什么文件?
看后面的存储目录D:
\\k01\\24010001\\in.dat,就是这个路径下面的文件in.dat,以”r”只读的形式打开,记住不能就行对in.dat的改动。
4out=fopen("D:
\\k01\\24010001\\out.dat","w");out文件指针用来指向out.dat,打开的方式以”w”写的方式写数据,换句话说:
in.dat是考试时候的数据源文件,而out.dat是用来存放答案的文件,所以要确保out.dat中的数据完全正确。
5for(i=0;i<10;i++)循环语句,该循环将执行10次
6fscanf(in,"%s",s);从in文件所指向的数据源文件in.dat中读取一行字符串数据给一维数组s,(顺便说下为什么知道是读取一行字符串数据,是因为%s格式是用来控制字符串的,因此不难判断),通过循环语句,将读取10行数据进行处理,该题目总共40分,因此每行就是4分。
7fun(s);调用函数fun,传入实参s,我们从题目得知fun函数要完成的事情是删除字符串中的*号,但是不删除前导*号,每次传入的数据都会被执行。
8fprintf(out,"%s\n",s);printf在第二章学习的时候知道是输出的意思,fprintf的意思是将数据输出到out指针指向的文件中,以“%s\n”格式方式输出,输出的数据是s,同学们一定要注意,此时的s是修改过的s,即是删除*号后的字符串。
9fclose(in);关闭文件指针in
10fclose(out);关闭文件指针out,文件打开后要将其关闭。
3)在VC6.0中fun函数位置输入一些简单的语句,例如:
输入定义一个test变量,给其赋值,最好多敲几个回车进去,如果数据有返回值,必须输入返回值。
然后点击编译,运行后将出现这个界面:
要求输入一个字符串,可以任意的从键盘中输入字符串,例如输入:
12345回车,得到:
程序中出项Pressanykeytocontinue则说明程序已经运行,将在考试文件夹下面生成out.dat文件,否则在考生文件夹下面将不会生成out.dat文件,就没有办法继续做题。
4)打开in.dat
1关闭第三步程序运行的界面,打开int.dat文件。
2在VC++6.0界面中“单击File”,在弹出的菜单中选取“Open”,打开考生文件夹D:
\\k01\\24010001下面的in.dat文件。
截图如下:
3查找范围里面选中D盘
4找到k01下面的24010001,发现没有in.dat文件,单击文件类型,选择“所有文件(*.*)”即可
5选中in.dat,然后单击打开,出现下图所示界面为正确打开
分析in.dat中的数据发现每行数据都是由*号和字母组成的,总共有10行。
5)打开out.dat
1和打开in.dat同样的方法打开out.dat
2将out.dat里面的数据清空,即将out中所有东西都删除,让out没有任何的代码
3将in.dat中第一行数据****A*BC*DEF*G********复制到out.dat中
4将out.dat第一行数据的中间*和尾部*全部删除,然后敲入回车
5以此类推将in.dat中剩余9行按照上面的步骤复制到out.dat中进行修改,两行中间没有空行
6)保存交卷
1单击左上方的保存,保存结果
2保存后关闭vc++6.0方可交卷
二、考题总结
第一种类型:
字符串操作一,字符串删除*号
1、考题库中考题对应编号:
8、9、10、19、45、54、57、61、65、71、77、90、92、93、100、56、60、72、75、85、86
2、举例:
以第10题为例讲解
1)分析题目:
使字符串的前导*号不得多于n个,若多于n个,则删除多余的*好,若少于或等于n个,则什么也不做,字符串中间和尾部*号不得删除。
2)分析NONO函数:
inti,n;chars[81];
fscanf(in,"%d",&n);
fun(s,n);
NONON函数具体分析方法前面(方法四)已经详细讲解过了,现将不同的点进行分析。
fscanf(in,"%s",s);表示从in.dat中读取一个字符串放到数组s中
fscanf(in,"%d",&n);表示从in.dat中读取一个整型数据给变量n,从题目中我们不难发现s和n之间的关系,就是如果s字符串中的前导多于n个删除,则删除多余的*号,否则什么也不做。
fprintf(out,"%s\n",s);只将修改后的字符串输出
3)在fun函数中输入测试数据,该题函数返回void则无需return语句
voidfun(char*a,intn)
inttest;
test=5;
4)编译运行,输入一个字符串后还需输入一个n
5)打开in.dat
分析in.dat中的数据刚好是一行字符串一行整数,总共有20行,通过
fscanf(in,"%d",&n);两个函数每次输入两个数据分别给s和n,例如第一行中输入的时候s字符串就该为:
*******A*BC*DEF*G****,n的值就为:
4,s字符串中的前导*号为个,多于了n的值,因此需要将多于的3个*号删除。
6)打开out.dat
打开out.dat并清空数据,因为fprintf(out,"%s\n",s);只将修改后的字符串输出,将第一个字符串删除3个*号填写到out.dat中,不输出in.dat中的4
以此类推将数据进行输入:
7)保存交卷
第二种类型:
字符串操作二,移动字符串
1、考题库中对应试题编号:
1、42、83、87
2、试题举例:
以第1题为例
(1)分析题目:
把1到第m个字符平移到字符串的最后
(2)分析NONO函数:
注意fscanf(rf,"%d%s",&m,a);表示从rf指向的文件in.dat中读取两个数据,一个整型数据给变量m,另外一个给数组a。
根据题目我们不难判断,程序就完成:
将数组a中的字符串从第1个到第m个移动到最后。
(3)在fun函数中输入测试数据,,该题函数返回void则无需return语句,在执行窗口中需要输入m的值。
(4)编译,执行,输入测试数据
(5)打开in.dat
分析:
in.dat结合NONO函数中的fscanf函数可以得到,函数将整数3给了m,将字符串:
ABCDEFGHIJK给了数组a
(6)打开out.dat
1将in.dat中第一行中的字符的前3个字母移动到最后
2依次类推将得到正确的结果。
(7)保存交卷
第三种类型:
数学问题一,将两个数字按照要求合并成一个数字
1、对应题库中的题目编号:
13、38、44、46、63、69、78、88、94、95、96
以13题为例
将a中十位和个位数依次放在变量c的百位和个位上,b中的十位和个位依次放在变量c的十位和千位上
(3)在fun函数中输入测试数据,编译,执行,该题函数返回void则无需return语句,在执行窗口中需要输入12空格45回车后,出现下图结果。
(4)打开in.dat,fscanf(rf,"%d,%d",&a,&b);第一行中将45给了变量a,将12给了变量b
(5)打开out.dat。
fprintf(wf,"a=%d,b=%d,c=%ld\n",a,b,c);输出格式一定要注意,如下图所示,否则不得分。
(6)保存交卷
第四种类型:
数学问题二,二维数组相关类型题目
1、题库中对应题目编号:
15、17、24、26、31、32、40、41、43、50、81
2、考题举例:
以15题为例
(1)题目分析:
将M行N列的二维数组中的数据,按行的顺序依次放到二维数组中
(2)NONO函数:
(3)在fun函数中输入测试数据,编译,执行,该题函数返回void则无需return语句,出现下图结果。
(4)打开in.dat。
fscanf(rf,"%d%d",&mm,&nn);从in.dat中第一行输入两个整型数,第一个3给变量mm表示数组中的行,第二个4给变量nn表示数组中的列。
for(i=0;ifor(j=0;j例如第一行mm为3,nn为4,则应该有一个3行4列的二维数组。(5)打开out.dat。根据for(i=0;ifor(i=0;i以行的形式进行输出,结果如下:第一个33前面要加一个空格,因为%3d要求输出的宽度为3,但是33这个数字只占了2个的宽度,因此必须在33前面加一个空格,依次类推,第二33至55都要在前面加一个空格。输完数据后要记得执行fprintf(wf,"\n");输出一个换行符。将题目中其它的二维数组修改后的结果如下:(7)保存交卷第五种类型:找出数组中的最大值或者最大值所在的下标1.题库中对应题目编号:18、29、36、66、83、552.考题举例:以18题为例(1)题目要求:求出数组中最大数的下标并存放在k所指的存储单元中(2)NONO函数:(3)在fun函数中输入测试数据,编译,执行,该题函数返回int则需return语句,另外题目中严格要求k返回的是最大值下标,因此必须给*k初始值0,出现下图结果。(4)打开in.dat文件。NONNO函数中:说明的信息是将10个据通过fscanf函数读入到数组a中,从10个数据中找到最大值及其下标分析:in.dat可以发现,里面的数据都是10列,总共有10行,因此只要将每一行的最大值及其下标找出来存放在out.dat中即可。(5)打开out.dat并清空文件里面的数据该语句将最大值下标k及其最大值以%d,%d的形式输出,结合in.dat中的第一行数据不难发现最大值是121,它所在的下标是1(补充:下标是从0开始的),因此将1,121输入到out.dat中的第一行,记得在121后面加上回车进行换行。(6)保存交卷第六种类型:字符串操作三。包括统计单词、字符的个数,比较字符串,转换字符串1、题库中对应题目编号:26,30,37,40,53,56,59,60,74(比较特殊,多练习)2、考题举例:以53题为例(1)题目要求:求出ss所指字符串中指定字符的个数,例如字符串:123412132,输入的字符为:1,则输出为:3。该类型的题目一定要知道哪个字符需要计算个数。(2)NONO函数:(3)在fun函数中输入测试数据,编译,执行,该题函数返回int则需return语句,出现下图结果。(4)打开in.dat文件。NONO函数中的两个fscanf分别从in.dat中读取两行数据给数组a和数组b,以第一行和第二行数据为例,数组a存储字符串为:hsfgjkdgfdgfdgkfdjgkldf,数组b存储字符为:h,做题时需要从字符串中找出字符h的个数,为1(5)打开out.dat文件,并清空里面的数据首先程序先将*b的值赋值给变量ch,通过in.dat中分析可以得到,*b存放的就是指定的字符,以第一行为例就应该为h。数据在写入out.dat时,必须以%c=%d\n的形式输出,其中%c对应ch,即为h,%d对应的是函数的返回值,即为h在字符串中的个数为1。输出的结果为:其它行依次类推(6)保存交卷第七种类型:字符串操作四,删除指定字符1、题库中对应题目编号:4、12、25、28、35、39、52、55、72、75、85、862、考题举例:以第4题为例(1)题目要求:将ss所指字符串中所有下标为奇数位置上的字母转为大写,若该位置不是字母,则不转换。该类型的题目不难但是必修认真,有耐心!(2)NONO函数:该题中的NONO函数比较难理解,同学们只需将红色方框里面的语句读懂就行,具体的将在第四步中介绍。(3)在fun函数中输入测试数据,编译,执行,该题函数返回void则无需return语句,出现下图结果。(4)打开in.dat文件fgets(tt,50,rf)表示从in.dat中读入一个字符串给tt数组,如果不了解也不要紧,对做题没有太大的影响。做题时候首先要知道字符的字符的小标是否是奇数,我们可以通过标注数字删除不符合的字符。以第一行为例,将奇数位置的字符改动就行,记住空格占一个字符,在做其它题目时候一定要小心dsf fds fdslj fdsl fds ljkfsd012345678910111213141516171819202122232425262728(5)打开out.dat文件,清空数据。fprintf(wf,"%s\n",tt);将tt数组中的字符串修改后进行输出,即将下标是奇数位置的小写字符改为大写字母。(6)保存交卷 第八种类型:结构体1、题库中对应题目编号:2、3、16、23、33、51、58、64、68、82、97、98、992、考题举例:以第二题为例(备注第二题是该类型中最典型的例题)(1)题目要求:N名学生的数据已经通过主函数存放在s数组中,函数功能是:把指定分数范围内的学生数据放在b所指的数组中,分数范围内的学生人数由函数返回。(注释:该题不仅仅考查题目中要求的内容,在程序段中有特殊的语句需要执行,所以需要特别注意!)(2)main函数:该题没有NONO函数,因此以主函数为准。说明main函数:1)在main函数之前定义了一个结构体STREC,里面有两个成员,分别表示学号和成绩,该题中一定要认清操作的是学号还是成绩,特别是输出的时候,该类型的题目都拥有相同的考点。2)在主函数中STRECs[N];定义了一个结构体类型的数组,长度为N,并且为其赋值16个数据。STRECh[N],tt;FILE*out;定义了另一个结构体数组h,和结构体变量tt,文件指针。在下图中已经用红色框住的部分需要明白。第一红框到第二个红框之间的部分可以不去理解,对做题没有影响。3)n=fun(s,h,80,98);最为关键,结合题目可以知道该句话的含义是:从结构体数组s中找到80到98之间的所有数据放到结构体数组中。帅选的数据为:总共8个,题目中说将分数范围内的人数返回,这样可以得知n的值为84)fprintf(out,"%d\n",n);将n以%d的格式输出到out.dat中5)为冒泡法排序,旨在将h中的数据按照分数进行从小到大排序,如果不了解排序过程请参考“注意事项”,结构体数组h中的数据进行从小到大的操作后变为:6)表示将排序后h中的数据以4d%\n的形式输出到out.dat中,并且输出的是h[i].s成绩数据项。(3)在fun函数中输入测试数据,编译,执行,该题函数返回int则需return语句,出现下图结果。执行结果中必须出现“Pressanykeytocontinue”字样才会生成out.dat文件,都则将不生成该文件。(4)打开out.dat(因为没有in.dat,所以无须打开它),清空里面的数据。1)首先输出n的值,以%d\n的形式进行输出:2)其次将h排序后的第一个数据输出,以%4d\n的形式输出,第一个数据位85,85的宽度为2,但是输出中要求为4,所以必须在85前面加上2个空格。3)将剩余数据全部输出:(5)保存交卷第九种类型:链表类型1、题库中对应题目编号:22、80、842、考题举例:以22为例进行讲解(1)题目要求:N名学生的成绩已经在主函数中放在一个带头结点的链表中,h指向链表的头结点,函数功能是:找出学生的最高分,由函数值返回。(注释:返回值是最高分,不是数据整体)(2)NONO函数:主要观察红框部分,具体解释将在下面介绍。(3)在fun函数中输入测试数据,编译,执
for(j=0;j例如第一行mm为3,nn为4,则应该有一个3行4列的二维数组。(5)打开out.dat。根据for(i=0;ifor(i=0;i以行的形式进行输出,结果如下:第一个33前面要加一个空格,因为%3d要求输出的宽度为3,但是33这个数字只占了2个的宽度,因此必须在33前面加一个空格,依次类推,第二33至55都要在前面加一个空格。输完数据后要记得执行fprintf(wf,"\n");输出一个换行符。将题目中其它的二维数组修改后的结果如下:(7)保存交卷第五种类型:找出数组中的最大值或者最大值所在的下标1.题库中对应题目编号:18、29、36、66、83、552.考题举例:以18题为例(1)题目要求:求出数组中最大数的下标并存放在k所指的存储单元中(2)NONO函数:(3)在fun函数中输入测试数据,编译,执行,该题函数返回int则需return语句,另外题目中严格要求k返回的是最大值下标,因此必须给*k初始值0,出现下图结果。(4)打开in.dat文件。NONNO函数中:说明的信息是将10个据通过fscanf函数读入到数组a中,从10个数据中找到最大值及其下标分析:in.dat可以发现,里面的数据都是10列,总共有10行,因此只要将每一行的最大值及其下标找出来存放在out.dat中即可。(5)打开out.dat并清空文件里面的数据该语句将最大值下标k及其最大值以%d,%d的形式输出,结合in.dat中的第一行数据不难发现最大值是121,它所在的下标是1(补充:下标是从0开始的),因此将1,121输入到out.dat中的第一行,记得在121后面加上回车进行换行。(6)保存交卷第六种类型:字符串操作三。包括统计单词、字符的个数,比较字符串,转换字符串1、题库中对应题目编号:26,30,37,40,53,56,59,60,74(比较特殊,多练习)2、考题举例:以53题为例(1)题目要求:求出ss所指字符串中指定字符的个数,例如字符串:123412132,输入的字符为:1,则输出为:3。该类型的题目一定要知道哪个字符需要计算个数。(2)NONO函数:(3)在fun函数中输入测试数据,编译,执行,该题函数返回int则需return语句,出现下图结果。(4)打开in.dat文件。NONO函数中的两个fscanf分别从in.dat中读取两行数据给数组a和数组b,以第一行和第二行数据为例,数组a存储字符串为:hsfgjkdgfdgfdgkfdjgkldf,数组b存储字符为:h,做题时需要从字符串中找出字符h的个数,为1(5)打开out.dat文件,并清空里面的数据首先程序先将*b的值赋值给变量ch,通过in.dat中分析可以得到,*b存放的就是指定的字符,以第一行为例就应该为h。数据在写入out.dat时,必须以%c=%d\n的形式输出,其中%c对应ch,即为h,%d对应的是函数的返回值,即为h在字符串中的个数为1。输出的结果为:其它行依次类推(6)保存交卷第七种类型:字符串操作四,删除指定字符1、题库中对应题目编号:4、12、25、28、35、39、52、55、72、75、85、862、考题举例:以第4题为例(1)题目要求:将ss所指字符串中所有下标为奇数位置上的字母转为大写,若该位置不是字母,则不转换。该类型的题目不难但是必修认真,有耐心!(2)NONO函数:该题中的NONO函数比较难理解,同学们只需将红色方框里面的语句读懂就行,具体的将在第四步中介绍。(3)在fun函数中输入测试数据,编译,执行,该题函数返回void则无需return语句,出现下图结果。(4)打开in.dat文件fgets(tt,50,rf)表示从in.dat中读入一个字符串给tt数组,如果不了解也不要紧,对做题没有太大的影响。做题时候首先要知道字符的字符的小标是否是奇数,我们可以通过标注数字删除不符合的字符。以第一行为例,将奇数位置的字符改动就行,记住空格占一个字符,在做其它题目时候一定要小心dsf fds fdslj fdsl fds ljkfsd012345678910111213141516171819202122232425262728(5)打开out.dat文件,清空数据。fprintf(wf,"%s\n",tt);将tt数组中的字符串修改后进行输出,即将下标是奇数位置的小写字符改为大写字母。(6)保存交卷 第八种类型:结构体1、题库中对应题目编号:2、3、16、23、33、51、58、64、68、82、97、98、992、考题举例:以第二题为例(备注第二题是该类型中最典型的例题)(1)题目要求:N名学生的数据已经通过主函数存放在s数组中,函数功能是:把指定分数范围内的学生数据放在b所指的数组中,分数范围内的学生人数由函数返回。(注释:该题不仅仅考查题目中要求的内容,在程序段中有特殊的语句需要执行,所以需要特别注意!)(2)main函数:该题没有NONO函数,因此以主函数为准。说明main函数:1)在main函数之前定义了一个结构体STREC,里面有两个成员,分别表示学号和成绩,该题中一定要认清操作的是学号还是成绩,特别是输出的时候,该类型的题目都拥有相同的考点。2)在主函数中STRECs[N];定义了一个结构体类型的数组,长度为N,并且为其赋值16个数据。STRECh[N],tt;FILE*out;定义了另一个结构体数组h,和结构体变量tt,文件指针。在下图中已经用红色框住的部分需要明白。第一红框到第二个红框之间的部分可以不去理解,对做题没有影响。3)n=fun(s,h,80,98);最为关键,结合题目可以知道该句话的含义是:从结构体数组s中找到80到98之间的所有数据放到结构体数组中。帅选的数据为:总共8个,题目中说将分数范围内的人数返回,这样可以得知n的值为84)fprintf(out,"%d\n",n);将n以%d的格式输出到out.dat中5)为冒泡法排序,旨在将h中的数据按照分数进行从小到大排序,如果不了解排序过程请参考“注意事项”,结构体数组h中的数据进行从小到大的操作后变为:6)表示将排序后h中的数据以4d%\n的形式输出到out.dat中,并且输出的是h[i].s成绩数据项。(3)在fun函数中输入测试数据,编译,执行,该题函数返回int则需return语句,出现下图结果。执行结果中必须出现“Pressanykeytocontinue”字样才会生成out.dat文件,都则将不生成该文件。(4)打开out.dat(因为没有in.dat,所以无须打开它),清空里面的数据。1)首先输出n的值,以%d\n的形式进行输出:2)其次将h排序后的第一个数据输出,以%4d\n的形式输出,第一个数据位85,85的宽度为2,但是输出中要求为4,所以必须在85前面加上2个空格。3)将剩余数据全部输出:(5)保存交卷第九种类型:链表类型1、题库中对应题目编号:22、80、842、考题举例:以22为例进行讲解(1)题目要求:N名学生的成绩已经在主函数中放在一个带头结点的链表中,h指向链表的头结点,函数功能是:找出学生的最高分,由函数值返回。(注释:返回值是最高分,不是数据整体)(2)NONO函数:主要观察红框部分,具体解释将在下面介绍。(3)在fun函数中输入测试数据,编译,执
例如第一行mm为3,nn为4,则应该有一个3行4列的二维数组。
根据for(i=0;ifor(i=0;i以行的形式进行输出,结果如下:第一个33前面要加一个空格,因为%3d要求输出的宽度为3,但是33这个数字只占了2个的宽度,因此必须在33前面加一个空格,依次类推,第二33至55都要在前面加一个空格。输完数据后要记得执行fprintf(wf,"\n");输出一个换行符。将题目中其它的二维数组修改后的结果如下:(7)保存交卷第五种类型:找出数组中的最大值或者最大值所在的下标1.题库中对应题目编号:18、29、36、66、83、552.考题举例:以18题为例(1)题目要求:求出数组中最大数的下标并存放在k所指的存储单元中(2)NONO函数:(3)在fun函数中输入测试数据,编译,执行,该题函数返回int则需return语句,另外题目中严格要求k返回的是最大值下标,因此必须给*k初始值0,出现下图结果。(4)打开in.dat文件。NONNO函数中:说明的信息是将10个据通过fscanf函数读入到数组a中,从10个数据中找到最大值及其下标分析:in.dat可以发现,里面的数据都是10列,总共有10行,因此只要将每一行的最大值及其下标找出来存放在out.dat中即可。(5)打开out.dat并清空文件里面的数据该语句将最大值下标k及其最大值以%d,%d的形式输出,结合in.dat中的第一行数据不难发现最大值是121,它所在的下标是1(补充:下标是从0开始的),因此将1,121输入到out.dat中的第一行,记得在121后面加上回车进行换行。(6)保存交卷第六种类型:字符串操作三。包括统计单词、字符的个数,比较字符串,转换字符串1、题库中对应题目编号:26,30,37,40,53,56,59,60,74(比较特殊,多练习)2、考题举例:以53题为例(1)题目要求:求出ss所指字符串中指定字符的个数,例如字符串:123412132,输入的字符为:1,则输出为:3。该类型的题目一定要知道哪个字符需要计算个数。(2)NONO函数:(3)在fun函数中输入测试数据,编译,执行,该题函数返回int则需return语句,出现下图结果。(4)打开in.dat文件。NONO函数中的两个fscanf分别从in.dat中读取两行数据给数组a和数组b,以第一行和第二行数据为例,数组a存储字符串为:hsfgjkdgfdgfdgkfdjgkldf,数组b存储字符为:h,做题时需要从字符串中找出字符h的个数,为1(5)打开out.dat文件,并清空里面的数据首先程序先将*b的值赋值给变量ch,通过in.dat中分析可以得到,*b存放的就是指定的字符,以第一行为例就应该为h。数据在写入out.dat时,必须以%c=%d\n的形式输出,其中%c对应ch,即为h,%d对应的是函数的返回值,即为h在字符串中的个数为1。输出的结果为:其它行依次类推(6)保存交卷第七种类型:字符串操作四,删除指定字符1、题库中对应题目编号:4、12、25、28、35、39、52、55、72、75、85、862、考题举例:以第4题为例(1)题目要求:将ss所指字符串中所有下标为奇数位置上的字母转为大写,若该位置不是字母,则不转换。该类型的题目不难但是必修认真,有耐心!(2)NONO函数:该题中的NONO函数比较难理解,同学们只需将红色方框里面的语句读懂就行,具体的将在第四步中介绍。(3)在fun函数中输入测试数据,编译,执行,该题函数返回void则无需return语句,出现下图结果。(4)打开in.dat文件fgets(tt,50,rf)表示从in.dat中读入一个字符串给tt数组,如果不了解也不要紧,对做题没有太大的影响。做题时候首先要知道字符的字符的小标是否是奇数,我们可以通过标注数字删除不符合的字符。以第一行为例,将奇数位置的字符改动就行,记住空格占一个字符,在做其它题目时候一定要小心dsf fds fdslj fdsl fds ljkfsd012345678910111213141516171819202122232425262728(5)打开out.dat文件,清空数据。fprintf(wf,"%s\n",tt);将tt数组中的字符串修改后进行输出,即将下标是奇数位置的小写字符改为大写字母。(6)保存交卷 第八种类型:结构体1、题库中对应题目编号:2、3、16、23、33、51、58、64、68、82、97、98、992、考题举例:以第二题为例(备注第二题是该类型中最典型的例题)(1)题目要求:N名学生的数据已经通过主函数存放在s数组中,函数功能是:把指定分数范围内的学生数据放在b所指的数组中,分数范围内的学生人数由函数返回。(注释:该题不仅仅考查题目中要求的内容,在程序段中有特殊的语句需要执行,所以需要特别注意!)(2)main函数:该题没有NONO函数,因此以主函数为准。说明main函数:1)在main函数之前定义了一个结构体STREC,里面有两个成员,分别表示学号和成绩,该题中一定要认清操作的是学号还是成绩,特别是输出的时候,该类型的题目都拥有相同的考点。2)在主函数中STRECs[N];定义了一个结构体类型的数组,长度为N,并且为其赋值16个数据。STRECh[N],tt;FILE*out;定义了另一个结构体数组h,和结构体变量tt,文件指针。在下图中已经用红色框住的部分需要明白。第一红框到第二个红框之间的部分可以不去理解,对做题没有影响。3)n=fun(s,h,80,98);最为关键,结合题目可以知道该句话的含义是:从结构体数组s中找到80到98之间的所有数据放到结构体数组中。帅选的数据为:总共8个,题目中说将分数范围内的人数返回,这样可以得知n的值为84)fprintf(out,"%d\n",n);将n以%d的格式输出到out.dat中5)为冒泡法排序,旨在将h中的数据按照分数进行从小到大排序,如果不了解排序过程请参考“注意事项”,结构体数组h中的数据进行从小到大的操作后变为:6)表示将排序后h中的数据以4d%\n的形式输出到out.dat中,并且输出的是h[i].s成绩数据项。(3)在fun函数中输入测试数据,编译,执行,该题函数返回int则需return语句,出现下图结果。执行结果中必须出现“Pressanykeytocontinue”字样才会生成out.dat文件,都则将不生成该文件。(4)打开out.dat(因为没有in.dat,所以无须打开它),清空里面的数据。1)首先输出n的值,以%d\n的形式进行输出:2)其次将h排序后的第一个数据输出,以%4d\n的形式输出,第一个数据位85,85的宽度为2,但是输出中要求为4,所以必须在85前面加上2个空格。3)将剩余数据全部输出:(5)保存交卷第九种类型:链表类型1、题库中对应题目编号:22、80、842、考题举例:以22为例进行讲解(1)题目要求:N名学生的成绩已经在主函数中放在一个带头结点的链表中,h指向链表的头结点,函数功能是:找出学生的最高分,由函数值返回。(注释:返回值是最高分,不是数据整体)(2)NONO函数:主要观察红框部分,具体解释将在下面介绍。(3)在fun函数中输入测试数据,编译,执
for(i=0;i以行的形式进行输出,结果如下:第一个33前面要加一个空格,因为%3d要求输出的宽度为3,但是33这个数字只占了2个的宽度,因此必须在33前面加一个空格,依次类推,第二33至55都要在前面加一个空格。输完数据后要记得执行fprintf(wf,"\n");输出一个换行符。将题目中其它的二维数组修改后的结果如下:(7)保存交卷第五种类型:找出数组中的最大值或者最大值所在的下标1.题库中对应题目编号:18、29、36、66、83、552.考题举例:以18题为例(1)题目要求:求出数组中最大数的下标并存放在k所指的存储单元中(2)NONO函数:(3)在fun函数中输入测试数据,编译,执行,该题函数返回int则需return语句,另外题目中严格要求k返回的是最大值下标,因此必须给*k初始值0,出现下图结果。(4)打开in.dat文件。NONNO函数中:说明的信息是将10个据通过fscanf函数读入到数组a中,从10个数据中找到最大值及其下标分析:in.dat可以发现,里面的数据都是10列,总共有10行,因此只要将每一行的最大值及其下标找出来存放在out.dat中即可。(5)打开out.dat并清空文件里面的数据该语句将最大值下标k及其最大值以%d,%d的形式输出,结合in.dat中的第一行数据不难发现最大值是121,它所在的下标是1(补充:下标是从0开始的),因此将1,121输入到out.dat中的第一行,记得在121后面加上回车进行换行。(6)保存交卷第六种类型:字符串操作三。包括统计单词、字符的个数,比较字符串,转换字符串1、题库中对应题目编号:26,30,37,40,53,56,59,60,74(比较特殊,多练习)2、考题举例:以53题为例(1)题目要求:求出ss所指字符串中指定字符的个数,例如字符串:123412132,输入的字符为:1,则输出为:3。该类型的题目一定要知道哪个字符需要计算个数。(2)NONO函数:(3)在fun函数中输入测试数据,编译,执行,该题函数返回int则需return语句,出现下图结果。(4)打开in.dat文件。NONO函数中的两个fscanf分别从in.dat中读取两行数据给数组a和数组b,以第一行和第二行数据为例,数组a存储字符串为:hsfgjkdgfdgfdgkfdjgkldf,数组b存储字符为:h,做题时需要从字符串中找出字符h的个数,为1(5)打开out.dat文件,并清空里面的数据首先程序先将*b的值赋值给变量ch,通过in.dat中分析可以得到,*b存放的就是指定的字符,以第一行为例就应该为h。数据在写入out.dat时,必须以%c=%d\n的形式输出,其中%c对应ch,即为h,%d对应的是函数的返回值,即为h在字符串中的个数为1。输出的结果为:其它行依次类推(6)保存交卷第七种类型:字符串操作四,删除指定字符1、题库中对应题目编号:4、12、25、28、35、39、52、55、72、75、85、862、考题举例:以第4题为例(1)题目要求:将ss所指字符串中所有下标为奇数位置上的字母转为大写,若该位置不是字母,则不转换。该类型的题目不难但是必修认真,有耐心!(2)NONO函数:该题中的NONO函数比较难理解,同学们只需将红色方框里面的语句读懂就行,具体的将在第四步中介绍。(3)在fun函数中输入测试数据,编译,执行,该题函数返回void则无需return语句,出现下图结果。(4)打开in.dat文件fgets(tt,50,rf)表示从in.dat中读入一个字符串给tt数组,如果不了解也不要紧,对做题没有太大的影响。做题时候首先要知道字符的字符的小标是否是奇数,我们可以通过标注数字删除不符合的字符。以第一行为例,将奇数位置的字符改动就行,记住空格占一个字符,在做其它题目时候一定要小心dsf fds fdslj fdsl fds ljkfsd012345678910111213141516171819202122232425262728(5)打开out.dat文件,清空数据。fprintf(wf,"%s\n",tt);将tt数组中的字符串修改后进行输出,即将下标是奇数位置的小写字符改为大写字母。(6)保存交卷 第八种类型:结构体1、题库中对应题目编号:2、3、16、23、33、51、58、64、68、82、97、98、992、考题举例:以第二题为例(备注第二题是该类型中最典型的例题)(1)题目要求:N名学生的数据已经通过主函数存放在s数组中,函数功能是:把指定分数范围内的学生数据放在b所指的数组中,分数范围内的学生人数由函数返回。(注释:该题不仅仅考查题目中要求的内容,在程序段中有特殊的语句需要执行,所以需要特别注意!)(2)main函数:该题没有NONO函数,因此以主函数为准。说明main函数:1)在main函数之前定义了一个结构体STREC,里面有两个成员,分别表示学号和成绩,该题中一定要认清操作的是学号还是成绩,特别是输出的时候,该类型的题目都拥有相同的考点。2)在主函数中STRECs[N];定义了一个结构体类型的数组,长度为N,并且为其赋值16个数据。STRECh[N],tt;FILE*out;定义了另一个结构体数组h,和结构体变量tt,文件指针。在下图中已经用红色框住的部分需要明白。第一红框到第二个红框之间的部分可以不去理解,对做题没有影响。3)n=fun(s,h,80,98);最为关键,结合题目可以知道该句话的含义是:从结构体数组s中找到80到98之间的所有数据放到结构体数组中。帅选的数据为:总共8个,题目中说将分数范围内的人数返回,这样可以得知n的值为84)fprintf(out,"%d\n",n);将n以%d的格式输出到out.dat中5)为冒泡法排序,旨在将h中的数据按照分数进行从小到大排序,如果不了解排序过程请参考“注意事项”,结构体数组h中的数据进行从小到大的操作后变为:6)表示将排序后h中的数据以4d%\n的形式输出到out.dat中,并且输出的是h[i].s成绩数据项。(3)在fun函数中输入测试数据,编译,执行,该题函数返回int则需return语句,出现下图结果。执行结果中必须出现“Pressanykeytocontinue”字样才会生成out.dat文件,都则将不生成该文件。(4)打开out.dat(因为没有in.dat,所以无须打开它),清空里面的数据。1)首先输出n的值,以%d\n的形式进行输出:2)其次将h排序后的第一个数据输出,以%4d\n的形式输出,第一个数据位85,85的宽度为2,但是输出中要求为4,所以必须在85前面加上2个空格。3)将剩余数据全部输出:(5)保存交卷第九种类型:链表类型1、题库中对应题目编号:22、80、842、考题举例:以22为例进行讲解(1)题目要求:N名学生的成绩已经在主函数中放在一个带头结点的链表中,h指向链表的头结点,函数功能是:找出学生的最高分,由函数值返回。(注释:返回值是最高分,不是数据整体)(2)NONO函数:主要观察红框部分,具体解释将在下面介绍。(3)在fun函数中输入测试数据,编译,执
以行的形式进行输出,结果如下:
第一个33前面要加一个空格,因为%3d要求输出的宽度为3,但是33这个数字只占了2个的宽度,因此必须在33前面加一个空格,依次类推,第二33至55都要在前面加一个空格。
输完数据后要记得执行fprintf(wf,"\n");输出一个换行符。
将题目中其它的二维数组修改后的结果如下:
第五种类型:
找出数组中的最大值或者最大值所在的下标
1.题库中对应题目编号:
18、29、36、66、83、55
2.考题举例:
以18题为例
(1)题目要求:
求出数组中最大数的下标并存放在k所指的存储单元中
(3)在fun函数中输入测试数据,编译,执行,该题函数返回int则需return语句,另外题目中严格要求k返回的是最大值下标,因此必须给*k初始值0,出现下图结果。
(4)打开in.dat文件。
NONNO函数中:
说明的信息是将10个据通过fscanf函数读入到数组a中,从10个数据中找到最大值及其下标
in.dat可以发现,里面的数据都是10列,总共有10行,因此只要将每一行的最大值及其下标找出来存放在out.dat中即可。
(5)打开out.dat并清空文件里面的数据
该语句将最大值下标k及其最大值以%d,%d的形式输出,结合in.dat中的第一行数据不难发现最大值是121,它所在的下标是1(补充:
下标是从0开始的),因此将1,121输入到out.dat中的第一行,记得在121后面加上回车进行换行。
第六种类型:
字符串操作三。
包括统计单词、字符的个数,比较字符串,转换字符串
26,30,37,40,53,56,59,60,74(比较特殊,多练习)
以53题为例
求出ss所指字符串中指定字符的个数,例如字符串:
123412132,输入的字符为:
1,则输出为:
3。
该类型的题目一定要知道哪个字符需要计算个数。
(3)在fun函数中输入测试数据,编译,执行,该题函数返回int则需return语句,出现下图结果。
NONO函数中的两个fscanf分别从in.dat中读取两行数据给数组a和数组b,以第一行和第二行数据为例,数组a存储字符串为:
hsfgjkdgfdgfdgkfdjgkldf,数组b存储字符为:
h,做题时需要从字符串中找出字符h的个数,为1
(5)打开out.dat文件,并清空里面的数据
首先程序先将*b的值赋值给变量ch,通过in.dat中分析可以得到,*b存放的就是指定的字符,以第一行为例就应该为h。
数据在写入out.dat时,必须以%c=%d\n的形式输出,其中%c对应ch,即为h,%d对应的是函数的返回值,即为h在字符串中的个数为1。
输出的结果为:
其它行依次类推
第七种类型:
字符串操作四,删除指定字符
4、12、25、28、35、39、52、55、72、75、85、86
以第4题为例
将ss所指字符串中所有下标为奇数位置上的字母转为大写,若该位置不是字母,则不转换。
该类型的题目不难但是必修认真,有耐心!
该题中的NONO函数比较难理解,同学们只需将红色方框里面的语句读懂就行,具体的将在第四步中介绍。
(4)打开in.dat文件
fgets(tt,50,rf)表示从in.dat中读入一个字符串给tt数组,如果不了解也不要紧,对做题没有太大的影响。
做题时候首先要知道字符的字符的小标是否是奇数,我们可以通过标注数字删除不符合的字符。
以第一行为例,将奇数位置的字符改动就行,记住空格占一个字符,在做其它题目时候一定要小心
d
s
f
l
j
k
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
(5)打开out.dat文件,清空数据。
fprintf(wf,"%s\n",tt);将tt数组中的字符串修改后进行输出,即将下标是奇数位置的小写字符改为大写字母。
第八种类型:
结构体
2、3、16、23、33、51、58、64、68、82、97、98、99
以第二题为例(备注第二题是该类型中最典型的例题)
N名学生的数据已经通过主函数存放在s数组中,函数功能是:
把指定分数范围内的学生数据放在b所指的数组中,分数范围内的学生人数由函数返回。
(注释:
该题不仅仅考查题目中要求的内容,在程序段中有特殊的语句需要执行,所以需要特别注意!
)
(2)main函数:
该题没有NONO函数,因此以主函数为准。
说明main函数:
1)
在main函数之前定义了一个结构体STREC,里面有两个成员,分别表示学号和成绩,该题中一定要认清操作的是学号还是成绩,特别是输出的时候,该类型的题目都拥有相同的考点。
2)在主函数中STRECs[N];定义了一个结构体类型的数组,长度为N,并且为其赋值16个数据。
STRECh[N],tt;FILE*out;定义了另一个结构体数组h,和结构体变量tt,文件指针。
在下图中已经用红色框住的部分需要明白。
第一红框到第二个红框之间的部分可以不去理解,对做题没有影响。
3)n=fun(s,h,80,98);最为关键,结合题目可以知道该句话的含义是:
从结构体数组s中找到80到98之间的所有数据放到结构体数组中。
帅选的数据为:
总共8个,题目中说将分数范围内的人数返回,这样可以得知n的值为8
4)fprintf(out,"%d\n",n);将n以%d的格式输出到out.dat中
5)
为冒泡法排序,旨在将h中的数据按照分数进行从小到大排序,如果不了解排序过程请参考“注意事项”,结构体数组h中的数据进行从小到大的操作后变为:
6)
表示将排序后h中的数据以4d%\n的形式输出到out.dat中,并且输出的是h[i].s成绩数据项。
执行结果中必须出现“Pressanykeytocontinue”字样才会生成out.dat文件,都则将不生成该文件。
(4)打开out.dat(因为没有in.dat,所以无须打开它),清空里面的数据。
1)首先输出n的值,以%d\n的形式进行输出:
2)其次将h排序后的第一个数据输出,以%4d\n的形式输出,第一个数据位85,85的宽度为2,但是输出中要求为4,所以必须在85前面加上2个空格。
3)将剩余数据全部输出:
(5)保存交卷
第九种类型:
链表类型
22、80、84
以22为例进行讲解
N名学生的成绩已经在主函数中放在一个带头结点的链表中,h指向链表的头结点,函数功能是:
找出学生的最高分,由函数值返回。
返回值是最高分,不是数据整体)
主要观察红框部分,具体解释将在下面介绍。
(3)在fun函数中输入测试数据,编译,执
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1