江苏省计算机二级(C语言).ppt
25页江苏省计算 机二级(C 语言)试题及分值分布分析:一、计算机基础知识20分)二、C语言程序设计40分)1、选择题10分)2、填空题30分)三、C语言上机试题40分) 本次讲解重点在于第二部分和第三 部分等级评判标准:考试成绩分为两个部分,即笔试 占60分,上机占40分60分以上为合 格,85分以上为优秀,且两部分均需达 到以上标准即笔试成绩达到36分,上 机成绩达到24分即为合格;笔试成绩达 到51分,上机成绩达到34分即为优秀 涵盖主要知识点分析:(第二、三部分 )几种基本数据类型整形,浮点型(单双) ,字符型)输入输出及格式控制符与转义字符运算符及其优先级与结合方式基本数学函数abs,fabs,pow,sin, cos,exp,sqrt,包含于math.h中)部分重要ASCII代码选择结构if,else与switch)循环结构for,while,do while,goto* ,break与continue)数组与指针函数的定义与调用递归)不同的变量动态变量与静态变量,全局变 量与局部变量)预处理命令宏与文件包含)字符串以字符数组形式表示与以字符指针 形式表示)结构体与链表。
共用体与枚举类型文件系统与其应用例1: 已知有声明“int a=0,b=4,c=5;”,以下表达式 中值为0的是: A: b B. if(a>b)c=a;a=b;b=c; C. if(a>b){c=a,a=b,b=c;} D. if(a>b){c=a;a=b;b=c;}B例5: 以下关于预处理命令的叙述中错误的是 A. 预处理命令由预处理程序解释 B. 程序中的预处理命令是以#开始的 C. 若在程序的一行中出现多条预处理命令,这 些命令都是有效的 D. 预处理命令既可以出现在函数定义的外部, 也可以出现在函数体内部C例6: 下列关于文件的叙述中正确的是: A.C语言中的文件是流式文件,因此只能顺序存 取文件中的数据 B.调用fopen函数时若用“r“或“r+“模式打开一个 文件,该文件必须在指定存储位置或默认存储位 置处存在 C.当对文件进行了写操作后,必须先关闭该文件 然后再打开,才能读到该文件中的第1个数据 D.无论以何种模式打开一个已存在的文件,在进 行了写操作后,原有文件中的全部数据必定被覆 盖B例7: 以下程序运行后输出到屏幕的结果是: #include void main() { int i=1,m=0; switch(i) {case 1: case 2: m++; case 3: m++; } printf(“%d”, m); }2例8: 以下程序运行后输出到屏幕的结果是: #include int fun(int *x, int n) { if(n==0) return(x[0]); else return x[0]+fun(x+1,n-1); } void main() { int a[]={1,2,3,4,5,6,7}; printf(“%d\n”, fun(a,2)); }6例9: 以下程序运行后输出到屏幕的结果是: #include union data { int i; char ch[2]; } a; void main() { a.ch[0]=13,a.ch[1]=1; printf(“%d\n”, a.i); }269例10:以下程序运行后输出到屏幕的结果是: #include enum color{BLACK,YELLOW,BLUE=3,GREEN,WHITE}; void main() { char *colorname[]={“Black”,“Yellow”, “Blue”, “Green”,“White”};enum color c1=GREEN,c2=BLACK; printf(“%s”,colorname[c1-c2]);} White例11: 以下程序运行后输出到屏幕的结果是:#includevoid fun(char *p1,char *p2);void main(){int i; char a[]=“54321“;puts(a+2);fun(a,a+4);puts(a);}void fun(char *p1,char *p2){char t;while(p1 int fun(int x) {static int c,y; if(c==0) y=1; else y=y+x; c++; return y; } void main() {int i; for(i=0;i void main() {long a,a1; char s[50]; int n=1; scanf(“%ld”, s[0]= ; a1=a=a>=0? a:-a; while( ) n++;; while(n) {s[n--]=; a=a/10; } printf(“%s”,s); }a>=0? ‘+’:’-’a1/=10 s[n+1]=‘\0’48+a%10例14: 设hl和h2分别为两个单链表的头指针,链表中结 点的数据结构为:typedef struct node{int data;struct node *next;}NODE; .sea_del 函数的功能是:删除hl指向的链表中首次出现的 与h2指向的链表中数据完全匹配的若干个连续 结点,函数返回hl指向链表的头指针。
试完善 函数sea_del以达到要求的功能NODE *sea_del(NODE *h1,NODE *h2){NODE *p,*ph,*q,*s;ph=NULL;p=q=h1; s=h2;if(h1==NULL||__ _ _) return h1;while(p!=NULLs= _ ___ ;}if(s!=NULL) /*失配时,h1起始结点后移,h2从首结点开始*/{ ph=p;p=q=p->next;s=__ ;}elseif(ph==NULL) h1=q;else ph->next=q; }__ __ ; }h2=NULLs->nexth2return h1上机注意事项与做法上机考试分为两部分,一为改错题,占16分, 一为编程题,占24分改错题中经常出现的错误(基本上总共四个错 误)有:函数的定义与调用出错(漏参数或返 回类型错误);字符两边不用单引号括住;% 与/混用;if,while,for等语句判断条件或参 数出错;字符串两边不用双引号括住;=与== 混用;输入输出语句中格式控制符出错;大于 和小于是应否取等号;对*a+1和*(a+1)的区分 ;预编译处理中漏掉包含文件或输错……做改错题的要点:1.要合理利用VC++软件自身的查错功能。
2.时间充足的情况下尽量读懂整个程序3.要合理利用示例来检验改正是否正确4.绝对不能大范围的改动整个程序,只允许进 行小规模变动,整体的算法思想更不可改动做编程题的要点:1.多读几遍题目要求2.要合理利用示例来检验改正是否正确3.注意保存文件名的正确4.要使用题目中要求使用的结构做编程题的技巧:1.绝大多数的编程题均需用到数组,少数会用 到字符串,尽可能多掌握几个常用的数组程序 ,如排序,查找,替换等2.编程题肯定要求保存至文件中,则最好记住 下面几句常用的语句: FILE *fp; fp=fopen(“myf2.out”,”w”); if(fp==NULL) {printf(“Can not open the file!\n”);exit(0);} fclose(fp);3.尽量能写多少写多少。





