计算机二级上机技巧.doc

上传人:豆**** 文档编号:35289337 上传时间:2022-08-21 格式:DOC 页数:18 大小:105KB
返回 下载 相关 举报
计算机二级上机技巧.doc_第1页
第1页 / 共18页
计算机二级上机技巧.doc_第2页
第2页 / 共18页
点击查看更多>>
资源描述

《计算机二级上机技巧.doc》由会员分享,可在线阅读,更多相关《计算机二级上机技巧.doc(18页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、如有侵权,请联系网站删除,仅供学习与交流计算机二级上机技巧【精品文档】第 18 页上机技巧一、 填空题字符串考试内容占30%,数学类型题占25%,结构体类型题占25%,数组内容占20%,文件内容占5%,有些既有文件又有结构体,如填空题第22题,有些既有字符串又有结构体,如填空题第2题。填空题注意的事项:1、在每个/*found*/下有一空需要我们填写,标记如“_1_ ”。 2、把标记如“_1_ ”等去掉后填写正确内容。 3、不要改变程序其他任何地方,也不得增加或删除一行。 4、运行程序(自动提示保存程序),根据运行结果检验答案是否正确。(一)、定义变量或类型名1、给定程序中,函数fun的功能是

2、根据形参i的值返回某个函数的值。当调用正确时, 程序输出:x1=5.000000,x2=3.000000,x1*x1+x1*x2=40.000000 请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构!#include double f1(double x) return x*x; double f2(double x, double y) return x*y; /*found*/_1_ fun(int i, double x, double y) if (i=1)/*found

3、*/ return _2_(x); else/*found*/ return _3_(x, y);main() double x1=5, x2=3, r; r = fun(1, x1, x2); r += fun(2, x1, x2); printf(nx1=%f,x2=%f, x1*x1+x1*x2=%fnn,x1, x2, r);其中第一空填写的就是函数返回值的类型名,根据return后面的表达式的值的类型就是函数返回值的类型,而return _2_(x);和return _3_(x, y);这样的表达形式只有在函数中存在,而我们定义的f1和f2函数在后面没有用到,不可能无缘无故的使用变量

4、或函数,所以可以分析出这两空一定是填f1,f2函数,具体填哪个,根据他们的形式参数来确定,f1有一个形参,f2有两个形参,实际参数跟形式参数个数一致,类型一致,一一对应,所以第2空填写f1,第3空填写f2,第一空很明显填写double型。运行后如果得到=5.000000,x2=3.000000,x1*x1+x1*x2=40.000000,那就说明做正确了。2、程序通过定义学生结构体数组,存储了若干名学生的学号、姓名和3门课的成绩。函数fun的功能是将存放学生数据的结构体数组,按照姓名的字典序(从小到大)排序。 请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。#inclu

5、de #include struct student long sno; char name10; float score3;void fun(struct student a, int n)/*found*/ _1_ t; int i, j;/*found*/ for (i=0; i_2_; i+) for (j=i+1; j 0) t = ai; ai = aj; aj = t; main() struct student s4=10001,ZhangSan, 95, 80, 88,10002,LiSi, 85, 70, 78, 10003,CaoKai, 75, 60, 88, 1000

6、4,FangFang, 90, 82, 87; int i, j; printf(nnThe original data :nn); for (j=0; j4; j+) printf(nNo: %ld Name: %-8s Scores: ,sj.sno, sj.name); for (i=0; i3; i+) printf(%6.2f , sj.scorei); printf(n); fun(s, 4); printf(nnThe data after sorting :nn); for (j=0; j4; j+) printf(nNo: %ld Name: %-8s Scores: ,sj

7、.sno, sj.name); for (i=0; i3; i+) printf(%6.2f , sj.scorei); printf(n);这道题是有关结构体的题目,首先看清楚题目的要求,按照姓名的字典顺序从小到大排序,第一空就是函数体内的定义部分,定义t的类型,根据t = ai;我们发现他们的类型是一致的,已有定义struct student a,很明显t也是这个类型,这样第一空填struct student。第2空是填写循环条件,根据for (i=0; i_2_; i+) for (j=i+1; jaj.name。运行后按照姓名的字典序(从小到大)排序,说明这题做对了。(二)、while

8、、if、for语句的表达式 8、给定程序中,函数fun的功能是:在形参ss所指字符串数组中,删除所有串长超过k的字符串,函数返回所剩字符串的个数。ss所指字符串数组中共有N个字符串,且串长小于M。#include #include #define N 5#define M 10int fun(char (*ss)M, int k) int i,j=0,len;/*found*/ for(i=0; i _1_ ; i+) len=strlen(ssi);/*found*/ if(len= _2_)/*found*/ strcpy(ssj+,_3_); return j;main()Char xN

9、M=Beijing,Shanghai,Tianjing,Nanjing,Wuhan; int i,f; printf(nThe original stringnn); for(i=0;iN;i+)puts(xi); printf(n); f=fun(x,7); printf(The string witch length is less than or equal to 7 :n); for(i=0; if; i+) puts(xi);printf(n); 这道题是有关字符串的题目,xNM有5个字符串,删除所有串长超过k的字符串,第1空填写循环结束条件,比较完5个字符串长度是否超过k就结束,所

10、以这空填N(常量5),第2空跟k比较长度,很明显填k,最后一空是字符串函数strcpy复制字符串,strcpy两个参数都必须为指针,这空只能填ssi,把长度小于等于k的字符串全部复制到ssj中,j+实现j自增。运行检验结果。(三)、函数调用5、给定程序中,函数fun的功能是将a和b所指的两个字符串转换成面值相同的整数,并进行相加作为函数值返回,规定字符串中只含9个以下数字字符。 例如,主函数中输入字符串:32486和12345,在主函数中输出的函数值为:44831。#include #include #include #define N 9long ctod( char *s ) long d

11、=0; while(*s) if(isdigit( *s) /*found*/ d=d*10+*s-_1_;/*found*/ _2_; return d;long fun( char *a, char *b )/*found*/ return _3_;main() char s1N,s2N; do printf(Input string s1 : ); gets(s1); while( strlen(s1)N ); do printf(Input string s2 : ); gets(s2); while( strlen(s2)N ); printf(The result is: %ldn

12、, fun(s1,s2) );这道题是有关字符串的,把字符串转成数据并相加。其中有2个函数,ctod和fun函数,其中fun函数内容很简单,直接return 表达式,ctod函数定义后,主函数中没有被调用,所以第三空填写ctod函数调用。isdigit函数是判断是否有数字,if(isdigit( *s)如果是数字,则执行语句 d=d*10+*s-_1_;,具体减去什么,我们发现*s的内容是字符,如2字符如何转化为数字2,我们只有通过ASCII码转换,减去48(0的ASCII码码值)即可得到相应的数字。所以第一空填0,第二空是循环体的一部分,循环是由*s来控制,如果没变化就会产生死循环,所以第二

13、空使指针s下移,不断地接收字符串中的值。第3空根据题目要求要把两个数加起来,但是ctod参数只有一个,每一次只能转化一个字符串,所以这空填ctod(a)+ctod(b)。运行后入字符串:32486和12345,得到44831,说明做正确了。函数调用特别要注意实际参数必须与形参个数一致,类型一致,一一对应,特别注意字符串函数stycpy,strcmp,strlen等函数的调用形式。(四)、初值6、给定程序中,函数fun的功能是:计算下式前n项的和作为函数值返回。 例如,当形参n的值为10时,函数返回:9.612558。#include double fun(int n) int i; doubl

14、e s, t;/*found*/ s=_1_;/*found*/ for(i=1; i=_2_; i+) t=2.0*i;/*found*/ s=s+(2.0*i-1)*(2.0*i+1)/_3_; return s;main() int n=-1; while(n0): ); scanf(%d,&n); printf(nThe result is: %fn,fun(n); 这是一道有关数学的题目,先把这数学式子看下,思考下分子和分母有什么规律,然后再做题,第一空填的是s的初值,根据s=s+(2.0*i-1)*(2.0*i+1)/_3_;我们可以看出s是用来求整个式子的和,式子的每一项都存在规

15、律,所以初值为0,那么第一空就填0,第二空是控制循环的条件,这个式子 (2.0*i-1)*(2.0*i+1)/_3_跟题目给出的式子比较,发现i最大只能为n,所以第二空填n,第三空之前有定义了一个变量t,没被用到过,所以第三空肯定是填跟t有关内容,根据分析第三空填t*t。运行输入10,值为9.612558,说明做对了。(五)、变量或指针的自增自减 14、给定程序中,函数fun的功能是:将形参s所指字符串中的数字字符转换成对应的数值,计算出这些数值的累加和作为函数值返回。 例如,形参s所指的字符串为:abs5def126jkm8,程序执行后的输出结果为:22。#include #include

16、#include int fun(char *s) int sum=0; while(*s) /*found*/ if( isdigit(*s) ) sum+= *s- _1_ ;/*found*/ _2_;/*found*/ return _3_ ;main() char s81; int n; printf(nEnter a string:nn); gets(s); n=fun(s); printf(nThe result is: %dnn,n); 这道题跟第5题有点类似,都是把字符串中的数字字符转为对应的数值,不同的是第5题是把两个字符串转成面值相同的整数并相加,这道题把1个字符串中的各

17、个数值相加。第一空是把所有是数字的加进sum中,所以同样的第一空填写0,第2空指针下移,填写s+,最后一空返回的是这些数值的累加和,而sum正是求这些数值的累加和,所以填sum。输入abs5def126jkm8,程序执行后的输出结果为22,则正确。(六)、return 表达式前面的第1题,第5题,第14题都使用到return,这里就不再列举。(七)、文件指针28、给定程序中,函数fun的功能是将参数给定的字符串、整数、浮点数写到文本文件中,再用字符串方式从此文本文件中逐个读入,并调用库函数atoi和atof将字符串转换成相应的整数、浮点数,然后将其显示在屏幕上。#include #includ

18、e void fun(char *s, int a, double f)/*found*/ _1_ fp; char str100, str1100, str2100; int a1; double f1; fp = fopen(file1.txt, w); fprintf(fp, %s %d %fn, s, a, f);/*found*/ _2_ ; fp = fopen(file1.txt, r);/*found*/ fscanf(_3_,%s%s%s, str, str1, str2); fclose(fp); a1 = atoi(str1); f1 = atof(str2); prin

19、tf(nThe result :nn%s %d %fn, str, a1, f1);main() char a10=Hello!; int b=12345; double c= 98.76; fun(a,b,c); 这是一道典型的文件题目,第一空很明显填写定义指针的形式,回忆下文件那张,定义文件指针为FILE *fp,一定要大写还要记得加*号。接着以写的方式打开文件,第二空之后又出现了以读的方式打开文件,我们知道文件打开完了要关闭文件,才能再对文件进行其他的读写操作。所以第二空填写关闭文件,关闭文件调用fclose(文件指针),第二空填fclose(fp)。fscanf函数中的第一个参数是我们

20、要填写的,fscanf(文件指针,格式控制字符串,输入项表),所以第三空填fp。运行检验结果。 文件中考得多的就是文件指针,如FILE *fp , feof(fp) ,fclose(fp) , fp ,还有就是文件打开方式读文本文件r、读二进制文件rb,写文本文件w、写二进制文件wb。(八)、指向结构体成员运算符-和结构体成员运算符.23、程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。函数fun的功能是对形参b所指结构体变量中的数据进行修改,最后在主函数中输出修改后的数据。 例如: b所指变量t中的学号、姓名、和三门课的成绩依次是: 10002、ZhangQi、93、85、

21、87,修改后输出t中的数据应为:10004、 LiJie 、93、85、87。#include #include struct student long sno; char name10; float score3;void fun( struct student *b) int i;/*found*/ b_1_ = 10004;/*found*/ strcpy(b_2_, LiJie);main() struct student t=10002,ZhangQi, 93, 85, 87; int i; printf(nnThe original data :n); printf(nNo: %l

22、d Name: %snScores: ,t.sno, t.name); for (i=0; i3; i+) printf(%6.2f , t.scorei); printf(n);/*found*/ fun(_3_); printf(nThe data after modified :n); printf(nNo: %ld Name: %snScores: ,t.sno, t.name); for (i=0; i ,strcpy(b_2_, LiJie);这是对姓名进行赋值的一种方式,所以第二空填name。运行后结果为10004、 LiJie 、93、85、87,则正确。47、程序通过定义学生

23、结构体变量,存储了学生的学号、姓名和3门课的成绩。所有学生数据均以二进制方式输出到文件中。函数fun的功能是从形参filename所指的文件中读入学生数据,并按照学号从小到大排序后,再用二进制方式把排序后的学生数据输出到filename所指的文件中,覆盖原来的文件内容。#include #define N 5typedef struct student long sno; char name10; float score3; STU;void fun(char *filename) FILE *fp; int i, j; STU sN, t;/*found*/ fp = fopen(filen

24、ame, _1_); fread(s, sizeof(STU), N, fp); fclose(fp); for (i=0; iN-1; i+) for (j=i+1; jN; j+)/*found*/ if (si.sno _2_) t = si; si = sj; sj = t; fp = fopen(filename, wb);/*found*/ _3_(s, sizeof(STU), N, fp); fclose(fp);main() STU tN= 10005,ZhangSan, 95, 80, 88, 10003,LiSi, 85, 70, 78, 10002,CaoKai, 75

25、, 60, 88, 10004,FangFang, 90, 82, 87, 10001,MaChao, 91, 92, 77, ssN; int i,j; FILE *fp; fp = fopen(student.dat, wb); fwrite(t, sizeof(STU), 5, fp); fclose(fp); printf(nnThe original data :nn); for (j=0; jN; j+) printf(nNo: %ld Name: %-8s Scores: ,tj.sno, tj.name); for (i=0; i3; i+) printf(%6.2f , tj

26、.scorei); printf(n); fun(student.dat); printf(nnThe data after sorting :nn); fp = fopen(student.dat, rb); fread(ss, sizeof(STU), 5, fp); fclose(fp); for (j=0; jN; j+) printf(nNo: %ld Name: %-8s Scores: ,ssj.sno, ssj.name); for (i=0; isj.sno,再用二进制方式把排序后的学生数据输出到filename所指的文件中,覆盖原来的文件内容, fp = fopen(fil

27、ename, wb);再次以写的方式打开了文件_3_(s, sizeof(STU), N, fp);读的时候有fp = fopen(filename, _1_);fread(s, sizeof(STU), N, fp);,那么再次写就相应地用fwrite了,所以第三空填fwrite。运行检验结果。(九)、其他(1)、指向函数的指针27、给定程序中, 函数fun的功能是用函数指针指向要调用的函数,并进行调用。规定在_2_处使f指向函数f1,在_3_处使f指向函数f2。当调用正确时,程序输出:x1=5.000000,x2=3.000000,x1*x1+x1*x2=40.000000 请在程序的下划

28、线处填入正确的内容.#include double f1(double x) return x*x; double f2(double x, double y) return x*y; double fun(double a, double b)/*found*/ _1_ (*f)(); double r1, r2;/*found*/ f = _2_ ; /* point fountion f1 */ r1 = f(a);/*found*/ f = _3_ ; /* point fountion f2 */ r2 = (*f)(a, b); return r1 + r2;main() doub

29、le x1=5, x2=3, r; r = fun(x1, x2); printf(nx1=%f, x2=%f, x1*x1+x1*x2=%fn,x1, x2, r); 唯一的一道指向函数的指针,只要对函数指针有一定的了解,做这道题就不费力了。_1_ (*f)();填写函数返回值类型,那就是double, f = _2_ ; /* point fountion f1 */将函数名f1赋给指针f,即让f指向f1,第二空直接填f1,第三空跟第二空是一样的道理,所以第三空填f2。运行结果为x1=5.000000,x2=3.000000,x1*x1+x1*x2=40.000000,正确。(2)两数交换

30、4、给定程序中,函数fun的功能是:将a所指43矩阵中第k行的元素与第0行元素交换。 例如,有下列矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 若k为2,程序执行结果为: 7 8 9 4 5 6 1 2 3 10 11 12请在程序的下划线处填入正确的内容#include #define N 3#define M 4/*found*/void fun(int (*a)N, int _1_) int i,j,temp ;/*found*/ for(i = 0 ; i _2_ ; i+) temp=a0i ;/*found*/ a0i = _3_ ; aki = temp ;mai

31、n() int xMN= 1,2,3,4,5,6,7,8,9,10,11,12 ,i,j; printf(The array before moving:nn); for(i=0; iM; i+) for(j=0; jN; j+) printf(%3d,xij); printf(nn); fun(x,2); printf(The array after moving:nn); for(i=0; iM; i+) for(j=0; jN; j+) printf(%3d,xij); printf(nn);其中第3空就是两数交换通过中间变量temp,所以很明显,填写aki.第1空void fun(in

32、t (*a)N, int _1_)填写的是一个形式参数,实际参数fun(x,2);对应的是整型2,fun函数中变量k没定义就用了,所以第一空填k。根据矩阵给出的数据发现,原来的x00变成x20, x01变成x21, x02变成x22, for(i = 0 ; i _2_ ; i+),这空应该填N(常量3)。运行检验结果。(3)?: 只有64题。(4)|和&只有39题和81题(5)printf只有63题(6)数组下标有76,89,98题二、 改错题改错题注意的事项:1、在每个/*found*/下面有一处错误,有几个/*found*/就有几个错误。 2、只能对/*found*/下一行进行做小修改。

33、 3、不要改变程序其他任何地方,也不得增加或删除一行。 4、运行程序(自动提示保存程序),根据运行结果检验答案是否正确。(一)写错标识符(关键字、变量名、数字0和字母O不分)考试过程中,程序中出现的关键字一定是蓝色的而且是小写的,经常出现错误的关键字有:if,double,int,while,for,float等,有些是小写错写成大写,有些是顺序写反。所以考生在做题的时候一定要仔细,首先检查*found*下一行中出现的关键字是否正确,再来判断其他错误。 2、给定程序MODI1.C中函数fun的功能是:在p所指字符串中找出ASCII码值最大的字符,将其放在第一个位置上;并将该字符前的原字符向后顺

34、序移动。例如,调用fun函数之前给字符串输入:ABCDeFGH, 调用后字符串中的内容为:eABCDFGH。#include fun( char *p ) char max,*q; int i=0; max=pi; while( pi!=0 ) if( maxp ) *q=*(q-1); q-; p0=max;main() char str80; printf(Enter a string: ); gets(str); printf(nThe original string: ); puts(str); fun(str); printf(nThe string after moving: );

35、 puts(str); printf(nn);这道题的第二个/*found*/ 下一行 wihle( qp ),做题过程中会发现while关键字不是蓝色的,再仔细观察发现写错了,字母h和i写反了。第一个错误也是常见的错误, q=p+i后面忘记分号,分号是代表语句的结束。运行检验结果。22、给定程序MODI1.C中函数fun的功能是:利用插入排序法对字符串中的字符按从小到大的顺序进行排序。插入法的基本算法是:先对字符串中的头两个元素进行排序。然后把第三个字符插入到前两个字符中,插入后前三个字符依然有序;再把第四个字符插入到前三个字符中,。待排序的字符串已在主函数中赋予。#include #inc

36、lude #define N 80void insert(char *aa) int i,j,n; char ch;/*found*/ n=strlen aa ; for( i=1; i=0) & ( chaaj ) aaj+1=aaj; j-; aaj+1=ch;main( ) char aN=QWERTYUIOPASDFGHJKLMNBVCXZ; int i ; printf (The original string : %sn, a); insert(a) ; printf(The string after sorting : %snn,a );这道题两个错误也是经常出现的, 第二处错误在 c=aai;仔细找发现根本没有定义变量c,而是定义了变量ch,这就是变量名写错了,把c改成ch就可以了,第一处错误 n=strlen aa ;求字符串长度函数strlen后面的参数要加对小括

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁