第一篇:二级C语言上机题库_南开100题
工作感受心得
我是体育部的部委李盟,在加入我们学校学生会体育部不久后加入前湖礼仪工作组,担任出礼仪的工作.在我出礼仪工作的工程中,收获很多,体会也很多 ,丰富了我在学生会的工作经验,同时也更加丰富了我在学生时代的人生经验,收获的不只是在学生会工作的工作经验,也有在以后到社会上工作的经验.有的人认为出礼仪的工作只是穿着西装站在那里,笔直的站着,但其实不是那样的.但是那样确是我们礼仪工作人员的基本要求.我们既然是出礼仪就要有当礼仪的样子.表现出你文明礼貌的一面.首先,你的形象,便反映出你对他人的尊敬.因而你的衣着要整洁,干净,领带要打正,穿西装的时候要穿深色的袜子,工作证要正戴在你的胸前........等等一些关于个人衣着的基本要求.接着就是要战好,欢迎前来的领导,老师,同学,这是我们体会最深的一个过程,就好象军训的时候站军姿一样,要笔直的站好体现出你的精神面貌,不可以东歪西晃,不可以有小动作,面部表情自然.这一站少的二十,三十分钟,多了就一两个小时,甚至有人站了六个小时一动不动,那种痛楚是可以想象到的.这是就考验我们个人的定力与毅力的时候了.我们被选出来参加礼仪工作,这既是一种荣誉,同时也是一份责任,甚至可以说这个时候,你不单是代表你个人,从某种程度上来说更加代表了我们学生会的工作人员的精神面貌.因此我们的坚持是必须的更加是值得的.我们的工作不单单是只有在入场和撤场的时候站在那里欢迎大家的到来和离开,再忙完了站岗后,我们有时还要担任维护现场秩序的职责.有时后来了好多人,在会上如果你讲一句,他讲一句即使是在讲的好的时候的喝彩也会使会场很乱,演讲的人可能会因为他人的不礼貌之处而受到影响.这时候就要我们出来维护现场的秩序,我们一定秉着公正的原则,用礼貌的方式去来维护现场的秩序,不能因为我和谁认识就庇护他,也不能因为他上级就畏惧他.有的时候有些人的反映方式会很难让人接受,我们仍然会礼貌的去告诉他因为我们是礼仪工作人员我们是学生会的工作人员,我们的目的就是为同学服务.在我工作的这几次的经历中,带给我的除了汗水,充实的感觉外,更多的是工作的宝贵的经验和我做事的原则.我很荣幸能够加入这一个工作队伍,带给我太多太多.那些宝贵的经验都将是我以后工作时宝贵财富,做事的指导.感谢这一平台所带给我的一切.
第二篇:2018年3月二级C语言上机题库及答案
程序填空题:
给定程序中,函数fun的作用是:
注意:部分源程序在文件BLANK.C中。不得增行或删行,也不得更改程序的结构!
源程序如下
答案:
(1)x[i]<=’9’(2)j++(3)‘ ’
程序修改题:
给定程序中,函数fun的作用是:已知正整数n(规定n小于50000),统计它包含的0的个数,以及各位上最大的数。最大的数通过函数返回,0的个数通过形参传回。
注意:部分源程序在文件MODI1.C中。
不要改动main函数,不得增行或删行,也不得更改程序的结构!
源程序如下
答案:
t=0改为t==0 zero=count;改为*zero=count;
程序设计题:
请编写一个函数fun,它的功能是:比较一个数组中奇数的个数与偶数的个数,并计算个数多的数的算术平均数。
注意:部分源程序在文件PROG1.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
答案:
第三篇:二级C语言上机题做法小结
二级C语言上机题做法小结
陈忠权 记
一.天空题。
1.如果是填函数的返回值,去看return返回值的类型,就是函数的返回类型。如果return找不到,就看函数的调用。
2.在for语句中,如 for(i=0;i<=_____;i++),一般填N,如果没有N,有小n,就填小n.3.平均值的两种求法,一种是中数除个数,如s/N;一种是每个数除个数后再把值相加。如av=av+s[i]/N.4.在while语句中,下面一定会有个什么加加,否则不能进行循环。
5.在循环结构中注意两级循环for语句中i与j的关系,从而定位该填什么。
6.如果是赋初值,就看你所赋的值的变量是拿去干什么,如果是用去加就赋0如果是用去乘就赋1.如果是指针的,就去题目中找一个类型相同的具有实值的变量赋给她.7.结构体的调用如b.name和a.sno等。
8如果在题目中看到(*ss)那么后面一定是填一个数组,如(*ss)[][M]或(*ss)[M].9.注意拷贝命令的写法。
10如果在填空题中程序与数的组合有关,哪就会与10有关。是除10,还是与10求余。11.一个字符要变成相应的整形的数,就让这个字符减去字符’0’或是48就可。
12.带头结点的写法如p->next.13.定义文件FILE,文件名filename,打开文件fopen()阅读文件名fread()关闭文件fclose()
14.奇数与2求余成立,偶数与2求余为0 15.插入的写法和删除的写法,删除一个东西就让他等于0就行
二.改错题(在/*********found*********/下一行就是错误点)
1.只要看到(*ss)++就一定是去括号。
2.注意函数内的变量,如果在题中使用时带有*号,那么变量定义中一定要加上*号。注意函数类型是否正确,看return。
3.看关键字是否写正确,一定要是蓝体的才是正确的。有可能是字母位置错,或是大小写不对。
4.for语句中一定是两个分号,不是逗号。
5.字符串的长度比下标大一,如果要让她等于下标的话要减去1.6.在if语句中大于、小于号一般互换,如果在公式中如果包含n或m就要小于等于n或m。7.等号一般在if语句中出现为==,不是赋值的=.8.在if或while与句中< > 号一般可互换。9.注意错处得0和O是否混用了。10.注意带头结点的写法。11.%号和/号互换。
12.注意题中大小写的错误。13.注意交换的写法.14.如n=strlen[aa] 这种写法是错的,这是调用,不是定义,应写为n=strlen(aa)
15.注意符号使用的错误。
16.看是否少分号。
17看函数的返回值是否正确,看return。18.sum一般赋初值为0.19.Scanf语句中一定要有&号。
20.函数的定义不能是fun(int x,y,z)这种写法,应是fun(int x,int y,int
z)21.数组的定义一般为s[M]或s[][M]在二维数组的定义中第二个方括号中一定要有一个数M或其他。
22.如果程序是把小写变成大写就减去32就行。
三.程序编写题。
如果遇到的是void无返回值类型的函数,就在里面填int czq=1;就行。填好之后就编译,运行。程序完整运行之后,去打开考生文件夹(用记事本打开,如果记事本不能用,就用vc++6.0软件打开),参照in文件(如果没有in文件,哪么数据就可能在程序中,或运行中显示出来)修改out文件或写out文件。保存就可。
如果是有返回值类型的函数,就在里面填return 1;就行,同样运行,修改或写out文件就行。
下面举两个例子;
1,。如第10题:
#include
}
main(){ char s[81];int n;
printf(“Enter a string:n”);gets(s);
printf(“Enter n : ”);scanf(“%d”,&n);
fun(s,n);
printf(“The string after deleted:n”);puts(s);
NONO();} NONO(){/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/
FILE *in, *out;
int i, n;char s[81];
in = fopen(“D:k0124010001in.dat”,“r”);
out = fopen(“D:k0124010001out.dat”,“w”);
for(i = 0;i < 10;i++){
fscanf(in, “%s”, s);
fscanf(in, “%d”, &n);
fun(s,n);
fprintf(out, “%sn”, s);
}
fclose(in);
fclose(out);考试就在fun函数中填int czq=1;然后运行结束后打开考生文件夹,in为 *******A*BC*DEF*G**** 4 *******A*BC*DEF*G**** 8 **********LKJFHG****KHJ***SDFGH****KJKJ*J*K*K*J***** 4 ******OGH*GKLJ*LKJ*LKJ*KLKJHG*DQ*LJ*KJ***** 5 ********HJJKD***JHHKJH*DGH*TDFHG*TYRYTRIU*JGJ********** 3 *****HKHJLKH***GUHHJ*GFHJ**GJHK***GJKGK****KHKLHKJHKJ*** 2 ******JHGDFXGGJH****JFHGFK**HKH**KJHKL***KLH*** 3 ************UYKJDFARTQYW*****HFGUJ**KJHKJ**KJHK*** 4 ********JKHILUHIUGCLKLKJGH*******HJGHG**KJH**JY*JH*M*HJH**** 3 *****JKH***GHJK*JHGG*GGJK*GJKG*GKJ*GH*GK*JK***** 2 打开out文件为;
*******A*BC*DEF*G**** *******A*BC*DEF*G**** **********LKJFHG****KHJ***SDFGH****KJKJ*J*K*K*J***** ******OGH*GKLJ*LKJ*LKJ*KLKJHG*DQ*LJ*KJ***** ********HJJKD***JHHKJH*DGH*TDFHG*TYRYTRIU*JGJ**********
*****HKHJLKH***GUHHJ*GFHJ**GJHK***GJKGK****KHKLHKJHKJ*** ******JHGDFXGGJH****JFHGFK**HKH**KJHKL***KLH*** ************UYKJDFARTQYW*****HFGUJ**KJHKJ**KJHK***
********JKHILUHIUGCLKLKJGH*******HJGHG**KJH**JY*JH*M*HJH**** *****JKH***GHJK*JHGG*GGJK*GJKG*GKJ*GH*GK*JK*****
然后参照题目要求,是使字符串的前导*号不能多于n个,多于的就删掉,少的就不用管。哪么in文件中不是有数字如4、8、4、5、3等这就是n的值。如第一行就是前导*号不能多于4个,多的就删掉。第一行该为: ****A*BC*DEF*G**** 同样的我们把所有的改完为; ****A*BC*DEF*G****
*******A*BC*DEF*G**** ****LKJFHG****KHJ***SDFGH****KJKJ*J*K*K*J***** *****OGH*GKLJ*LKJ*LKJ*KLKJHG*DQ*LJ*KJ***** ***HJJKD***JHHKJH*DGH*TDFHG*TYRYTRIU*JGJ********** **HKHJLKH***GUHHJ*GFHJ**GJHK***GJKGK****KHKLHKJHKJ*** ***JHGDFXGGJH****JFHGFK**HKH**KJHKL***KLH*** ****UYKJDFARTQYW*****HFGUJ**KJHKJ**KJHK*** ***JKHILUHIUGCLKLKJGH*******HJGHG**KJH**JY*JH*M*HJH**** **JKH***GHJK*JHGG*GGJK*GJKG*GKJ*GH*GK*JK***** 这样改完以后,保存就行了,40分就拿到手了。
2.如第2题;
#include
N typedef struct { char
num[10];
int
s;} STREC;int fun(STREC *a,STREC *b,int l, int h){ return 1;
}
main(){ STREC s[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}};
STREC h[N],tt;FILE *out;
int
i,j,n,low,heigh,t;
printf(“Enter 2 integer number low & heigh : ”);
scanf(“%d%d”, &low,&heigh);
if(heigh< low){ t=heigh;heigh=low;low=t;}
n=fun(s,h,low,heigh);
printf(“The student's data between %d--%d :n”,low,heigh);
for(i=0;i printf(“%s %4dn”,h[i].num,h[i].s); printf(“n”); out = fopen(“D:k0124010001out.dat”,“w”); n=fun(s,h,80,98); fprintf(out,“%dn”,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,“%4dn”,h[i].s); fprintf(out,“n”); fclose(out);} 由于是有返回值的就在程序中填return 1;就同样运行,打开考生文件夹为; 发现没有in文件,只有out文件为; 1-858993460 很显然数据在程序中为: STREC s[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}};在看看题目是要我们找一个分数段的人数返回,和输出在这个分数段的分数,按从小到大的输出。那么我们可以在程序中看出为: n=fun(s,h,80,98);看出是找80到98这个分数段的人数及分数。 哪么从小到大的输出在这个分数段的分数从什么看出了?看一下语句: if(h[i].s>h[j].s){tt=h[i];h[i]=h[j];h[j]=tt;}看到了,如果大于就交换,哪么是不是把小的放在前面了? 在看看发printf语句为: fprintf(out,“%dn”,n)一般我们要看输出格式,如(”%4d”)格式就得注意空格换行等,那么我们可以在out文件中删除所有东西后写入如下: 8 85 85 85 87 90 91 94 96 我们可以看出8是这分数段的人数,其他为在这分数段的分数排序写法。做到这里点击记事本,文件、保存就行。 具有三种题型:程序填空、程序修改和程序设计,其中程序填空30分,程序修改30分,程序设计40分。[1]从以往的机试的情况来看,许多考生在程序设计题目上失分比较严重,而程序设计题占总分值的40%,一旦答错,如果程序填空和程序修改又不能取得满分的话,就不能通过上机考试。 2007年9月,教育部考试中心对现有的全国计算机等级考试大纲进行了改革,二级C语言上机考试时间由60分钟增加到了90分钟,编程环境由以前的TC2.0改为VC++6.0。[2]本文根据对近几年来二级C语言上机考试中的程序设计题进行归类总结,提出相应的策略,并对考生应对2007新大纲以后的C语言上机环境给出一些建议。2 对以往考试的分析 历年的全国计算机等级考试中二级C语言上机考试程序设计题目全部出自于由南开大学出版社编写南开100题,每次考试教育部考试中心会对题库做相应的改动,增加一些新的题型或题目,考试中,考生随机抽取一套进行测试。笔者对2005年4月至2007年9月2004版新大纲以后的6次考试中的程序设计题目进行了总结,将这些题目一共分成了6大类,对每种类型的题目进行了分析。2.1 对一维数组和字符串的操作 该类型的题目在以往的机试中所占比例最大,为40%,考生应对该知识点做全面的复习和掌握。一维数组可以分为数值型和字符型,其中数值型数组的数据类型为整型和实型,字符型数组的数据类型为字符型,我们通常会把字符型数组叫做字符串,但是应该注意字符型数组与字符串之间是存在区别的,也就是’ ’结束标志问题。在复习该部分的时候,考生应该掌握以下两个问题:(1)对一维数组的操作 对一维数组进行操作的时候,不可避免的要访问相关的数组元素,在C语言中访问数组元素一般采取单层循环的方法进行遍历,假设数组长度为n,数组下标是在0到(n-1)之间的,考生应该牢固掌握在一维数组中求最大值、最小值,移动元素,查找特定值,存储数组元素的方法。 (2)对字符串的操作 该类问题是每次考试的重点和难点,特别是将字符串同指针结合起来以后,难度就更大了。考生在解决此类问题是应特别注意字符串的结束标志’ ’,它不仅仅用来作为字符串的结束标志,而且在对字符串进行操作的时候,它也是循环的结束标志。考生在复习该部分的时候,应该注意这样的几个基本问题:大小字母转换、奇偶数判别、删除或添加指定的字符和字符的移动。此外,考生应该牢固掌握指针的特性及字符串操作函数的使用和实现方法,特别是字符串连接函数与求子串函数,在以往的考试中多次要求考生自己编写,考生应对该知识点做重点掌握。2.2 数值计算 该类型的题目在历年的机试中占22%,考查的机率也非常高。该类题目一般给定一个数列计算公式,然后要求考生编写一个函数类实现求数列的前n项的值、累加和或者积。在解决该类的问题,首先要找到给定数列的变化规律,然后根据其变化规律来编写一个单层或者双层的循环来求其相应的值。在编写程序的过程中,往往还会用到一些数学函数,如:sqrt()、fabs()、pow()等,考生应该牢固掌握math.h中的一些常用数学函数的功能和使用方法。另外,还应该注意数据类型之间的区别,特别是float和int类型,不同的数据类型产生的运算结果也是不一样的。2.3 对结构体的操作 该部分对非计算机专业的学生来说是一个难点,因为结构体在《数据结构》这门课程中应用最为广泛,但考生忽视对该知识点的复习,但在以往的机试中,有17%的题目是属于该类型。考生在复习这部分的时候,首先应注意结构体成员的两种不同的引用方法:结构体变量和指向结构体的指针,也就是结构体成员运算符’.’和指向运算符’->’,在编程的过程中,往往会涉及到结构体数组,其实这类数组除了数据类型是结构体以外,其它的特性和普通数组是一样的,结构体除了定义、赋值和初始化以外,它的其它操作和普通变量也是一样的,包括在结构体数组(记录)中进行查找、删除、求最大最小值等操作,我们应该用对待普通变量的方法来解决结构体的问题,这样的话,难度就可以大幅度的降低。2.4 对二维数组的操作 该类问题在历年的机试中占16%,考生应对二维数组的数组元素的遍历方法、存储方式、矩阵转换等问题做重点掌握。在C语言中,访问二维数组的数组元素一般采用双层循环的方法实现,因为二维数组具有两个下标:行下标与列下标;二维数组可以按行或者按列转化成一维数组进行存储;对二维数组进行行列转换的时候,要将行下标和列下标进行互换。考生还应该掌握上三角矩阵、下三角矩阵的特性,在考试中,该知识点也有所涉及。2.5 数制转换 该部分在以往的机试中占11%,包括两类问题:一是整数合并,二是类型转换。在复习该部分时,考生应该注意C语言中int型、long型、float型和double型数据所占的存储空间的大小和精度,注意’%’(模)运算和’/’(除法)运算的特点,特别应该灵活的使用模运算与除法运算求数据相应位数上的数值。掌握强制类型转换的方法以及按规定的位数保留小数的方法。2.6 素数 该部分在历年的机试中占6%,考生应该牢固掌握素数的基本概念和判断素数的方法。特别需要考生注意的是整数1不是素数,所以在判断素数的时候,应该从2开始,到(n-1)结束,能够除尽的不是素数,不能除尽的是素数。判断素数问题是C语言中的一个基本算法,不仅会在程序设计中会考到,而且往往在程序填空和程序改错中也会有所涉及,因此,考生应对该知识点认真复习。3 程序设计中应注意的问题 3.1 熟悉编程环境 根据2007年9月教育部考试中心颁布的新大纲,二级C语言的编程环境由TC2.0改为VC++6.0,考生应该熟练掌握VC++6.0的使用方法,虽然VC支持鼠标操作,但是考生还是应该掌握几个常用快捷方式来提高编程效率。特别要注意在对程序进行改动以后要保存,要进行编译连接生成可执行(.exe)文件。3.2 养成良好的程序设计风格 二级C语言机试中的程序设计题,一般来说程序都比较简短,源代码一般不超过5行,在题目指定的函数内编写程序。考生在答题的时候尽量采用易于理解而且比较简单的代码来解决问题,注意不要改动函数的参数,语句的界符“{}”也应该具有层次性的缩进,必要时,使用一定的注释来帮助自己理解程序。3.3 谨慎使用指针 指针是C语言的精华,也是机试考查的重点内容,指针的使用非常灵活,在使用的指针的时候一定要注意对其进行初始化,所谓初始化也就是给指针一个初值,没有初值的指针是很危险的,除了一定得不到正确答案外,如果指针越界,容易引起死机。如果死循环带来的死机是“假死”,大部分可以用“Ctrl+Break”来恢复,但指针越界引起的死机却是真死,请考生一定要牢记。[3] 3.4 熟练掌握循环结构 循环结构的程序是程序设计中涉及最多的知识点,根据以上的分析,我们可以看出几乎每一类题目都会涉及到使用循环来解决问题,因此考生应该掌握循环结构的特征和使用方法,以达到能够熟练使用的目标。应该引起注意的是,在编制循环结构程序的时候考生应该尽量使用“for”循环和“while”循环,避免使用“do……while”循环和“goto”语句,因为“for”循环和“while”编写出来的循环程序易于理解,不容易出错。3.5 沉着应战,认真细心 二级C语言上机考试时间有限,虽然从以前的60分钟改为了90分钟,但是相对于其它语种的上机考试来说,二级C语言的上机时间还是非常紧迫的。考生在答题的过程中应该保持一个良好的心态和平静的心情,遇到问题的时候不能慌乱,最好能够在机试时带一张草稿纸和一支笔,在编程之前先画出程序的流程图来明确解题思路。在遇到程序错误时一定要根据错误代码检查相应位置,检查的过程中应该认真仔细,确保能够解决问题。4 结束语 二级C语言上机考试是各语种级别中考生最多的,但每年的通过率都不高,主要的原因是考生的重视程度不够,上机操作的次数过少,很多应该掌握的却没有掌握,缺乏考试经验等。希望每位参加考试的考生能认真对待,积极备考。相信本文能够助参加二级C语言上机考试的考生一臂之力。 全国计算机二级C语言考试上机题型总汇 (一)关于“******”问题 1、将字符串中的前导*号全部删除,中间和后面的*号不删除。void fun(char *a){ char *p=a;while(*p= =’*’)p++;for(;*p!=’ ’;p++,a++)*a=*p;*a=’ ’;} 2、只删中间* int i;for(i=0;a[i]= =’*’;i++)for(;h 3、只删尾* while(*a!=’ ’)a++;a--;while(*a= =’*’)a--;*(a+1)=’ ’; 4、只留前* int i , j=0;for(i=0;a=’*’;i++);j=i;for(;a;i++)if(a!=’*’)a[j++]=a[i];a[j]=’ ’; 5、只留中间* int i,j=0;for(i=h;i第四篇:C语言二级上机考试要点总结
第五篇:计算机二级C语言上机题型总结