计算机等级考试二级C语言上机填空题考点总结

合集下载

计算机等级考试二级C语言知识点

计算机等级考试二级C语言知识点

计算机等级考试二级C语言知识点必须牢牢掌握的概念总体上必须清楚的:1)程序结构是三种: 顺序结构, 循环结构(三个循环结构), 选择结构(if 和switch)2)读程序都要从main()入口, 然后从最上面顺序往下读(碰到循环做循环,碰到选择做选择)。

3)计算机的数据在电脑中保存是以二进制的形式. 数据存放的位置就是他的地址.4)bit是位是指为0 或者1。

byte 是指字节, 一个字节= 八个位.5)一定要记住二进制如何划成十进制。

概念常考到的:1、编译预处理不是C语言的一部分,不再运行时间。

C语言编译的程序称为源程序,它以ASCII数值存放在文本文件中。

2、每个C语言程序中main函数是有且只有一个。

3、在函数中不可以再定义函数。

4、算法的是一定要有输出的,但可以没有输入。

5、break可用于循环结构和switch语句。

6、逗号运算符的级别最低。

第一章1)合法的用户标识符考查:合法的要求是由字母,数字,下划线组成。

有其它元素就错了。

并且第一个必须为字母或则是下划线。

第一个为数字就错了。

关键字不可以作为用户标识符号。

main define scanf printf 都不是关键字。

迷惑你的地方If是可以做为用户标识符。

因为If中的第一个字母大写了,所以不是关键字。

2)实型数据的合法形式:2.333e-1 就是合法的,且数据是2.333×10-1。

考试口诀:e前e后必有数,e后必为整数。

.3)字符数据的合法形式::'1' 是字符占一个字节,"1"是字符串占两个字节(含有一个结束符号)。

'0' 的ASCII数值表示为48,'a' 的ASCII数值是97,'A'的ASCII数值是65。

4) 整型一般是两个字节, 字符型是一个字节,双精度一般是4个字节:考试时候一般会说,在16位编译系统,或者是32位系统。

碰到这种情况,不要去管,一样做题。

2020年全国计算机等级考试二级C语言必考知识点总结【完美版】

2020年全国计算机等级考试二级C语言必考知识点总结【完美版】

C语言最重要的知识点总体上必须清楚的:1)程序结构是三种: 顺序结构、选择结构(分支结构)、循环结构。

2)读程序都要从main()入口, 然后从最上面顺序往下读(碰到循环做循环,碰到选择做选择),有且只有一个main函数。

3)计算机的数据在电脑中保存是以二进制的形式. 数据存放的位置就是他的地址.4)bit是位是指为0 或者1。

byte是指字节, 一个字节 = 八个位.概念常考到的:1、编译预处理不是C语言的一部分,不占运行时间,不要加分号。

C语言编译的程序称为源程序,它以ASCII数值存放在文本文件中。

2、define PI 3.1415926; 这个写法是错误的,一定不能出现分号。

3、每个C语言程序中main函数是有且只有一个。

4、在函数中不可以再定义函数。

5、算法:可以没有输入,但是一定要有输出。

6、break可用于循环结构和switch语句。

7、逗号运算符的级别最低,赋值的级别倒数第二。

第一章C语言的基础知识第一节、对C语言的基础认识1、C语言编写的程序称为源程序,又称为编译单位。

2、C语言书写格式是自由的,每行可以写多个语句,可以写多行。

3、一个C语言程序有且只有一个main函数,是程序运行的起点。

第二节、熟悉vc++1、VC是软件,用来运行写的C语言程序。

2、每个C语言程序写完后,都是先编译,后链接,最后运行。

(.c---→.obj---→.exe)这个过程中注意.c和.obj文件时无法运行的,只有.exe文件才可以运行。

(常考!)第三节、标识符1、标识符(必考内容):合法的要求是由字母,数字,下划线组成。

有其它元素就错了。

并且第一个必须为字母或则是下划线。

第一个为数字就错了2、标识符分为关键字、预定义标识符、用户标识符。

关键字:不可以作为用户标识符号。

main define scanf printf 都不是关键字。

迷惑你的地方If是可以做为用户标识符。

因为If中的第一个字母大写了,所以不是关键字。

【计算机二级考试C语言】重点+题库!必考知识点总结,包你过!

【计算机二级考试C语言】重点+题库!必考知识点总结,包你过!

【计算机⼆级考试C语⾔】重点+题库!必考知识点总结,包你过!全国计算机等级考试(National Computer Rank Examination,简称NCRE)是教育部考试中⼼主办,⾯向社会,⽤于考查应试⼈员计算机应⽤知识与技能的全国性计算机⽔平考试。

级别分为⼀⼆三四级,⼆级考试科⽬有:C语⾔程序设计,MS Office⾼级应⽤,Java语⾔程序设计等等。

今天主要介绍C语⾔程序设计考试相关内容及备考⽅法。

01题型分数分布(1)单项选择题,40 题,40 分(含公共基础知识部分 10 分);(2)程序填空题,3 ⼩空,18 分;(3)程序改错题,2 个错误,18 分;(4)程序设计题,24分。

02上机考试环境及使⽤的软件上机考试环境为 Windows 7 简体中⽂版,Visual C++ 6.003考试要求1、熟悉Visual C++6. 0集成开发环境。

2、掌握结构化程序设计的⽅法,具有良好的程序设计风格。

3、掌握程序设计中简单的数据结构和算法并能阅读简单的程序。

4、在Visual C++6. 0集成环境下,能够编写简单的C程序,并具有基本的纠错和调试程序的能⼒。

04考试内容⼀、C语⾔程序的结构1. 程序的构成,main函数和其他函数。

2. 头⽂件,数据说明,函数的开始和结束标志以及程序中的注释。

3. 源程序的书写格式。

4. C语⾔的风格。

⼆、数据类型及其运算1. C的数据类型(基本类型,构造类型,指针类型,⽆值类型)及其定义⽅法。

2. C运算符的种类、运算优先级和结合性。

3. 不同类型数据间的转换与运算。

4. C表达式类型(赋值表达式,算术表达式,关系表达式,逻辑表达式,条件表达式,逗号表达式)和求值规则。

三、基本语句1. 表达式语句,空语句,复合语句。

2. 输⼊输出函数的调⽤,正确输⼊数据并正确设计输出格式。

四、选择结构程序设计1. ⽤if 语句实现选择结构。

2. ⽤switch语句实现多分⽀选择结构。

计算机二级C语言上机题型总结

计算机二级C语言上机题型总结

计算机二级C语言上机题型总结一)“******”问题1、将字符串中的前导*号全部删除,中间和后面的*号不删除。

void fun(char *a){char *p=a;while(*p= =’*’) p++;for( ; *p!=’\0’;p++,a++)*a=*p;*a=’\0’;}2、只删中间*int i;for(i=0;a[i]= =’*’;i++)for( ;h<p;h++)if(*h!=’*’)a[i++]=*h;for( ;*p;p++)a[i++]=*p;a[i]=’\0’;3、只删尾*while(*a!=’\0’)a++;a--;while(*a= =’*’)a--;*(a+1)=’\0’;4、只留前*int i , j=0;for(i=0;a=’*’;i++); j=i;for( ;a;i++)if(a!=’*’)a[j++]=a[i];a[j]=’\0’;5、只留中间*int i,j=0;for(i=h;i<n-e;i++) a[j++]=a[i];a[j]=’\0’;6、只留尾*char *t=a;for( ; t<=p;t++)if(*t!=’*’)*(a++)=*t;for( ;t!=’\0’;t++)*(a++)=*t;*a=’\0’;7、*个数>n个,删多余的*;*个数<=n个,不做任何处理。

int i=0, k=0;char *p,*t;p=t=a;while(*t= =’*’){k++;t++;}if(k>n){while(*p){a[i]=*(p+k-n);i++;p++}a[i]=’\0’;}(二)移动问题1、若一维数组中有n个整数,要求把下标从p到n-1(p<=n-1)的元素平移到数组前面。

int i,j,t;for(i=p;i<=n-1;i++){t=w[n-1];for(j=n-2;j>=0;j--)w[j+1]=w[j];w[0]=t;}2、把下标从0到p(p<=n-1)的元素平移到数组最后。

计算机等级考试二级C语言高频考点(C语言部分)

计算机等级考试二级C语言高频考点(C语言部分)

计算机等级考试二级C语言高频考点(C语言部分)第一章C语言基本知识【考点1】C程序用C语言编写的程序称为C语言源程序,源程序文件的后缀名为“.c”。

源程序经编译后生成后缀名为“.obj”的目标文件,再把目标文件与各种库函数连接起来,生成“.exe”可执行文件。

C语言有三种基本结构:顺序结构、选择结构、循环结构。

【考点2】main函数又称主函数,是C程序的入口。

main后面跟一对小括号和一对花括号,花括号括起来的部分称为main函数的函数体。

一个C程序从main函数开始执行,到main函数体执行完结束,而不论main函数在整个程序中的位置如何。

每一个程序有且仅有一个main函数,其他函数都是为main函数服务的。

【考点3】存储形式计算机在电脑中保存数据是采用二进制形式,由0或1构成的二进制称为位(bit),八个位构成一个字节(Byte),1个Byte=8个bit。

二进制、八进制、十六进制转化为十进制采用乘法,十进制转化为二进制、八进制、十六进制采用除法。

数据的存放位置就是它的地址。

【考点4】注释是对程序的说明,可出现在程序中任意合适的地方,注释从“/*”开始到最近一个“*/”结束,其间任何内容都不会被计算机执行,注释不可以嵌套。

【考点5】书写格式每条语句的后面必须有一个分号,分号是语句的一部分。

一行内可写多条语句,一个语句可写在多行上。

【考点6】标识符是标识名字的有效字符序列,可以理解为C程序中的单词。

标识符的命名规则是:(1)标识符只能由字母、数字和下划线组成,字母区分大小写。

(2)标识符的第一个字符必须是字母或下划线,不能为数字。

C语言标识符分如下3类(1)关键字。

它们在程序中有固定的含义,不能另作他用。

如int、for、switch 等。

(2)预定义标识符。

预先定义并具有特定含义的标识符。

如define、include 等。

(3)用户标识符。

用户根据需要定义的标识符,符合命名规则且不与关键字相同。

全国计算机等级考试二级C语言上机考试题库及答案

全国计算机等级考试二级C语言上机考试题库及答案

第1套一、填空给定函数的功能是调用fun 函数建立班级通讯录。

通讯录记录每位学生的编号,姓名和电话号码。

班级的人数和学生的信息从键盘读入,每个人的信息作为一个数据块写到名为答案yfile5.dat的二进制文件中。

答案:1. STYPE 2. FILE3. fp二、修改先将在字符串s中的字符按正序存放到t串中,然后把s 中的字符按逆序连接到t串后面。

答案:1. for(i = 0 ; i < sl ;i++) 2. t[2*sl] =` 0`; 三、程序将两个两位数的正整数a,答案合并成一个整数放在c中。

合并的方式是:将a数的十位和个位数依次放在c数的千位和十位上,答案数的十位和个位数依次放在c数的百位和个位上。

*c=(a/10)*1000+(b/10)*100+(a%10)*10+(b%10);第2套一、填空从键盘输入若干行文本(每行不超过80个字符),写到文件答案yfile4.txt中,用-1作为字符串输入结束的标记。

然后将文件的内容读出显示在屏幕上。

文件的读写分别有自定义函数ReadText 和WriteText实现。

答案:*fw str str 二、修改从低位开始取出长整形变量s中的奇数位上的数,依次构成一个新数放在t中,高位仍放在高位,低位仍放在低位。

答案:long *t sl =sl*10;三、程序将两个两位数的正整数a,答案合并成一个整数放在c中。

合并的方式:将a数的十位和个位数依次放在c数的千位和十位上,答案数的十位和个位数依次放在c数的百位和个位上。

*c=(b/10)*1000+(a%10)*100+(b%10)*10 +(a/10);第3套一、填空将自然数1~10以及它们的平方根写到名为答案yfile3txt的文本文档中,然后再顺序读出显示在屏幕上。

答案:(1)fp (2)fclose(fp)(3)fname二、修改将n个无序整数从小到大排序。

答案:for(i=j+1;i<n;i++)p=i;三、程序将两个两位数的正整数a,答案合并成一个整数放在c中。

计算机二级考试C语言知识点总结

计算机二级考试C语言知识点总结

计算机二级考试C语言知识点总结计算机二级考试C语言知识点总结总体上必须清楚的:1)程序结构是三种: 顺序结构 , 循环结构(三个循环结构), 选择结构(if 和 switch)2)读程序都要从main()入口, 然后从最上面顺序往下读(碰到循环做循环,碰到选择做选择)。

3)计算机的数据在电脑中保存是以二进制的形式. 数据存放的位置就是他的地址.4)bit是位是指为0 或者1。

byte 是指字节, 一个字节 = 八个位.5)一定要记住二进制如何划成十进制。

概念常考到的:1、编译预处理不是C语言的一部分,不再运行时间。

C语言编译的程序称为源程序,它以ASCII数值存放在文本文件中。

2、每个C语言程序中main函数是有且只有一个。

3、在函数中不可以再定义函数。

4、算法的是一定要有输出的,他可以没有输入。

5、break可用于循环结构和switch语句。

6、逗号运算符的级别最低。

第一章1)合法的用户标识符考查:合法的要求是由字母,数字,下划线组成。

有其它元素就错了。

并且第一个必须为字母或则是下划线。

第一个为数字就错了。

关键字不可以作为用户标识符号。

main define scanf printf 都不是关键字。

迷惑你的地方If是可以做为用户标识符。

因为If中的第一个字母大写了,所以不是关键字。

2)实型数据的合法形式:2.333e-1 就是合法的,且数据是2.333×10-1。

考试口诀:e前e后必有数,e后必为整数。

.3)字符数据的合法形式::'1' 是字符占一个字节,"1"是字符串占两个字节(含有一个结束符号)。

'0' 的ASCII数值表示为48,'a' 的ASCII数值是97,'A'的ASCII数值是65。

4) 整型一般是两个字节, 字符型是一个字节,双精度一般是4个字节:考试时候一般会说,在16位编译系统,或者是32位系统。

计算机等级考试二级C语言上机填空题考点总结

计算机等级考试二级C语言上机填空题考点总结

天津光华教育 计算机二级C 编程题的解答!40分轻松几分钟搞定!
1 计算机等级考试二级C 语言上机填空题考点总结
2010-12-20
程序填空题
程序填空题分值为30分,是在一个完整的程序中挖出2~4个空让考生填写,所考查的内容一般是C 语言中最基础的内容。

1. 基本语句方面的知识点,如printf( )函数和Scanf( )函数的相关知识点。

2. 变量等的初始化,以作为累加器或累乘器。

3. 选择结构或循环结构语句的考查。

4. 函数的相关知识,如函数类型的定义、形参的定义,以及确定函数的返回值等。

5. 数组、指针、结构体等的应用。

全国计算机等级考试二级C语言附详解

全国计算机等级考试二级C语言附详解

以下选项中非法的字符常量是
A、’\102’ B、’\65’ C、’\xff’ D、’\019’
转义字符,即反斜杠加数字或字母的形式(例如'\n'是换行 符),转义字符本身就是一个字符。 C的\X后面是十六进制数 数字不需要以0开头的,以0开头了,0所代表的意义是指八进 制,例如01,是指八进制的1,八进制里是没有数字8和9的, 所以09是错误的,同理,D项的019错了 C以x开头代表了xff这个数是16进制,16进制里是有f的,数值 上等于十进制里的15 数字前什么都不加,例如A和B项,C语言默认为十进制。
软件设计包括概要设计和详细设计
软件详细设计--程序流程图(PDF)和PAD(问题分析图) 是过程设计的常用工具
数据流图(DFD图)是软件定义阶段结构化分析方法常 用的工具。
针对简单程序设计,以下叙述的实施步骤正确的是 A、确定算法和数据结构、编码、调试、整理文档 B、编码、确定算法和数据结构、调试、整理文档 C、整理文档、确定算法和数据结构、编码、调试 D、确定算法和数据结构、调试、编码、整理文档
指针的概念和应用 数组名本身就是地址,所以不需要用&符号。C选项不能对所 有元素赋值而是反复再给一个数值赋值且是死循环。D
有以下程序
#include <sthio.h> Main() {int a,b,k,m,*p1,*p2; k=1,m=8; p1=&k,p2=&m; a=/*p1-m; b=*p1+*p2+6; printf(“%d ”,a); printf(“%d\n”,b);
一个正确的算法可以有零个或者多个输入,必须有一个或者多 个输出
以下叙述错误的是 A、一个C程序可以包含多个不同名的函数 B、一个C程序只能有一个主函数 C、C程序在书写时,有严格的缩进要求,否 则不能编译通过 D、C程序的主函数必须用main作为函数名

2020年全国计算机等级考试二级C语言必考知识点总结【完美版】

2020年全国计算机等级考试二级C语言必考知识点总结【完美版】

2020年全国计算机等级考试二级C语言必考知识点总结【完美版】C语言最重要的知识点总体上必须清楚的:1)程序结构是三种:顺序结构、选择结构(分支结构)、循环结构。

2)读程序都要从main()入口,然后从最上面顺序往下读(碰到循环做循环,碰到选择做选择),有且只有一个main函数。

3)计算机的数据在电脑中保存是以二进制的形式.数据存放的位置就是他的地址.4)bit是位是指为或者1。

byte是指字节,一个字节=八个位.概念常考到的:1、编译预处理不是C语言的一部分,不占运行时间,不要加分号。

C语言编译的程序称为源程序,它以ASCII数值存放在文本文件中。

2、define PI 3.;这个写法是错误的,一定不能出现分号。

3、每个C语言程序中main函数是有且只有一个。

4、在函数中不可以再定义函数。

5、算法:可以没有输入,但是一定要有输出。

6、break可用于循环结构和switch语句。

7、逗号运算符的级别最低,赋值的级别倒数第二。

第一章C语言的基础知识第一节、对C语言的根蒂根基熟悉1、C语言编写的程序称为源程序,又称为编译单元。

2、C语言书写格式是自由的,每行可以写多个语句,可以写多行。

3、一个C语言程序有且只有一个main函数,是程序运转的出发点。

第二节、熟悉vc++1、VC是软件,用来运行写的C语言程序。

2、每一个C语言程序写完后,都是先编译,后链接,末了运转。

(.c---.obj---.exe)这个进程中注意.c和.obj文件时没法运转的,只有.exe文件才可以运转。

(常考!)第三节、标识符1、标识符(必考内容):合法的要求是由字母,数字,下划线组成。

有其它元素就错了。

而且第一个必须为字母或则是下划线。

第一个为数字就错了2、标识符分为枢纽字、预定义标识符、用户标识符。

枢纽字:不可以作为用户标识标记。

main define scanf printf都不是枢纽字。

利诱你的地方If是可以做为用户标识符。

计算机等级考试二级C语言常见知识点总结

计算机等级考试二级C语言常见知识点总结

计算机等级考试二级C语言常见知识点总结计算机等级考试二级C语言常见知识点总结总体上必须清楚的:1)程序结构是三种: 顺序结构, 循环结构(三个循环结构), 选择结构(if 和switch)2)读程序都要从main()入口, 然后从最上面顺序往下读(碰到循环做循环,碰到选择做选择)。

3)计算机的数据在电脑中保存是以二进制的形式. 数据存放的位置就是她的地址.4)bit是位是指为0 或者1。

byte 是指字节, 一个字节= 八个位.5)一定要记住二进制如何划成十进制。

概念常考到的:1、编译预处理不是C语言的一部分,不再运行时间。

C语言编译的程序称为源程序,它以ASCII数值存放在文本文件中。

2、每个C语言程序中main函数是有且只有一个。

3、在函数中不能够再定义函数。

4、算法的是一定要有输出的,她能够没有输入。

5、break可用于循环结构和switch语句。

6、逗号运算符的级别最低。

第一章1)合法的用户标识符考查:合法的要求是由字母,数字,下划线组成。

有其它元素就错了。

而且第一个必须为字母或则是下划线。

第一个为数字就错了。

关键字不能够作为用户标识符号。

main define scanf printf 都不是关键字。

迷惑你的地方If是能够做为用户标识符。

因为If中的第一个字母大写了,因此不是关键字。

2)实型数据的合法形式:2.333e-1 就是合法的,且数据是2.333×10-1。

考试口诀:e前e后必有数,e后必为整数。

.3)字符数据的合法形式::'1' 是字符占一个字节,"1"是字符串占两个字节(含有一个结束符号)。

'0' 的ASCII数值表示为48,'a' 的ASCII数值是97,'A'的ASCII数值是65。

4) 整型一般是两个字节, 字符型是一个字节,双精度一般是4个字节:考试时候一般会说,在16位编译系统,或者是32位系统。

计算机二级C语言100套上机填空题答案和

计算机二级C语言100套上机填空题答案和

填空题答案第1题答案第1处填空:n>1或1<n第2处填空:n-1第3处填空:1或1l或1L第2题答案第1处填空:n==0或0==n或!n第2处填空:n==1或1==n第3处填空:fun(n-1)+fun(n-2)或fun(n-2)+fun(n-1) 第3题答案第1处填空:n--或--n或n-=1或n=n-1第2处填空:s[i]=s[n]或*(s+i)=*(s+n)第3处填空:s[n]=t或*(s+n)=t第4题答案第1处填空:i<=n或n>=i第2处填空:||第3处填空:1.0或(double)1第5题答案第1处填空:r*r第2处填空:&x第3处填空:x第6题答案第1处填空:<=第2处填空:n++或n+=1或n=n+1第3处填空:return s或return (s)第7题答案第1处填空:n%10第2处填空:break第3处填空:break第8题答案第1处填空:&num[i]或num+i第2处填空:max<num[i]?或num[i]>max?第3处填空:num[i]!=0或0!=num[i]第9题答案第1处填空:(*a)++或++(*a)或*a=*a+1或*a+=1 第2处填空:(*b)++或++(*b)或*b=*b+1或*b+=1 第3处填空:upper,lower第10题答案第1处填空:max=a第2处填空:max=b第3处填空:max=c第11题答案第1处填空:1第2处填空:s[k]或*(s+k)第3处填空:c第12题答案第1处填空:tt[i]<='Z'或'Z'>=tt[i]第2处填空:32或'a'-'A'第3处填空:tt第13题答案第2处填空:2第3处填空:n%i==0或!(n%i)或0==n%i第14题答案第1处填空:*p或*p!='\0'或*p!=0第2处填空:i++或++i或i+=1或i=i+1第3处填空:'\0'或0第15题答案第1处填空:!=第2处填空:str[1]或*(str+1)第3处填空:s,c第16题答案第1处填空:n%100!=0或n%100或0!=n%100 第2处填空:n%400==0或!(n%400)或0==n%400 第3处填空:flag第17题答案第1处填空:n第2处填空:else第3处填空:a,b第18题答案第1处填空:*p==t或t==*p第2处填空:bb[n++]=i第3处填空:n第19题答案第1处填空:score[i]或*(score+i)第2处填空:below第3处填空:below[i]或*(below+i)第20题答案第1处填空:i第2处填空:j第3处填空:aa,&n第21题答案第1处填空:j++或++j或j+=1或j=j+1第2处填空:s[i]=t1[i]第3处填空:j第22题答案第1处填空:&&第2处填空:0第3处填空:s[j]或*(s+j)第23题答案第1处填空:int x[]或int*x第2处填空:sum+=x[i]或sum=sum+x[i]第3处填空:sum/n第24题答案第1处填空:a第2处填空:a第3处填空:b第25题答案第1处填空:n/2第2处填空:i第3处填空:a[n-i-1]第26题答案第1处填空:i=1第3处填空:--j或j-1第27题答案第1处填空:j=2第2处填空:i第3处填空:j第28题答案第1处填空:1第2处填空:s*i或i*s第3处填空:0第4处填空:s+fun(k)或fun(k)+s第29题答案第1处填空:0第2处填空:i<=x或x>=i第30题答案第1处填空:--i或i--或i-=1或i=i-1第2处填空:s[i]-'0'第3处填空:t*10+k或k+t*10或10*t+k或k+10*t第31题答案第1处填空:*(p1+i)或p1[i]或*(p1+i)!=0或p1[i]!=0第2处填空:*p2或p2[0]或*p2!=0或p2[0]!=0第3处填空:*p2++第32题答案第1处填空:sum+=x[i]或sum=sum+x[i]第2处填空:avg*1000或1000*avg第3处填空:(avg+5)/10或(5+avg)/10第33题答案第1处填空:1第2处填空:i第3处填空:a[p+i]或*(a+p+i)第34题答案第1处填空:bb[i]=0或*(bb+i)=0第2处填空:bb[5]++或++bb[5]或bb[5]=bb[5]+1或bb[5]+=1 第3处填空:p++;或++p;或p+=1;或p=p+1;第35题答案第1处填空:i<*num或*num>i第2处填空:n++或++n或n+=1或n=n+1第3处填空:*num=n第36题答案第1处填空:&&第2处填空:s[i]-'0'第3处填空:n第37题答案第1处填空:xx[i]%10第2处填空:bb[n++]=xx[i]第3处填空:n第38题答案第1处填空:n/100%10第2处填空:"yes!"第3处填空:"no!"第39题答案第1处填空:"%d",&n第2处填空:str2[i]=str1[i];第40题答案第1处填空:"%s",str1第2处填空:%c第3处填空:str2第41题答案第1处填空:"%ld",&n第2处填空:n=-n;或n*=-1;第3处填空:"%ld",n第42题答案第1处填空:*p或p[0]第2处填空:default:b[10]++;第3处填空:p++;或p+=1;或p=p+1;或++p; 第43题答案第1处填空:*p或*p!=0或0!=*p第2处填空:bb[*p-'0']++或bb[*p-'0']+=1 第3处填空:num[j]=bb[i]第44题答案第1处填空:0第2处填空:||第45题答案第1处填空:s1-i-1或s1-1-i第2处填空:2*s1或s1*2第46题答案第1处填空:*k第2处填空:s[i]>max或max<s[i]第3处填空:i第47题答案第1处填空:xx[i]%10第2处填空:bb[n++]=xx[i]第3处填空:n第48题答案第1处填空:n>0或0<n第2处填空:n%10+'0'或'0'+n%10第3处填空:str[i]='\0'或str[i]=0第49题答案第1处填空:disc<0或0>disc第2处填空:sqrt第3处填空:sqrt第50题答案第1处填空:s第2处填空:*p++第3处填空:*(p)或*p或*p!=0第51题答案第1处填空:x>y或y<x第2处填空:x>z或z<x第3处填空:y>z或z<y第52题答案第1处填空:"out52.dat","w"第2处填空:fputc(ch,fp)第3处填空:fclose(fp)第53题答案第1处填空:i第3处填空:p->next第54题答案第1处填空:*p1<*p2或*p2>*p1第2处填空:*p1>*p2或*p2<*p1第3处填空:'\0'或0第55题答案第1处填空:flag=1第2处填空:j%i==0或0==j%i或!(j%i)第3处填空:flag==1或1==flag第56题答案第1处填空:&&第2处填空:fputc(ch,fp1)第3处填空:fclose(fp)第57题答案第1处填空:double第2处填空:j第3处填空:1.0/t或(double)1/t第58题答案第1处填空:&n第2处填空:i=1第3处填空:f*=i或f=f*i或f=i*f第59题答案第1处填空:sum=0第2处填空:sum+=n或sum=sum+n或sum=n+sum第3处填空:ld第60题答案第1处填空:i<n或n>i第2处填空:j<n-1或n-1>j第61题答案第1处填空:bb[i]=0或*(bb+i)=0第2处填空:bb[i]+=score[i][j]或bb[i]=bb[i]+score[i][j]或bb[i]=score[i][j]+bb[i] 第62题答案第1处填空:"%c",&str[i]或"%c",str+i第2处填空:str[i]!='*'或*(str+i)!='*'第3处填空:"%c",str[j]或"%c",*(str+j)第63题答案第1处填空:STU第2处填空:h第3处填空:h第64题答案第1处填空:str1[i]!=''或''!=str1[i]第2处填空:i++或++i或i+=1或i=i+1第65题答案第1处填空:bb[i][j]=1第2处填空:bb[i][j]=0第66题答案第1处填空:j>i或i<j第2处填空:bb[j]=bb[j-1]第3处填空:break第67题答案第1处填空:p=str第2处填空:p[i]++或++p[i]或p[i]+=1或p[i]=p[i]+1第2处填空:'\0'或0第3处填空:*p++第69题答案第1处填空:<第2处填空:*p2或p2[0]第3处填空:str1第70题答案第1处填空:*(pstr+j)或pstr[j]第2处填空:pstr[j]或*(pstr+j)第3处填空:p第71题答案第1处填空:std[3]或std[]或*std第2处填空:PERSON第3处填空:std第72题答案第1处填空:N第2处填空:M第3处填空:bb[i]/N或*(bb+i)/N第73题答案第1处填空:bb[i][j]=0第2处填空:1第3处填空:j==n-1-i或j==n-i-1第74题答案第1处填空:*std或std[0]第2处填空:std[i].age第3处填空:第75题答案第1处填空:&n第2处填空:t*i或i*t第3处填空:s+t或t+s第76题答案第1处填空:i第2处填空:s[j]=s[i]第77题答案第1处填空:N-1第2处填空:bb[n++]=aa[i]第3处填空:i,bb[i]第78题答案第1处填空:fun(char s[],int n)或fun(char*s,int n) 第2处填空:j=0第3处填空:s[j]='\0'或s[j]=0第79题答案第1处填空:aa[i]%2==0或0==aa[i]%2或aa[i]%2 第2处填空:i<k或k>i第80题答案第1处填空:--i或i--或i-=1或i=i-1第2处填空:bb[j]=bb[i]第81题答案第1处填空:sum=0第2处填空:t[i][i]第2处填空:g*g*g==i或i==g*g*g第83题答案第1处填空:break;第2处填空:i++或++i或i+=1或i=i+1第3处填空:'\0'或0第84题答案第1处填空:&&第2处填空:i,j第85题答案第1处填空:[N]第2处填空:t[i][j]第3处填空:t[j][i]第86题答案第1处填空:N第2处填空:N-1第3处填空:0第87题答案第1处填空:&&第2处填空:g+第88题答案第1处填空:s[i]或s[i]!=0或0!=s[i]第2处填空:s[i]==ch或ch==s[i]第3处填空:return n第89题答案第1处填空:s[i]!='\0'或s[i]或s[i]!=0第2处填空:32或'a'-'A'第3处填空:i++或++i或i+=1或i=i+1第90题答案第1处填空:STU第2处填空:std[i].num第3处填空:std[i]第91题答案第1处填空:i=1,j=0或j=0,i=1第2处填空:bb[j++]=i第3处填空:return j第92题答案第1处填空:str[i+1]或str[i+1]!='\0'或str[i+1]!=0 第2处填空:str[i]=ch第93题答案第1处填空:aa[max]<aa[i]或aa[i]>aa[max]第2处填空:aa[min]>aa[i]或aa[i]<aa[min]第3处填空:aa[max]=aa[min]第94题答案第1处填空:i++或++i或i+=1或i=i+1第2处填空:s[j++]=s[i]第3处填空:s[j]='\0'或s[j]=0第95题答案第1处填空:0.0或0或(double)0第2处填空:n第3处填空:s第1处填空:aa[k++]=t或aa[k]=t,k++或aa[k]=t;k++第2处填空:i<j或j>i第97题答案第1处填空:break第2处填空:t[i]第3处填空:u[ul]第98题答案第1处填空:s[i]!='\0'或s[i]或s[i]!=0第2处填空:25第3处填空:1第99题答案第1处填空:j%i==0或!(j%i)或0==j%i第2处填空:flag==1或flag或1==flag第3处填空:aver/n第100题答案第1处填空:k=0第2处填空:||第3处填空:s[k]='\0'或s[k]=0改错题答案第1题答案第1处:IsPrime(int n);应改为IsPrime(int n)第2处:if!(n%i)应改为if(!(n%i))第2题答案第1处:int k=1;应改为int k=0;第2处:while(*p!=*q)应改为while(*p||*q)第3题答案第1处:s[j]=s[i];应改为s[j++]=s[i];第2处:s[j]="\0";应改为s[j]='\0';第4题答案第1处:void fun(char*s,int a,int b)应改为void fun(char*s,int*a,int*b)第2处:a++;应改为(*a)++;第3处:b++;应改为(*b)++;第5题答案第1处:a[i+1]=a[i];应改为a[i]=a[i+1];第6题答案第1处:for(i=2;i<m;i++)应改为for(i=2;i<=m;i++)第2处:y-=1/(i*i);应改为y-=1.0/(i*i);第7题答案第1处:p=j应改为p=j;第2处:p=i;应改为p=j;第8题答案第1处:void fun(char*p);应改为void fun(char*p)第2处:p=q+i;应改为q=p+i;第9题答案第1处:t=s[k];应改为t+=s[k];第2处:*aver=&ave;应改为*aver=ave;第10题答案第1处:void fun(char*s,*t1,*t2,*w)应改为void fun(char*s,char*t1,char*t2,char*w) 第2处:while(r)应改为while(*r)第11题答案第2处:n=n*7+*p-'o';应改为n=n*8+*p-'0';第12题答案第1处:a=NuLL;应改为a=NULL;第2处:if(r==p)应改为if(*r==*p)第13题答案第1处:t+=1.0/k;应改为t+=1.0/i;第2处:应填return t;第14题答案第1处:int r;应改为double r;第2处:while(fabs(n-m)<0.001)应改为while(fabs(n-m)>0.001)第15题答案第1处:void fun(char str,char ch)应改为void fun(char*str,char ch) 第2处:if(*str==ch)应改为if(*str=='\0')第3处:str[1]='0';应改为str[1]='\0';或str[1]=0;第16题答案第1处:p->next=NULL;应改为p=s;第2处:s->data=rand()%m;应改为s->data=rand()%(m-1);第3处:return p;应改为return h;第17题答案第1处:if((k%13=0)||(k%17=0))应改为if((k%13==0)||(k%17==0)) 第2处:应填}第18题答案第1处:void fun(int a,int b)应改为void fun(int*a,int*b)第2处:t=b;b=a;a=t;应改为t=*b;*b=*a;*a=t;第19题答案第1处:void fun(long s,long t)应改为void fun(long s,long*t)第2处:while(s<0)应改为while(s>0)第20题答案第1处:void fun(int a[],int m)应改为int fun(int a[],int m)第2处:if(m>=a[mid])应改为if(m>a[mid])第21题答案第1处:p=h;应改为p=h->next;第2处:p=h->next;应改为p=p->next;第22题答案第1处:for(i=2;i<m;i++)应改为for(i=2;i<=m;i++)第2处:y+=1/(i*i);应改为y+=1.0/(i*i);第23题答案第1处:int fun(n)应改为int fun(int n)第2处:if(n=1)应改为if(n==1)第24题答案第1处:if(r==p)应改为if(*r==*p)第2处:if(r=='\0')应改为if(*r=='\0')第25题答案第1处:if n==0应改为if(n==0)第2处:result=n--;应改为result*=n--;第26题答案第1处:应填sum=0;第2处:scanf("%d,",a[i][j]);应改为scanf("%d,",&a[i][j]);第27题答案第1处:t=0;应改为t=1.0;第2处:while(t<=eps)应改为while(t>=eps)第28题答案第2处:应填p++;或++p;或p+=1;或p=p+1第3处:a[i]='0';应改为a[i]='\0';或a[i]=0;第29题答案第1处:b=a;应改为a=b;第2处:return(a);应改为return(b);第30题答案第1处:long k;应改为long k=1;第2处:num\=10;应改为num/=10;第31题答案第1处:if((tt[i]>='a')||(tt[i]<='z'))应改为if((tt[i]>='a')&&(tt[i]<='z'))第2处:tt[i]+=32;应改为tt[i]-=32;第32题答案第1处:if(i+1%5==0)应改为if((i+1)%5==0)第33题答案第1处:while(*s!='@')应改为while(*s)或while(*s!='\0')或while(*s!=0)第2处:(*s)++;应改为s++;第34题答案第1处:t=0;应改为*t=0;第2处:if(d%2==0)应改为if(d%2!=0)第35题答案第1处:if(p=='')应改为if(*p=='')第2处:*p=toupper(*(p-1));应改为*(p-1)=toupper(*(p-1));第36题答案第1处:j=1;应改为j=0;第2处:while(t!=0&&m!=0&&n!=0)应改为while(t!=0||m!=0||n!=0)第37题答案第1处:*r=t;应改为r=t;或r=&t[0];第2处:应填r=t;或r=&t[0];第38题答案第1处:t=x;x=y;应改为t=*x;*x=y;第2处:return(y);应改为return(t);或return t;第39题答案第1处:void fun(char s,char t)应改为void fun(char*s,char*t)第2处:t[2*d-1]='\0';应改为t[2*d]='\0';或t[d+i]='\0';或t[2*d]=0;或t[d+i]=0;第40题答案第1处:for(i=j+1;i<n-1;i++)应改为for(i=j+1;i<n;i++)第2处:t=i;应改为p=i;第41题答案第1处:while(p->next)应改为while(p!=NULL)第2处:p=h->next;应改为p=p->next;第42题答案第1处:if(i%2&&s[i]%2==0)应改为if(i%2||s[i]%2==0)或if(i%2!=0||s[i]%2==0) 第2处:t[i]='\0';应改为t[j]='\0';或t[j]=0;第43题答案第1处:k=n;应改为k=i;第2处:b=k/10;应改为b=k%10;第44题答案第1处:fun(int**a,int m)应改为void fun(int(*a)[M],int m)第2处:a[j][k]=k*j;应改为a[j][k]=(k+1)*(j+1);第45题答案第1处:void fun(char*s,t1,t2,w)应改为void fun(char*s,char*t1,char*t2,char*w) 第2处:while(w)应改为while(*w)第1处:fun(int n)应改为double fun(int n)第2处:return sum应改为return sum;第47题答案第1处:void fun(int*a,int n);应改为void fun(int*a,int n)第2处:m=0;应改为m=i;第48题答案第1处:fun(char(*sq)[N])应改为char*fun(char(*sq)[M])第2处:return sq;应改为return sp;第49题答案第1处:*t=malloc(sizeof(STU));应改为t=(STU*)malloc(sizeof(STU)*m);第2处:t[k].num=b[j].num;应改为strcpy(t[k].num,b[j].num);第50题答案第1处:t[i]=s[s1-i];应改为t[i]=s[s1-i-1];或t[i]=s[s1-1-i];第51题答案第1处:void fun(char str[][],int m,char*pt)应改为void fun(char str[][10],int m,char*pt) 第2处:pt[i]=str[k,i];应改为pt[i]=str[k][i];第52题答案第1处:int fun(double x[],int n)应改为int fun(double x[],int n){第53题答案第1处:switch(g);应改为switch(g)第2处:case 1;应改为case 1:第54题答案第1处:double fun(char*s,char*t)应改为char*fun(char*s,char*t)第2处:(*ss)++;应改为ss++;第3处:(*tt)++;应改为tt++;第55题答案第1处:y=0;应改为y=1;第2处:d=i-a;应改为d=a-i;第56题答案第1处:void fun(char(*pstr)[6])应改为void fun(char*pstr[6])第2处:if(strcmp(*(pstr+i),pstr+j)>0)应改为if(strcmp(*(pstr+i),*(pstr+j))>0)第3处:*(pstr+i)=pstr+j;应改为*(pstr+i)=*(pstr+j);第57题答案第1处:while(i>j)应改为while(i<j)或while(j>i)第2处:c=0;应改为*c='\0';或*c=0;第58题答案第1处:for(i=0;i<=s1;i++)应改为for(i=0;i<s1;i++)第2处:t[s1]='\0';应改为t[2*s1]='\0';第59题答案第1处:void fun(char*s,int num[5]);应改为void fun(char*s,int num[5])第2处:num[i]=0;应改为num[k]=0;第3处:switch(s)应改为switch(*s)第60题答案第1处:if(i%k!=0)应改为if(i%k==0)第2处:if(k<i)应改为if(k>=i)第61题答案第1处:fun(int m)应改为double fun(int m)第2处:for(i=100,i<=m,i+=100)应改为for(i=100;i<=m;i+=100)第62题答案第1处:break应改为break;第63题答案第1处:i=1;应改为i=0;第2处:while(i<3||*p)应改为while(i<3&&*p)第3处:b[k]='';应改为b[k++]='';第64题答案第1处:c=c-32;应改为c=c+32;第2处:c=c-5;应改为c=c+5;第65题答案第1处:void fun(long s,long t)应改为void fun(long s,long*t)第2处:s1=s1*100;应改为s1=s1*10;第66题答案第1处:fun(int n)应改为double fun(int n)第2处:b+=c;应改为b=c;第67题答案第1处:fun(double a,double x0)应改为double fun(double a,double x0) 第2处:if(abs(x1-x0)>=1e-6)应改为if(fabs(x1-x0)>=1e-6)第68题答案第1处:return 1;应改为return 3;第2处:return 3;应改为return 1;第69题答案第1处:void upfst(char p)应改为void upfst(char*p)第70题答案第1处:int fun(int*b);应改为int fun(int*b)第2处:for(k=10;k<=55;k++)应改为for(k=1;k<55;k++)第3处:return k;应改为return i;第71题答案第1处:if k>1应改为if(k>1)第72题答案第1处:int fun(char*str,*substr)应改为int fun(char*str,char*substr)第2处:for(i=0,str[i],i++)应改为for(i=0;str[i];i++)第73题答案第1处:t=1.0-1/i;应改为t-=1.0/i;或t=t-1.0/i;或t-=(double)1/i;第2处:应填return t;第74题答案第1处:c=aa[i];应改为ch=aa[i];第75题答案第1处:int fun(int m,int xx[][])应改为int fun(int m,int xx[][M])第2处:printf("%4f",xx[i][j]);应改为printf("%4d",xx[i][j]);第76题答案第1处:long s1=0;应改为long s1=1;第2处:s\=10;应改为s/=10;第77题答案第1处:void fun(char a)应改为void fun(char*a)第78题答案第1处:k++应改为k++;第2处:if(m=k)应改为if(m==k)第79题答案第1处:c[t]="\0";应改为c[t]='\0';第80题答案第1处:fun(int n)应改为double fun(int n)第2处:s=s+(Double)a/b;应改为s=s+(double)a/b;第81题答案第1处:fun(int n)应改为double fun(int n)第2处:for(i=2;i<n;i++)应改为for(i=2;i<=n;i++)第82题答案第1处:result*=--n;应改为result*=n--;第2处:应填return result;第83题答案第1处:void fun(int x,int y)应改为void fun(int*x,int*y)第2处:t=x;x=y;y=t;应改为t=*x;*x=*y;*y=t;第84题答案第1处:void fun(int m,int k);应改为void fun(int m,int k)第2处:aa[i]=m/k;应改为aa[i]=m%k;第3处:printf("%d",aa[i]);应改为printf("%d",aa[i-1]);第85题答案第1处:s[j]=s[i];应改为s[j++]=s[i];第2处:s[i]='\0';应改为s[j]='\0';第86题答案第1处:float*k;应改为float k;第2处:if(*s<*p)应改为if(*s>*p)第87题答案第1处:void fun(int a)应改为void fun(int a[M])或void fun(int a[])或void fun(int*a) 第2处:a[j]=a[j+1];应改为a[j]=a[j-1];第88题答案第1处:for(i=0;i<=3;i++)应改为for(i=1;i<=3;i++)第2处:if(k>=1&&k<=6)应改为if(k>=0&&k<=6)第89题答案第1处:for(i=1;i<y;i++)应改为for(i=1;i<=y;i++)第2处:t=t/1000;应改为t=t%1000;第90题答案第1处:d=0;应改为d=1;第2处:s=1;应改为s=0;第3处:s=s/10;应改为d=d/10;第91题答案第1处:for(i=strlen(t);i;i--)应改为for(i=strlen(t)-1;i;i--)或for(i=strlen(t)-1;i>0;i--)第2处:if(t[j]<t[j+1])应改为if(t[j]>t[j+1])第92题答案第1处:long s=0,t=1;应改为long s=0,t=0;第2处:for(j=0;j<=n;j++)应改为for(j=0;j<n;j++)第3处:t=t%10;应改为t=t/10;第93题答案第1处:while(t>=num)应改为while(fabs(t)>=num)第2处:t=s%n;应改为t=s/n;第94题答案第1处:int sum=0.0;应改为double sum=0.0;第2处:sum\=c;应改为sum/=c;第95题答案第1处:s=s+(n+1)/n;应改为s=s+(double)(n+1)/n;第2处:return s;应改为return t;第96题答案第1处:fun(int k)应改为double fun(int k)第2处:return s应改为return s;第97题答案第1处:f(double x)应改为double f(double x)第2处:return s应改为return s;第98题答案第1处:#define FU(m,n)(m/n)应改为#define FU(m,n)(m)/(n)第2处:Return(value);应改为return(value);第99题答案第1处:int i,j,k,sum;应改为int i,j=0,k,sum; 第2处:if(sum%4=2)应改为if(sum%4==2) 第100题答案第1处:if(t=0)应改为if(t==0)第2处:zero=count;应改为*zero=count;。

全国计算机二级考试C语言(最全复习资料)——填空、改错题重点题型归类分析

全国计算机二级考试C语言(最全复习资料)——填空、改错题重点题型归类分析

全国计算机等级考试题型复习资料一、程序填空题【解析】该类型主要考察学员对一个C程序的整体把握能力。

首先须通读整个源程序,了解程序的功能后试着边填空边调试,分析输出结果,以找到正确答案。

因此,不像程序修改题那么简单。

【程序填空题的特点和注意事项】(1)程序填空的试题中通常包含三个空需要填写。

(2)试题中用"******found******/"来提示在下一行或下二行注明填空的位置及编号,如___1___。

(3)程序填空考核对程序的整体把握,出题点可能是:for循环语句的初始化或条件判断、函数返回值、if语句的条件判断、链表中指针如何移动、文件操作相关函数的参数等。

(4)特别要注意的是:只能在填空的位置填写语句或表达式,不要增行或删行,不要改动程序行的顺序,更不要改动程序的结构。

【建议答题步骤】(1)首先仔细审题,了解试题的要求,看清题目给出的输入和输出例示,以便检验程序运行的结果是否正确。

(2)审视"/******found******/"所在函数,根据题义理解程序所采用的基本算法,做到心里有数。

(3)填好空后对测试程序进行检查是否有语法错误。

当编译提示有语法错时,可参考编译提示来查找并改正错误。

(4)当不再出现语法错时,执行程序,按照试题的示例给出的数据进行试算,若试算的结果与给出的输出结果相同时,该题就做对了;若试算的结果与给出的输出结果不同,就应进一步检查程序中的逻辑错误。

(5)修改完成,得到正确结果后,一定不要忘记把修改后的程序存盘。

二、程序修改题【解析】该类型主要考察学员对C程序部分结构或算法的分析和理解能力。

因此,对学员的知识把握能力要求不高,通常可以借助计算机帮我们改错(仅限语法错误)。

若非语法错误,则需对程序边调试边找错,分析输出结果,找出错误所在并改正。

【程序填空题的特点和注意事项】(1)改错的试题中通常包含两个(或三个)错误需要修改。

(2)试题中用"******found******/"来提示在下一行(或下面第二行)有错。

二级C语言上机填空题技巧总结

二级C语言上机填空题技巧总结

上机填空题技巧总结一、填空题之方法1.上机填空题占30分,一般有3个空需要填写,每个空为10分;2.填空题做题之前必须弄清题目含义,抓住关键字,例如:要求对数组进行从小到大排序,则将会出现大于符号,如果是从大到小排序则出现小于符号;3.填空题中出现频率最高的就是函数的调用、函数的首部、函数的返回值等和函数相关的问题,因此必须牢牢掌握祝函数的基本特征;4.填空题中有的“空”比较难,考生除了掌握必须的C语言知识之外,还需要很好的逻辑思路,如果一个空将花很多时间来解决,那么建议使用“死记硬背”的方法来缩短复习时间;5.上机题库中100题有部分题目是重复的或是相似的题目很多,同学们要使用比对的方法尽量去理解;6.多练习,多思考,多总结二、填空题与结构体相关1.结构体成员引用:上机题库P18第9题(和92题一致),P27第23题(和51题一样)读清楚题目要求:(1)要求将形参a所指结构体变量的数据赋值给函数中的结构体变量b(2)从例如可以看出来:结构体中的学号和姓名变为了1002和“LiSi”,但是3门课成绩没有变化#include <stdio.h>#include <string.h>struct student {long sno;char name[10];float score[3];};void fun(struct student a){ struct student b; int i;/**********found**********/b = __1__;→题目要求将形参a的值赋值给结构体变量b,因此填:ab.sno = 10002;→学号变为了10002/**********found**********/strcpy(__2__, "LiSi");→姓名要变为”LiSi”,则要引用b中的name成员printf("\nThe data after modified :\n");/*讲解是一句带过不用多讲*/ printf("\nNo: %ld Name: %s\nScores: ",b.sno, ); /*讲解是一句带过不用多讲*//**********found**********/for (i=0; i<3; i++) printf("%6.2f ", b.__3__);→分析:这个是一个循环语句,执行3次循环,printf("%6.2f ", b.__3__)要求输出是一个实型数据的成员,因此可以得知是score成员,因为score是一个数组,因此填:b.score[i],当i变化就可以取出第一门、第二门、第三门课的成绩printf("\n");}main(){ struct student s={10001,"ZhangSan", 95, 80, 88};int i;printf("\n\nThe original data :\n");printf("\nNo: %ld Name: %s\nScores: ",s.sno, );for (i=0; i<3; i++) printf("%6.2f ", s.score[i]);printf("\n");fun(s);}23题:(1)从例如中可以看出:变化的是结构体中的学号和姓名#include <stdio.h>#include <string.h>struct student {long sno;char name[10];float score[3];};void fun( struct student *b){ int i;/**********found**********/b__1__ = 10004;→题目中t的学号变化为了10004,因此填写:b->sno,不能填写b.sno,因为b是一个指针/**********found**********/strcpy(b__2__, "LiJie");→t的姓名变为了”LiJie”,因此填写:b->name}main(){ struct student t={10002,"ZhangQi", 93, 85, 87};int i;printf("\n\nThe original data :\n");printf("\nNo: %ld Name: %s\nScores: ",t.sno, );for (i=0; i<3; i++) printf("%6.2f ", t.score[i]);printf("\n");/**********found**********/fun(__3__);→此处为函数调用,根据形参的类型来判定实参,形参struct student *b为结构体指针,联系main函数定义部分只有struct student t和b 的类型相同,因此可知需要填的是:&tprintf("\nThe data after modified :\n");printf("\nNo: %ld Name: %s\nScores: ",t.sno, );for (i=0; i<3; i++) printf("%6.2f ", t.score[i]);printf("\n");}2.函数调用and结构体:上机题库P22第16题(和78、82题一样)重点注意:(1)把a中地址作为函数返回值返回函数(2)观察可知a中的学号、姓名边为了10002和“zhangSan”,每门课的成绩增加了1分#include <stdio.h>#include <string.h>struct student {long sno;char name[10];float score[3];};/**********found**********/__1__ fun(struct student *a)→根据函数调用t = fun(&s);可知函数返回类型和t的类型相同,struct student s={10001,"ZhangSan", 95, 80, 88}, *t;可知t的类型为struct student *{ int i;a->sno = 10002;strcpy(a->name, "LiSi");/**********found**********/for (i=0; i<3; i++) __2__ += 1;→题目要求将每门课成绩增加1分,因此填为:a->score[i],不能为a.score[i]或是a.score/**********found**********/return __3__ ;→题目要求返回a的地址,a本身就是一个指针,因此填入a即可}main(){ struct student s={10001,"ZhangSan", 95, 80, 88}, *t;int i;printf("\n\nThe original data :\n");printf("\nNo: %ld Name: %s\nScores: ",s.sno, );for (i=0; i<3; i++) printf("%6.2f ", s.score[i]);printf("\n");t = fun(&s);printf("\nThe data after modified :\n");printf("\nNo: %ld Name: %s\nScores: ",t->sno, t->name);for (i=0; i<3; i++) printf("%6.2f ", t->score[i]);printf("\n");}3.结构体和排序:上机题库P14第2题重点注意:(1)排序的格式:红色部分为考试中的重点,必须记住从小到大排序: for(i=0;i<n-1;i++) for(j=i+1;j<n;j++) if(a[i]>a[j]) {t=a[i];a[i]=a[j];a[j ]=t;} 从大到小排序: for(i=0;i<n-1;i++)for(j=i+1;j<n ;j++) if(a[i]<a[j]) {t=a[i];a[i]=a[j];a[j ]=t;}void fun(struct student a[], int n) {/**********found**********/__1__ t;→此处要求填入t 的类型,可以从t = a[i];中得知t 和a 数组的类型必须一致,void fun(struct student a[], int n)中得知a 为结构体类型,因此填写:struct student int i, j;/**********found**********/for (i=0; i<__2__; i++)→根据排序的格式填空,因此记住是关键 for (j=i+1; j<n; j++) /**********found**********/if (strcmp(__3__) > 0)→按照姓名字典顺序从小到大排序,因此: strcmp(a[i].name,a[j].name),此处需要特别注意 { t = a[i]; a[i] = a[j]; a[j] = t; } }main(){ struct student s[4]={{10001,"ZhangSan", 95, 80, 88},{10002,"LiSi", 85, 70, 78},{10003,"CaoKai", 75, 60, 88},{10004,"FangFang", 90, 82, 87}};int i, j;printf("\n\nThe original data :\n\n"); for (j=0; j<4; j++){ printf("\nNo: %ld Name: %-8s Scores: ",s[j].sno, s[j].name); for (i=0; i<3; i++) printf("%6.2f ", s[j].score[i]); printf("\n"); }fun(s, 4);printf("\n\nThe data after sorting :\n\n"); for (j=0; j<4; j++){ printf("\nNo: %ld Name: %-8s Scores: ",s[j].sno, s[j].name); for (i=0; i<3; i++) printf("%6.2f ", s[j].score[i]); printf("\n"); } }三、填空题与链表相关1.带头结点的链表:p=h->next,上机题库P21第15题考点分析:(1)带头结点链表的表现形式:带头结点的链表,头结点head不存放任何的数据,从头结点的下一个结点开始存放数据,因此考试中如果出现 p = __1__ ;则填入p=h->next(2)链表数据排序对数组元素从小到大排序:for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j ]=t;}对链表元素进行从小到大排序:while (p) /*相当于数组排序中的for(i=0;i<n-1;)*/{q = p->next;/*相当于j=i+1*/while (q) /*相当于for(;j<n;){if (p->data > q->data) /*相当于if(a[i]>a[j])*/{ t = p->data; p->data = q->data; q->data = t; }/*如果a[i]>a[j]成立,则交换数据元素,让数据变成从小到大排序*/ q = q->next;/*相当于q++*/}p = p->next;/*相当于p++*/}15题:#include <stdio.h>#include <stdlib.h>#define N 6typedef struct node {int data;struct node *next;} NODE;void fun(NODE *h){ NODE *p, *q; int t;/**********found**********/p = __1__ ;→链表为带头结点,因此填写:p=h->nextwhile (p) {/**********found**********/q = __2__ ;→比较两个链表中元素的大小,因此q=p->next,这样q指向了p的下一位while (q) {/**********found**********/if (p->data __3__ q->data)—>从小到大排序,因此使用大于符号,填写:>{ t = p->data; p->data = q->data; q->data = t; }q = q->next;}p = p->next;}}main(){ NODE *head;int a[N]= {0, 10, 4, 2, 8, 6 };head=creatlist(a);printf("\nThe original list:\n");outlist(head);fun(head);printf("\nThe list after sorting :\n");outlist(head);}2.不带头结点的链表:p=h(1)不带头结点链表的表示形式:(2)讲解P38第42题(和15题类似)void fun(NODE *h){ NODE *p, *q; int t;p = h;→不带头结点的链表while (p) {/**********found**********/q = __1__ ;→q指向p的下一位,因此填入:q=p->next/**********found**********/while (__2__)→判断q有没有到末尾,因此填入p或是p!=NULL{ if (p->data > q->data){ t = p->data; p->data = q->data; q->data = t; }q = q->next;}/**********found**********/p = __3__ ;→ while (p)为循环条件,要构成循环p就得自加或是自减,从循环体中得知没有进行p++之类的操作,因此此处填入:p=p->next或是p++}}main(){ NODE *head;int a[N]= {0, 10, 4, 2, 8, 6 };head=creatlist(a);printf("\nThe original list:\n");outlist(head);fun(head);}3.链表的返回值:P43第50题(和43题类似)/**********found**********/__1__ fun(NODE *h)→根据函数调用head=fun(head);和 NODE *head; 知道函数的返回值为NODE *{ NODE *p, *q, *r;p = h;if (p == NULL)—>如果p数据位空,则表示p中没有任何的数据,因此就无需再进行逆置,故return NULL;return NULL;q = p->next;p->next = NULL;/**********found**********/while (__2__)→此空判断q有没有为空,讲解时候不容易理解,考生记住即可,填入:while(q)或是while(q!=NULL){ r = q->next;q->next = p;p = q;/**********found**********/q = __3__ ;→填入:q=r;次空理解起来较难,因此考生必须认真记忆,老师无需多讲}return p;}main(){ NODE *head;int a[N]={2,4,6,8,10};head=creatlist(a);printf("\nThe original list:\n");outlist(head);head=fun(head);printf("\nThe list after inverting :\n");outlist(head);}四、填空题与文件相关1.文件指针定义(1)文件定义的形式:FILE *fp;(课本P115)(2)举例:上机题库P30第28题第一空/**********found**********/__1__ fp;分析:在涉及文件类型的上机题目时fp指的就是文件指针,因此在前面填写类型时候直接写入:FILE *fp;(3)类似题目:P32第32题第1个空、P67第88题第2个空2.文件打开(1)文件打开的格式:fopen(“文件名”,“打开方式”);(课本P115)(2)举例:P31第30题第1个空void fun(char *filename, STU n){ FILE *fp;/**********found**********/fp = fopen(__1__, "rb+");分析:缺少了文件名,形参filename是实参传过来的文件名,因此这里直接填入:fp = fopen(filename, "rb+");表示以“读和写”的方式打开一个二进制文件filename (3)类似的题目:P41第47题第1个空、P71第94题第1个空、P72第96题第3空3.文件关闭(1)文件关闭的格式:fclose(文件指针);(课本P117)(2)举例:上机题库P30第28题第2空fp = fopen("file1.txt", "w");/*第一次以写的形式打开文件file1.txt*/fprintf(fp, "%s %d %f\n", s, a, f);/**********found**********/__2__ ;fp = fopen("file1.txt", "r");/*第二次以读的形式打开文件file1.txt*/分析:打开文件以后必须将它关闭,因此该空要填:fclose(fp);(3)类似题目:P72第96题第2空4.测试文件结束(1)判断文件结束的feof函数形式:feof(fp)(课本P118)(2)经常出现在while()的表达式里面,常见形式为:while(!feof(fp))测试指针fp有没有结束(3)举例:上机题目P26第22题第1空FILE *fp;STU n; int i;fp = fopen(filename,"rb+");/**********found**********/while (!__1__)分析:填写feof(fp)测试fp指针又没有结束(4)类似题目:P32第32题第2个空、P61第80题第1个空、P71第94题第2个空5.设置文件位置函数(1) fseek设置文件位置:fseek(文件指针,位移量,移动起始点)(课本P118)(2)考试一般考查的是移动的起始点:SEEK_SET表示文件开始,SEEK_CUR表示文件当前位置,SEEK_END表示文件末尾(3)举例:上机题库P31第30题第2个空/**********found**********/fseek(fp, -1L*sizeof(STU), __2__);分析:题目要求:重写形参filename所指文件中最后一个学生的数据,因此文件指针fp要指向最后的位置,则填入:fseek(fp, -1L*sizeof(STU), SEEK_END);(4)类似题目:P26第22题第3空、P61第80第3空、6.读二进制文件(1)fwrite(存入数据的指针,每一个数据占有的字节,输入数据的个数,文件指针);(课本P120)(2)举例:P31第30题第3空void fun(char *filename, STU n){ FILE *fp;/**********found**********/fp = fopen(filename, "rb+");/*打开文件filename*//**********found**********/fseek(fp, -1L*sizeof(STU), SEEK_END);/*定位到最后一个学生的位置*//**********found**********/fwrite(__3__, sizeof(STU), 1, fp);/*将形参n新学生的数据覆盖最后一个学生的数据,因为fp已经定位到了最后一个学生的位置*/fclose(fp);}分析:题目要求用新数据覆盖最后一个学生的数据,因此填入:fwrite(&n, sizeof(STU), 1, fp);填入的是地址,不能是:fwrite(n, sizeof(STU), 1, fp);(3)类似题目:P41第47题第3空,P67第88题第3空、7.写二进制文件函数(1)fread(读出数据的指针,每一个数据占有的字节,输出数据的个数,文件指针);(2)上机考试填空题没有出现需要填写的空,考生作一般的了解8.fcanf函数数和fprintf函数(1)fscanf(文件指针,格式控制字符串,输入列表项);(2)fprintf(文件指针,格式控制字符串,输出列表项);(3)fscanf函数和fprintf函数在上机编程题中详细介绍,这里不作重点讲解,了解即可五、填空题与函数相关1.函数调用:P13第1题#include <stdio.h>double f1(double x) 定义了f1函数,有一个形参{ return x*x; }double f2(double x, double y) 定义了f2函数,有两个形参{ return x*y; }/**********found**********/__1__ fun(int i, double x, double y)→根据函数调用r = fun(1, x1, x2);可知函数返回值和r类型一致,double x1=5, x2=3, r;r为doule类型,则函数返回double{ if (i==1)/**********found**********/return __2__(x);→此处为函数调用,实参数为1,根据实参和形成个数一致可知,调用的为f1函数else/**********found**********/return __3__(x, y);→此处的实参数为2,则调用f2函数}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=%f\n\n",x1, x2, r);}六、填空题与数组相关1.类似题目:3、4、7、20、24、26、39、40、41、54、57、64、68、70、71、76、89、90、992.一维数组中存在这样一些类型:(1)求一个数值数组中的所有值的平均值和把大于或者小于平均值的数辅导例外一个数组中。

四川省计算机等级考试二级C语言考试分析

四川省计算机等级考试二级C语言考试分析

1函数fun的功能是( ) (A) 将下标为bott 到 top 之间的数组元素逆置 (B) 将下标为bott 到 top 之间数组元素进行升序 排列 (C) 将下标为bott 到 top 之间数组元素进行降序 排列 (D) 将下标为bott 和下标 为 top 的两个元素互换 2程序的运行结果为( ) (A)0987654321 (B) 4321098765 (C) 5678901234 (D) 0987651234
注意:指针变量作函参时与普通变量的区别
2、指针与数组
(1)一维数组与指针,如有int i,a[10],*p=a; ①引用数组元素的方法: a[i]=*(a+i)=p[i]=*(p+i) ②数组元素地址的表示:&a[i]=&p[i]=a+i=p+i ③p++表示指针指向下一个元素,a++无意义
Ex指针与一维数组: # include <stdio.h> void fun(int *a,int bott,int top) { int i,j,t; i=bott; j=top; while(i<j) { t=a[i]; a[i]=a[j]; a[j]=t; i++;j--; } } void main() { int a[10]={1,2,3,4,5,6,7,8,9,0},i; fun(a,0,3); fun(a,4,9); fun(a,0,9); for(i=0;i<10;i++) printf("%d ",a[i]);}
☞主要考点分析
常用的库函数
math.h包含: abs(x)、fabs()、pow(x,y)、rand()、sqrt(x) stdio.h包含: 文件操作类、getchar()、putchar()、gets()、 puts() string.h包含: strcat()、strcpy()、strcmp()、strlen() ctype.h包含:字符测试头文件 isalpha()、isdigit()、islower()、isupper()等

(完整版)二级C语言知识点大汇总,推荐文档

(完整版)二级C语言知识点大汇总,推荐文档

计算机二级考试C语言知识点总结(完全针对考试大纲)总体上必须清楚的:1)程序结构是三种: 顺序结构, 循环结构(三个循环结构), 选择结构(if 和switch)2)读程序都要从main()入口, 然后从最上面顺序往下读(碰到循环做循环,碰到选择做选择)。

3)计算机的数据在电脑中保存是以二进制的形式. 数据存放的位置就是他的地址.4)bit是位是指为0 或者1。

byte 是指字节, 一个字节= 八个位. 000111105)一定要记住二进制与十进制互化。

概念常考到的:1、编译预处理不是C语言的一部分,不再运行时间。

C语言编译的程序称为源程序,它以ASCII数值存放在文本文件中。

2、每个C语言程序中main函数是有且只有一个。

3、在函数中不可以再定义函数。

4、算法的是一定要有输出的,他可以没有输入。

5、break可用于循环结构和switch语句。

6、逗号运算符的级别最低。

第一章1)合法的用户标识符考查:合法的要求是由字母,数字,下划线组成。

有其它元素就错了。

并且第一个必须为字母或则是下划线。

第一个为数字就错了。

关键字不可以作为用户标识符号。

main define scanf printf if都不是关键字。

迷惑你的地方If是可以做为用户标识符。

因为If中的第一个字母大写了,所以不是关键字。

2)实型数据的合法形式:2.333e0.1 就是合法的,且数据是2.333×10-1。

考试口诀:e前e后必有数,e后必为整数。

.3)字符数据的合法形式::'1' 是字符占一个字节,"1"是字符串占两个字节(含有一个结束符号)。

'0' 的ASCII数值表示为48,'a' 的ASCII数值是97,'A'的ASCII数值是65。

4)整型一般是两个字节, 字符型是一个字节,双精度一般是4个字节: 考试时候一般会说,在16位编译系统,或者是32位系统。

计算机二级考试C语言知识点总结

计算机二级考试C语言知识点总结

计算机二级考试 C 语言知识点总结(完全针对考试大纲)概述总体上必须清楚的:1)程序结构是三种: 顺序结构, 循环结构(三个循环结构), 选择结构(if 和switch)2)读程序都要从main()入口, 然后从最上面顺序往下读(碰到循环做循环,碰到选择做选择)。

3)计算机的数据在电脑中保存是以二进制的形式. 数据存放的位置就是他的地址.4)bit 是位是指为0 或1。

byte 是指字节, 一个字节= 八个位.5)一定要记住二进制如何划成十进制。

概念常考到的:1)、编译预处理不是C语言的一部分,不再运行时间。

C 语言编译的程序称为源程序,它以ASCII数值存放在文本文件中。

2)、每个C语言程序中main 函数是有且只有一个。

3)、在函数中不可以再定义函数。

4)、算法的是一定要有输出的,他可以没有输入。

5)、break 可用于循环结构和switch 语句。

6)、逗号运算符的级别最低。

第一章1)合法的用户标识符考查:合法的要求是由字母,数字,下划线组成。

有其它元素就错了。

并且第一个必须为字母或则是下划线。

第一个为数字就错了。

关键字不可以作为用户标识符号。

main define scanf printf 都不是关键字。

迷惑你的地方If 是可以做为用户标识符。

因为If 中的第一个字母大写了,所以不是关键字。

2)实型数据的合法形式:2.333e-1 就是合法的,且数据是 2.333 × 101。

考试口诀:e前e后必有数, e 后必为整数。

.3)字符数据的合法形式::'1' 是字符占一个字节,"1" 是字符串占两个字节(含有一个结束符号)。

'0' 的ASCII数值表示为48,'a' 的ASCII数值是97,'A'的ASCII数值5。

4)整型一般是两个字节, 字符型是一个字节,双精度一般是4 个字节:考试时候一般会说,在16 位编译系统,或者是32 位系统。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

计算机等级考试二级C语言上机填空题考点总结2010-12-20程序填空题程序填空题分值为30分,是在一个完整的程序中挖出2~4个空让考生填写,所考查的内容一般是C语言中最基础的内容。

1. 基本语句方面的知识点,如printf( )函数和Scanf( )函数的相关知识点。

2. 变量等的初始化,以作为累加器或累乘器。

3. 选择结构或循环结构语句的考查。

4. 函数的相关知识,如函数类型的定义、形参的定义,以及确定函数的返回值等。

5. 数组、指针、结构体等的应用。

全国计算机等级考试二级C语言上机答题技巧 FF二级c语(2010-09-10 21:27:32)转载分类:我的工作标签:杂谈全国计算机等级考试二级C语言上机答题技巧FF二级c语言上机试题2010年9月06日10:53/?viewnews-9005.html一、上机改错题的特点和注意事项1.上机改错的试题中通常包含两个(或三个)错误需要修改2.试题中用"******found******/"来提示在下一行(或下面第二行)有错3.错误的性质基本分语法错和逻辑错两种,也有些试题要求把语句添加在下划线处4.特别要注意的是:只能在出错的行上进行修改,不要改动程序行的顺序,更不要自己另编程序二、上机改错测试时,建议按以下步骤进行1.首先仔细审题,了解试题的要求,看清楚试题给出的输入和输出例示,以便检验改错后程序运行的结果是否正确2.当在Visual C++6.0环境下调出源程序后,审视所在函数,根据题义理解程序所采用的基本算法,做到心里有数3.先按CTRL+F7对测试程序进行检查是否有语法错误当编译提示有语法错时,可参考编译提示来查找并改正错误4.当不再出现语法错时,使用F7执行,看结果使用CTRL+F5,按照试题的示例给出的数据进行试算,若试算的结果与给出的输出结果相同时,该题就做对了;若试算的结果与给出的输出结果不同,就应进一步检查程序中的逻辑错误5.当程序存在逻辑错误时,首先应当理解题意、读懂程序的算法,必要时可按步检查数据的流程,以便确定错误所在例如,题目要求数据按由小到大排序,而结果数据是按由大到小进行了排序,问题可能出现在条件判断上又如,输出的字符串比预期的短,就有可能字符串的结束标志放错了位置再如做循环的时候数组上限下限错误了,基数是从0开始而不是1开始的修改程序中的逻辑错时,要求考生认真读懂程序代码6.修改完成,得到正确结果后,一定不要忘记把修改后的程序存盘三、上机编程题的特点和说明1.在二级C程序设计上机考试中,要求完成一个独立的函数的编程目前教育部考试中心已出版了上机考试习题集,这些有助于学习编程,但考生应当在学习过程中理解基本的算法,通过实际上机操作积累经验,才能掌握基本的编程能力四、进行编程测试时,建议按以下步骤进行1.首先仔细审题,了解试题的要求,记下试题给出的输入和输出例示,以便检验在完成指定的函数后程序运行的结果是否正确2.当在Visual C++6.0环境下调出源程序后,应对照函数首部的形参,审视主函数中调用函数时的实参内容,以便明确在函数中需要处理的数据对象3.理解试题的要求,审视主函数中调用函数的方式,若在表达式中调用函数(如把函数值赋给某个对象),则要求有函数值返回,需注意函数的类型,并在函数中用return语句返回函数值;若主函数中仅用语句形式调用函数,则需要通过形参间接地返回所得结果4.选择适当的算法进行编程,输入程序语句不要忘记及时存盘!5.编译程序,直到没有语法错误6.调试程序,利用试题中给出的例示数据进行输入(若要求输入的话),运行程序,用例示的输出数据检验输出结果,直到结果相同1.书写标识符时,忽略了大小写字母的区别C认为大写字母和小写字母是两个不同的字符习惯上,符号常量名用大写,变量名用小写表示,以增加可读性2.忽略了变量的类型,进行了不合法的运算main(){float a,b;printf("%d",a%b);}%是求余运算,得到a/b的整余数整型变量a和b可以进行求余运算,而实型变量则不允许进行“求余”运算3.将字符常量与字符串常量混淆char c;c="a";在这里就混淆了字符常量与字符串常量,字符常量是由一对单引号括起来的单个字符,字符串常量是一对双引号括起来的字符序列C规定以“\”作字符串结束标志,它是由系统自动加上的,所以字符串“a”实际上包含两个字符:…a''和…\'',而把它赋给一个字符变量是不行的4.忽略了“=”与“==”的区别在许多高级语言中,用“=”符号作为关系运算符“等于”如在BASIC程序中可以写if (a=3) then …但C语言中,“=”是赋值运算符,“==”是关系运算符如:if (a==3) a=b;前者是进行比较,a是否和3相等,后者表示如果a和3相等,把b值赋给a由于习惯问题,初学者往往会犯这样的错误5.忘记加分号分号是C语句中不可缺少的一部分,语句末尾必须有分号a=1b=2编译时,编译程序在“a=1”后面没发现分号,就把下一行“b=2”也作为上一行语句的一部分,这就会出现语法错误改错时,有时在被指出有错的一行中未发现错误,就需要看一下上一行是否漏掉了分号{ z=x y;t=z/100;printf("%f",t);}对于复合语句来说,最后一个语句中最后的分号不能忽略不写6.多加分号对于一个复合语句,如:{ z=x y;t=z/100;printf("%f",t);};复合语句的花括号后不应再加分号,否则将会画蛇添足又如:if (a%3==0);I ;本是如果3整除a,则I加1但由于if (a%3==0)后多加了分号,则if语句到此结束,程序将执行I 语句,不论3是否整除a,I都将自动加1再如:for (I=0;I<5;I );{scanf("%d",&x);printf("%d",x);}本意是先后输入5个数,每输入一个数后再将它输出由于for()后多加了一个分号,使循环体变为空语句,此时只能输入一个数并输出它7.输入变量时忘记加地址运算符“&”int a,b;scanf("%d%d",a,b);这是不合法的Scanf函数的作用是:按照a、b在内存的地址将a、b的值存进去“&a”指a在内存中的地址8.输入数据的方式与要求不符①scanf("%d%d",&a,&b);输入时,不能用逗号作两个数据间的分隔符,如下面输入不合法:3,4输入数据时,在两个数据之间以一个或多个空格间隔,也可用回车键,跳格键tab②scanf("%d,%d",&a,&b);C规定:如果在“格式控制”字符串中除了格式说明以外还有其它字符,则在输入数据时应输入与这些字符相同的字符下面输入是合法的:3,4此时不用逗号而用空格或其它字符是不对的3 4 3:4又如:scanf("a=%d,b=%d",&a,&b);输入应如以下形式:a=3,b=49.输入字符的格式与要求不一致在用“%c”格式输入字符时,“空格字符”和“转义字符”都作为有效字符输入scanf("%c%c%c",&c1,&c2,&c3);如输入a b c字符“a”送给c1,字符“”送给c2,字符“b”送给c3,因为%c只要求读入一个字符,后面不需要用空格作为两个字符的间隔10.输入输出的数据类型与所用格式说明符不一致例如,a已定义为整型,b定义为实型a=3;b=4.5;printf("%f%d\n",a,b);编译时不给出出错信息,但运行结果将与原意不符这种错误尤其需要注意11.输入数据时,企图规定精度scanf("%7.2f",&a);这样做是不合法的,输入数据时不能规定精度12.switch语句中漏写break语句例如:根据考试成绩的等级打印出百分制数段switch(grade){ case ''A'':printf("85~100\n");case ''B'':printf("70~84\n");case ''C'':printf("60~69\n");case ''D'':printf("<60 ");default:printf("error ");由于漏写了break语句,case只起标号的作用,而不起判断作用因此,当grade值为A 时,printf函数在执行完第一个语句后接着执行第二、三、四、五个printf函数语句正确写法应在每个分支后再加上“break;”例如case ''A'':printf("85~100 ");break;13..在定义数组时,将定义的“元素个数”误认为是可使的最大下标值main(){static int a[10]={1,2,3,4,5,6,7,8,9,10};printf("%d",a[10]);}C语言规定:定义时用a[10],表示a数组有10个元素其下标值由0开始,所以数组元素a[10]是不存在的16.在不应加地址运算符&的位置加了地址运算符scanf("%s",&str); ========================================================================C语言编译系统对数组名的处理是:数组名代表该数组的起始地址,且scanf函数中的输入项是字符数组名,不必要再加地址符&应改为:scanf("%s",str);1、编一个函数fun(char *s),函数的功能是把字符串中的内容逆置例子如:字符串中原有的内容为:abcdefg,则调用该函数后,串中的内容为:gfedcbafun(char *s){ int i=0,t,n=strlen(s);for(;s i {t=*(s i);*(s i)=*(s n-1-i);*(s n-1-i)=t;}}注:该题的算法是先分别找出字符串的两头,然后同时逐一往中间移动,每移动一次都进行两字符的位置对换,直到中间字符(用s i 地址,因此要注意把它的内容取出再进行换位即先进行取内容运算*)2、请编写函数fun,对长度为7个字符的字符串,除首、尾字符外,将其余5个字符按降序排列例如,原来的字符串为CEAedca,排序后输出为CedcEAaint fun(char *s,int num){ int i,j,t;for(i=1;i for(j=i 1;j if(s { t=s;s=s[j];s[j]=t;}}该题采用的排序法是选择法进行降序排序,算法是用外for()循环从字符串的前端往后端走动,每走动一个字符都用内嵌的for()循环在该字符后找出最小的字符与该字符进行换位直到外for()循环走到最后一个字符此外,此题还要注意把首尾字符除开,即在最外层for()循环中从1开始,只到num-2即可3、请编写一个unsigned fun(unsigned w),w是一个大于10的无符号整数,若w是n(n>=2)位的整数,函数求出w的后n-1位的数作为函数值返回例如:w值为5923,则函数返回923;w值为923则函数返回23unsigned fun( unsigned w ){ if(w>=10000) return w000;if(w>=1000) return w00;if(w>=100) return w0;return w;}注:由于unsigned型整数在0-65535这间,只要它大于10000则对10000求余即得出后面4位,否则如果大于1000则对1000求余得出后3位数,这样一层一层往小的判断由于return的作用除了返回值以外,还有当执行到return时就跳出该程序,所以可以连续的用if()语句4、请编一函数void fun(int tt[M][N],int pp[N]),tt指向一个M行N列的二维数组,求出二维数组每列中最小元素,并依次放入pp所指一维数组中,二维数组中的数已在主函数中赋予#define M 3#define N 4void fun(int tt[M][N],int pp[N]){ int i, j;for(i=0;i { pp=tt[0];for(j=0;j if(tt[j] }}5、请编一个函数fun,其中n所指存储单元中存放了数组中元素的个数函数的功能是:删除所有值为y的元素数组元素中的值和y的值由主函数通过健盘读入试题程序#define M 20void fun (int bb[], int *n,int y){ int i,j=0;for( i=0; i<*n; i )if(bb!=y) bb[j ]=bb;*n=j;}6、请编写一个函数int fun(int x),它的功能是:判断整数x是否是同构数若是同构数,函数返回1;否则返回0所谓“同构数”是指这样的数,它出现在它的平方数的右边例如:输入整数5,5的平方数是25,5是25中右侧的数,所以5是同构数x的值由主函数从健盘读入,要求不大于100int fun (int x){ int xx=x * x;if(xx==x//xx==x//xx0==x) return 1;else return 0;}7、请编写函数fun,它的功能是:求出ss所指字符串中、指定字符的个数,并返回此值例如:若输入字符串:123412132,输入字符为:1,则输出:3#define M 81int fun(char *ss,char c){int num=0;while(*ss!=''\0''){if(*ss==c) num++ ;ss++ ;}return(num);}8、请编写函数fun,经的功能是:求出1到1000之内能被7或11整除、但不能同时补7和11整除的所有整数并将它们放在a所指的数组中,通过n返回这些数的个数void fun(int *a,int *n){ int i,m=0;for(i=1;i<1000;i )if(((i%7==0)//(i==0))&&!((i%7==0)&&(i==0))){a[m]=i;m =1;}*n=m;}10、要求程序的功能是:把20个随机数存入一个数组,然后输出该数组中的最小值其中确定最小值的下标的操作在fun函数中实现,请给出该函数的定义试题程序#include#include#define VSIZE 20int vector[VSIZE];int fun(int list[],int size){ int i,j=0;for(i=1;i<size;i++)if(list[i]<list[j]) j=i;return j;}/*注:该题的算法是用一个变量(j)来存储最小值元素的下标,在循环过程中让每个元素都与原最小值元素进行大小比较================================================== ==============改错题策略与技巧一般有2—3处错误,均在以“*******found*******”下按Ctrl+F7编译出现多个错误,由前向后修改错误分两大类一. 语法错误①丢失分号,或误写成逗号②关键字拼写错误,如小写变大写③语句格式错误,如for句中多写或少写分号④表达式声明错误,如少了()⑤函数类型说明错误⑥函数形参类型声明错误,如少*号⑦运算符,书写错误,如<写成>二. 逻辑错误(语义错误)①变量初值错误②循环次数不对③下标越界④运算类型不匹配编程题策略与技巧一.认真阅读试题①题目所给出的限制条件②一些术语解释③题目提供的算法④程序的执行结果二.清晰地理解fun函数①函数的功能②函数反回值类型③参数传递方式④运行结果三.调试运行程序①先调试程序②运行程序③利用好VC++调试工具。

相关文档
最新文档