计算机等级C语言上机考试改错题分类总结
2010年计算机等级考试二级C语言上机习题汇总
2010年计算机等级考试二级C语言上机习题汇总一、改错题【分析】:改错题的错误一般可分为两类,一类是语法错误,这类错误可通过调试程序改正,较容易;另一类是逻辑错误,这类错误程序能运行,但结果不正确,这类错误相对较难,修改前必须要看懂和理解程序。
#include"stdio.h"#define n 4 #define m 3 /*语法错,#define m 3需另起一行*/int a[n][m],s[m];p(int j)/*此函数的功能为:找出a数组中第j列的最小元素的值及行号,函数成功运行后,i中即为j列的最小元素的行号,s[j]中即为j列的最小元素的值*/{intk,i,x;x=a[0][j];i=0; /*逻辑错,从函数的功能可知,a[0][j]也应赋值给s[j],所以x=a[0][j]应改为s[j]=x=a[0][j]*/for(k=1;k<N;K++)< p>if(a[k][j]<X)< p>{i=k;s[j]=x=a[k][j];}return i;}main(){int index[m],i,j,k;for(i=0;i<N;I++)< p>for(j=0;j<M;J++)< p>scanf("%d",a[i][j]);/*语法错,但编译时不会报错,scanf语句的一般形式为scanf(格式控制,地址表列),所以a[i][j]应改为&a[i][j])*/for(j=0,j<M;J++)< p>printf("a[%d,%d]=%d\n",index[j],j,s[j]);}i=s[1];k=0; /*逻辑错,数组s中存放的是a数组中每一列的最小值,比较时应从数组的第0个元素开始,而下面的for循环是从第1个元素开始的,所以i=s[1]应改为i=s[0]*/for(j=1;j<>if(s[j]<I)< p>{i=s[j];k=j;}printf("min=a[%d,%d]=%d",index[k],k,i); }二、编程题【分析】:本题的主要功能是建立一个3行8列的二维数组,并给其元素赋值,其中第1、2行的值可通过递推公式xi+1=(25*xi+357)%1024得到,第三行的值取前两行同列元素的最大公约数,所以编程时可用一个函数来实现求公约数的算法。
二级C语言上机改错题 常见错误类型
二级C语言上机改错题常见错误类型※(1) 漏写“ ; ”(所有完整语句后面都应该有“ ; ”)※(2) 数据类型定义错误(包括int, long, char, float, double, 字符串, 数组和指针等类型互相不能用错)(3) 定义函数时后面多加“ ; ”(如: void fun (char *s); 后面的分号不能加)※(4) 当判断相等的时候,误把“ == ” 写成赋值的“ = ”※(5) 函数类型定义错误(比如说自定义一个没有返回值的函数却定义成int fun() )※(6) 条件语句漏写“ () ”(包括for语句、if语句、while语句等等)(7) 符号写错(如除法的“ / ” 写成“\” 等等)(8) 字符串符号" " 与字符符号' ' 弄错(9) 函数行参类型定义错误(比如:本意为带入指针类型的实参,却写成 void fun (char s) 正确应为 void fun (char *s) )(10) 漏写大括号“ { ” 或“ } ”中的一个第二大类:逻辑错误(此类错误都和题意有关,需结合具体题意改正)※(1) 大小关系弄反(比如本该为if(x<y) ...... 误写成if(x>y) ...... )(2) “ ++ ” 和“ -- ” 弄反(比如本该为 for(i=j; i!=k; i++) 误写成for(i=j; i!=k; i--) )(3) 变量赋值错误(包括赋初值错误或没有赋初值等,如:依题意,本该赋值 int i=0; 却赋错值 int i=1; )(4) 依次载入数据时没有写“ ++ ” 或“ -- ”(如: for(i=0;i<n;i++) s[j++]=i; 写错成for(i=0;i<n;i++) s[j]=i; )※(5) 代换关系弄错(如: p=q; 误写成q=p; 或p=q+i; 误写成q=p+i; )(6) 循环中初值或终值写错(如:依题意应为 for(i=0; i<n; i++) ...... 写错为for(i=0; i<m; i++) ...... )(7) “ == ” 和“ != ”逻辑关系弄错(8) 逻辑与“ && ” 和逻辑或“ || ”弄错(9) 临界值弄错(如“ <= ” 和“ < ” 等)(10) 其他逻辑错误:原语句不符题意或与题意相悖的一切逻辑错误。
计算机二级C语言改错题归类
则函数值为NULL。
23.将s,所形成的新串放在w所指的数组中。
在此处,要求数值返回。
为函数值返回。
11.求k!(k<13),所求阶乘的值作为函数值返回。
方根之和sum。
n的值通过形参传入。
为7,若给num1和num2分别输入27和81,则输出的最大公约数为27。
返回3,若能构成等腰三角形函数返回2,若能构成三角形函数返回1,若不能构成三角形函数返回0。
29.找出一个大于给定整数m且紧随m的素数,并作为函数值返回。
1.根据形参m,计算如下公式的值。
2.根据整型形参m,计算如下公式的值。
3.根据整型形参m的值,计算如下公式的值。
4.根据整型形参m,计算如下公式的值。
5.传入一个整数m,计算如下公式的值。
8.根据整型形参n,计算如下公式的值。
9.求s的值。
11.应用递归算法求某数a的平方根。
求平方根的迭代公式如下:(x+1)/(x-2) x>0f(x)= 0 x=0或x=2(x-1)/(x-2) x<010 (n=1)fun(n)=fun(n-1)+2 (n>1)16.求出以下分数序列的前n项之和,和值通过函数值返回main函数。
17.求出以下分数序列的前n项之和,和值通过函数值返回main()函数。
所指的数组中。
若s所指数组中元素的个数不是5的倍数,多余部分忽略不计。
为函数值返回。
规定,函数中a1放个位数,a2放十位数。
区中,此存储区的首地址作为函数值返回。
1.给—维数组a输入任意4个整数,并按如下的规律输出。
例如输入1,2,3,4,程序运行后将输出以下方阵:2.根据形参m的值(2≤m≤9),在m行m列的二维数组中存放如下所示的数据,由main()函数输出。
1.并用随机函数为各结点赋值。
将单向链表结点(不包括头结点,并且作为函数值返回。
并且作为函数值返回。
二级C语言上机考试改错总结
二级C语言上机考试改错题总结校园网新视野教育根据本人多年研究全国计算机等级考试二级C语言,发现很多考生对上机考试存在很大的问题。
现将本人在教学当中对二级C语言上机考试题库总结的经验和大家分享,希望能对我们考生的考试有所帮助,顺利通过考试!以下是对上机考试改错题的做题方法和总结,改错题的错误主要分为以下几类:1、if或while语句若错误行是if或者while语句,则要注意以下点:1)首先判断是否正确书写if或while关键字;2)然后看有没有用小括号把整个表达式括起来,若没有则加上小括号;3)若条件表达式中有指针变量而且没有指针运算符时,则加上指针运算符;4)若if条件表达式中只有一个等于号即数学等号(=),则要改写成两个等于号即逻辑等号(= =);5)若if条件表达式为其他的比较运算符,则一般是进行逆转或加一个等于号;2、for语句若错误行是for语句,则要注意以下几点:1)首先判断for有没有书写正确;2)然后看for中的表达式是不是用分号(;)隔开,若不是则改为分号。
记住是分号(;),不是逗号(,)!3)再者,分析for中的三个表达式,是否符合题意;第一个表达式表示起始条件,第二个表达式表示终止条件,第三个表达式表示循环变量的变化。
3、return语句若错误行为return语句,则要注意以下几点:1)首先看是不是正确书写return关键字;2)然后看是不是缺少分号,若是则加上分号即可;3)再者判断return后的变量或表达式是否正确;这种错误需要根据题意来分析,分析返回变量或表达式的值和类型。
4、赋值语句若错误行是赋值语句,则要看赋值是否正确,然后看赋值运算符是否写正确。
5、定义语句若错误行是定义语句,则要注意:1)首先分析变量类型名是否写对;2)然后分析给变量赋初值是否正确;3)若以上均不是,则看是不是少定义了某个变量或少了花括号;6、表达式错误问题:若错误行中有整数1除以某个表达式或变量时,必须把整数1改为1.0;若变量或表达式是整型时,则只能进行强制类型转换。
@所有人,二级C语言上机考试改错题总结!
@所有人,二级C语言上机考试改错题总结!1、if或while语句若错误行是if或者while语句,则要注意以下点:(1)首先判断是否正确书写if或while关键字;(2)然后看有没有用小括号把整个表达式括起来,若没有则加上小括号;(3)若条件表达式中有指针变量而且没有指针运算符时,则加上指针运算符;(4)若if条件表达式中只有一个等于号即数学等号(=),则要改写成两个等于号即逻辑等号(= =)。
2.for语句若错误行是for语句,则要注意以下几点:(1)首先判断for有没有书写正确;(2)然后看for中的表达式是不是用分号(;)隔开,若不是则改为分号。
记住是分号(;),不是逗号(,)!(3)再者,分析for中的三个表达式,是否符合题意。
3. return语句若错误行为return语句,则要注意以下几点:(1)首先看是不是正确书写return关键字;(2)然后看是不是缺少分号,若是则加上分号即可;(3)再者判断return后的变量或表达式是否正确;这种错误需要根据题意来分析,分析返回变量或表达式的值和类型。
4. 赋值语句若错误行是赋值语句,则要看赋值是否正确,然后看赋值运算符是否写正确。
5. 定义语句若错误行是定义语句,则要注意:(1)首先分析变量类型名是否写对;(2)然后分析给变量赋初值是否正确;(3)若以上均不是,则看是不是少定义了某个变量或少了花括号。
6. 表达式错误问题若错误行中有整数1除以某个表达式或变量时,必须把整数1改为1.0;若变量或表达式是整型时,则只能进行强制类型转换。
7. 字符串类问题若错误行中有字符串结束符,则特别要要注意结束符有没有写错。
但是要区分清楚字符‘o’和数字’0’。
以及字符串结束标记‘\0’。
8. 指针类问题若错误行中有指针变量,并且该变量名之前没有指针运算符,则一般都是加上指针运算符。
9. 函数首部类问题若错误行是函数首部,则要注意:(1)首先看该行最后有没有分号,若有则删掉分号;若中间有分号则要改为逗号;(2)形参和实参类型不一致问题:① 若实参是个地址或数组名或指针变量名,则对应的形参肯定是指针或数组;②若实参是二维数组名,则对应的形参应该是指针数组或是二维数组;③若后面用到某形参的时候有指针运算符,则该形参比为指针类型;④若形参是二维数组或指向M 个元素的指针变量,则该二维的长度必须与main中对于数组的第二维的长度相同。
计算机二级等级考试C语言改错题讲解
1.调试C程序时常见的错误类型分析一般情况下,错误主要分为两大类:一、语法错误。
对于这种错误,用编译器很容易解决。
所以,改错题的第一步是先编译,解决这类语法错误。
下面总结了二级C 语言上机改错题中常见的语法错误:(1)丢失分号,或分号误写成逗号。
(2)关键字拼写错误,如本来小写变成大写。
(3)语句格式错误,例如for语句中多写或者少写分号。
(4)表达式声明错误,例如:少了()(5)函数类型说明错误。
与main()函数中不一致。
(6)函数形参类型声明错误。
例如:少*等。
(7)运算符书写错误,例如:/写成了\。
二、逻辑错误,或者叫语义错误,这和实现程序功能紧密相关,一般不能用编译器发现。
对于逻辑错误可以按这样的步骤进行查找。
(1)先读试题,看清题目的功能要求。
(2)通读程序,看懂程序中算法的实现方法。
(3)细看程序,发现常见错误点。
2.改错题的改错方式总结,当然这些总结只能对大部分改错行有效。
1、若错误行是函数首部,可分为以下几种情况:A、该行最后若有分号则删除,中间若有分号则改成逗号B、形参类型不一致的问题,特别是指针类型,若后面用到某形参时有指针运算则该形参必为指针类型;若形参是二维数组或指向m个元素的指针变量,则第二维的长度必须与main中对应数组的第二维长度相同C、函数类型不一致的问题,若函数中没有return语句则函数类型为void,若有return语句则函数的类型必须与return 后变量的类型一致。
2、若错误行是if或while语句,则首先看有没有用小括号将整个表达式括起,若没有则加上小括号。
3、若错误行中有if、while、for则要特别注意条件表达式的错误问题:A、指针变量的应用,若表达式中有指针变量且没有指针运算符,则加上指针运算符B、若条件表达式中只有一个等于号,则改成两个等于号,若为其它比较运算符则一般是进行逆转或加一个等于号C、for中要用分号分隔表达式,而不是用逗号4、语法错误A、语句缺少分号,若错误行中有语句没有用分号结束,则加上分号。
全国计算机等级考试C语言上机考试分析
ma ( i ) n
{
视 ” : I = :f n I / I c l lo d: c: c c u = 有数 。
¥ பைடு நூலகம் / 所 在 函数 , ”
c a r N] hrs [ ; t
c sr ) l c( ; r
收稿 日期 :2 1 O 一2 0 I— l 8 作者简 介:杨 晓雁 (9 3一) 女 , 17 , 讲师 , 硕士 , 研究方向为软件工程。
}
题 给 出 的输 人 和输 出示 例 , 以便 检验 改 错 后 程序 运 行 的结 果是 否正 确 。
() 2 当在 T C或 V 环 境 下 调 出 源 程 序 后 , C 审
{l gk o ; n
d o
{k = u % 1 ; n m 0
/ 木 术, 水 爿 木 木 木 水 水fu d木 木 木 木 木 木 半 木 术 l c术 c枣 on
¥ /
来提 示在 下一 行 ( 或下 面第二 行 ) 有错 。
( ) 误 的 性 质 基 本 分 语 法 错 和逻 辑 错 两 种 , 3错 也有 些试题 要求 把语 句 添加在 下划 线处 。
程 序如 下 :
2 2 上机 改错 测试 时 , . 建议按 以下步骤 进行
( ) 先仔 细审题 , 解试 题 的要求 , 清楚 试 1首 了 看
一
{ln ; o gn
10 一 4
c sr ); lc( r
在变 量 c的十位 和千 位上 。
pif ” Pes ne u e : ) ;saf ” l” r ( \laeetr n mbr ” n a cn ( % d ,
c语言改错题题库及详解答案
c语言改错题题库及详解答案C语言是一种广泛使用的计算机编程语言,它以其高效性、灵活性和强大的功能而受到程序员的青睐。
然而,即使是经验丰富的程序员也难免会在编写C语言程序时犯一些错误。
下面是一个C语言改错题题库及其详解答案,帮助学习者识别并改正常见的编程错误。
题目1:错误的变量初始化```cint main() {int a;printf("%d", a); // 错误:变量a未初始化return 0;}```详解答案:在C语言中,如果一个变量在使用前没有被显式地初始化,它的值是不确定的。
为了修复这个错误,我们应该在声明变量时对其进行初始化。
```cint main() {int a = 0; // 正确的初始化printf("%d", a);return 0;}```题目2:错误的数组索引```cint main() {int arr[5] = {1, 2, 3, 4, 5};printf("%d", arr[5]); // 错误:数组索引越界return 0;}```详解答案:数组索引是从0开始的,所以对于一个有5个元素的数组,有效的索引范围是0到4。
访问数组的第6个元素会导致越界错误。
```cint main() {int arr[5] = {1, 2, 3, 4, 5};printf("%d", arr[4]); // 正确的索引return 0;}```题目3:错误的循环使用```cint main() {int i;for (i = 0; i <= 10; i++) {printf("%d ", i);} // 错误:循环条件错误return 0;}```详解答案:循环条件应该是`i < 10`,以确保循环不会无限执行。
```cint main() {int i;for (i = 0; i < 10; i++) {printf("%d ", i);}return 0;}```题目4:错误的函数调用```cint main() {int result = add(5, 3); // 错误:add函数未定义printf("%d", result);return 0;}```详解答案:在调用一个函数之前,需要确保该函数已经被定义。
计算机等级C语言上机考试填空题和改错题技巧
计算机等级C语言上机考试填空题分类总结填空题是计算机等级考试中的难点,占有的分值为30分。
做填空题时注意掌握答题技巧。
填空题的分类(分为7类):解题方法:1、如果在函数中定义变量,但是没有定义成静态存储变量,即变量前面没有static,应给变量赋初值,如果以后用到的是加减运算,则赋初值为0或者0.0;如果以后用到的是乘除运算,则赋初值为1或者1.0;2、循环条件的填空,分析表达式的规律,看表达式中的最后一项的值是否到了第m项或者是第n项,如果到了第m或者第n项,则在循环中的第二个表达式中用到的是i<=m或者是i<n;3、循环条件中如果用的是while语句,则循环变量的初值应该在while的外面定义和赋初值,在循环语句中必须给变量自加或者是自减。
如果没有则一般填的是i++;4、看表达式中的每一项的运算规则,按照运算的规则把每一项中n值替换为i,特殊情况例外。
如果表达式中用到的是间隔相加减的运算时,注意给中间变量赋初值为1或者是1.0;在后面的运算中给变量乘以一个-1,以改变中间变量的符号。
1、循环的条件是判断该字符是否和结束符相等,如果相等,说明该字符串结束,否则说明没有结束,继续循环。
2、把一个数字字符转变成对应的数值的格式是:ch=ch-‘0’;把大写字母转变为小写字母的格式;ch=ch+32;把小写字母转变为大写字母的格式为:ch=ch-32;3、区分好字符数组中的指针和指针所指的值的关系。
在循环语句中,当指针往后走一个位置的时候,用的是指针的自加,而不是指导针所指的值的自加。
4、掌握字符数组中的函数的使用的格式。
即:strlen、strcmp、strcpy、sizeof、strcat的使用格式。
注意里面的格式中使用的都是指针(或地址)。
5、字符数组结果时都有一个结束符:’\0’;在字符数组中的题目中的结束后要加上一个结束符。
结构体类型的题目1、看清题目的意思。
2、定义结构体变量时的格式。
c语言改错题题库及详解答案
c语言改错题题库及详解答案1. 题目:以下代码段中存在错误,请找出并改正。
```c#include <stdio.h>int main() {int a = 10;int b = 20;int c = a + b;printf("The sum is %d", c);return 0;}```答案:代码中缺少了字符串结束的空格。
应改为:```cprintf("The sum is %d ", c);```2. 题目:找出并改正以下代码段中的错误。
```c#include <stdio.h>int main() {int num = 100;if (num = 100)printf("Number is 100\n");return 0;}答案:代码中使用了赋值运算符 "=" 而不是比较运算符 "=="。
应改为:```cif (num == 100)```3. 题目:以下代码段中存在逻辑错误,请指出并改正。
```c#include <stdio.h>int main() {float a, b, c;scanf("%f %f", &a, &b);c = a / b;printf("The result is %f", c);return 0;}```答案:代码中没有检查除数 b 是否为 0,这会导致运行时错误。
应添加检查:```cif (b != 0) {c = a / b;printf("The result is %f", c);} else {printf("Error: Division by zero.\n");}```4. 题目:找出并改正以下代码段中的语法错误。
福建省计算机二级考试C语言上机题库改错填空编程
二、改错题Cmody191.c修改程序,用以计算1~100之间所有的偶数之和。
#include <stdio.h>#include <math.h>void main( ){int i=1;/**/ int sum=2 /**/;while(i++,i<=100){ if(/**/ i==(i/2)*2 /**/)continue;sum+=i;}printf("Sum is %d\n",sum);getch();}Cmody192.c修改程序,将二维数组表示的方阵左下半三角(不含对角线)各元素加4,右上半三角(含对角线)各元素乘2。
#include <stdio.h>#define N 5void main(){int a[N][N],i,j;for(i=0;i<N;i++)for(j=0;j<N;j++)a[i][j]=i*5+j+11;printf("\nArray a is:\n");for(i=0;i<N;i++){for(j=0;j<N;j++) printf("%3d ",a[i][j]);printf("\n");}for(i=0;i<N;i++)/**/ for(j=0;j<=i;j++)/**/a[i][j]+=4;for(i=0;i<N;i++)/**/ for(j=i+1 ;j<N;j++) /**/a[i][j]*=2;printf("\nArray a is turned:\n");for(i=0;i<N;i++){for(j=0;j<N;j++)printf("%3d ",a[i][j]);printf("\n");}getch();}Cmody201.c修改程序,计算满足以下条件的整数n的最大值。
c语言改错题
c语言改错题C语言改错题什么是C语言改错题C语言改错题是指一类常见的编程题型,要求学生在给定的代码中找出错误,并修正这些错误,使得代码能够正常运行并达到预期的功能。
这类题目既考察了学生对C语言的掌握程度,又能培养学生发现和解决问题的能力。
题目形式C语言改错题一般以给定的代码片段为基础,要求学生找出并修正其中的错误。
常见的错误包括语法错误、逻辑错误、变量名错误等。
下面是一个示例:#include <>int main() {int a = 1;int b = 2;int sum;sum = a + b;printf("The sum of %d and %d is: %d\n", a, b, sum;return 0;}这段代码中包含了一个语法错误,即缺少了一个右括号。
正确的代码应该是:#include <>int main() {int a = 1;int b = 2;int sum;sum = a + b;printf("The sum of %d and %d is: %d\n", a, b, sum);return 0;}如何解答C语言改错题解答C语言改错题可以按照以下步骤进行:1.仔细阅读给定的代码,理解代码的功能和意图。
2.查找代码中的错误,包括语法错误、逻辑错误和命名错误等。
3.修正找到的错误,使得代码能够正常编译和运行。
4.验证修正后的代码是否达到了预期的功能。
在解答C语言改错题时,需要注意以下几点:•首先要检查代码中的语法错误,包括缺少分号、括号不匹配等。
•其次要注意代码中的逻辑错误,例如错误的判断条件、错误的变量赋值等。
•还要注意代码中的命名错误,例如使用了未定义的变量、函数名拼写错误等。
总结C语言改错题是提高学生编程能力和理解C语言的重要方式之一。
通过解答这类题目,学生能够发现和纠正错误,提高自己的编程技能。
希望本文对你理解和解答C语言改错题有所帮助。
C语言程序改错题汇总
程序改错题汇总1、用"起泡法"对连续输入的十个字符排序后按从小到大的次序输出.2、分别统计字符串中大写字母和小写字母的个数。
3、求1到10的阶乘的和。
4、判断m是否为素数,若是返回1,否则返回0。
5、用选择法对数组中的n个元素按从小到大的顺序进行排序。
6、求一个3行4列矩阵的外框的元素值之和。
7、以下程序把两个数按由大到小的顺序输出来。
8、求1到20的阶乘的和。
9、判断字符ch是否与str所指串中的某个字符相同;若相同,什么也不做,若不同,则将其插在串的最后。
(指针)10、已知一个数列从第0项开始的前三项分别为0、0、1,以后的各项都是其相邻的前三项的和。
下列给定程序中,函数fun的功能是:计算并输出该数列的前n项的平方根之和sum,n的值通过形参传入。
11、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?12、编写函数fun计算下列分段函数的值:x*x+x x<0且x≠-3f(x)= x*x+5x 0≤x<10且x≠2及x≠3x*x+x-1 其它13、请编写函数fun,对长度为8个字符的字符串,将8个字符按降序排列。
14、实现交换两个整数的值。
15、读入一个英文文本行,将其中每个单词的第一个字母改成大写,然后输出此文本行(这里的“单词”是指由空格隔开的字符串)。
16、先将在字符串s中的字符按正序存放到t串中,然后把s中的字符按逆序连接到t串的后面。
17、计算数组元素中值为正数的平均值(不包括0)。
18、将s所指字符串中出现的、t1所指子串全部替换成t2所指子字符串,所形成的新串放在w 所指的数组中。
在此处,要求t1和t2所指字符串的长度相同。
19、将s所指字符串中的字母转换为按字母序列的后续字母(但Z转换为A, z转换为a),其它字符不变。
20、在键盘上输入一个3行3列矩阵的各个元素的值(值为整数),后输出矩阵第一行与第三行元素之积,并在fun()函数中输出。
C语言程序改错题总结
答题要求
程序中有两处错误,错误都在提示行:/***********found***********/的下面一行,请考生注意。请改正程序中的错误,使它能得出正确的结果。
注意:程序中的其它地方请考生不要随意改动,不得增行或删行,也不得更改程序的结构!(注:红色的为已改过的)
1、从低位开始取出长整型变量s中奇数位上的数,依次构成一个新数放在t中。
源文件:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <math.h>
main()
{ int score,sum=0;
int i,n=0;
for(i=1;i<=5;i++)
{ scanf("%d",&score);
sum+=score;
源文件:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <math.h>
main()
{ int i,j,k;
for(i=1;i<=4;i++)
/************found************/
{ for(j=1;j<=i;j++)
}
3、求两实数平方根之和,输出此和。例如:输入12和20,输出结果是:y = 7.936238。
源文件:
#include <stdio.h>
全国计算机二级考试C语言(最全复习资料)——填空、改错题重点题型归类分析
全国计算机等级考试题型复习资料一、程序填空题【解析】该类型主要考察学员对一个C程序的整体把握能力。
首先须通读整个源程序,了解程序的功能后试着边填空边调试,分析输出结果,以找到正确答案。
因此,不像程序修改题那么简单。
【程序填空题的特点和注意事项】(1)程序填空的试题中通常包含三个空需要填写。
(2)试题中用"******found******/"来提示在下一行或下二行注明填空的位置及编号,如___1___。
(3)程序填空考核对程序的整体把握,出题点可能是:for循环语句的初始化或条件判断、函数返回值、if语句的条件判断、链表中指针如何移动、文件操作相关函数的参数等。
(4)特别要注意的是:只能在填空的位置填写语句或表达式,不要增行或删行,不要改动程序行的顺序,更不要改动程序的结构。
【建议答题步骤】(1)首先仔细审题,了解试题的要求,看清题目给出的输入和输出例示,以便检验程序运行的结果是否正确。
(2)审视"/******found******/"所在函数,根据题义理解程序所采用的基本算法,做到心里有数。
(3)填好空后对测试程序进行检查是否有语法错误。
当编译提示有语法错时,可参考编译提示来查找并改正错误。
(4)当不再出现语法错时,执行程序,按照试题的示例给出的数据进行试算,若试算的结果与给出的输出结果相同时,该题就做对了;若试算的结果与给出的输出结果不同,就应进一步检查程序中的逻辑错误。
(5)修改完成,得到正确结果后,一定不要忘记把修改后的程序存盘。
二、程序修改题【解析】该类型主要考察学员对C程序部分结构或算法的分析和理解能力。
因此,对学员的知识把握能力要求不高,通常可以借助计算机帮我们改错(仅限语法错误)。
若非语法错误,则需对程序边调试边找错,分析输出结果,找出错误所在并改正。
【程序填空题的特点和注意事项】(1)改错的试题中通常包含两个(或三个)错误需要修改。
(2)试题中用"******found******/"来提示在下一行(或下面第二行)有错。
(完整word版)C语言程序改错总结
难度11、程序D1.c的功能是从键盘读入一个数并在屏幕上显示。
int main(void){int xy2;/*********Found************/scanf("%s", &xy2); //改为:scanf("%d”,&xy2);/*********Found************/printf("xy2=%5d\n", &xy2); //改为:printf("xy2=%5d\n”,xy2);return 0;}2、程序D2.c的功能是调用函数,显示两个实数间最大的一个。
#include<stdio。
h>float fmax(float x, float y);int main(void){/*********Found************/float l,1; //il = 3。
0;i = 5.6f;/*********Found************/printf("fmax(%5.2f,%5.2f)=%5.2f\n”, i, l, fMax(i,l)); // fmaxreturn 0;}/*********Found************/int fmax(float x, float y) //改:float{if (x < y)return y;else return x;}3、程序D4.c的功能是计算半径为2+3的圆的面积。
#include<stdio.h〉#define PI 3。
14/*********Found************/#define S(bj)PI*bj*bj //改:PI*(bj)*(bj) int main(void){/*********Found************/int mianJi;//改为:doublemianJi = S(2+3);printf(”mian ji=%5。
计算机等级考试二级C语言上机改错题考点总结
计算机等级考试二级C语言上机改错题考点总结改错题的错误主要分为以下几类:1、if或while语句若错误行是if或者while语句,则要注意以下点:1)首先判断是否正确书写if或while关键字;2)然后看有没有用小括号把整个表达式括起来,若没有则加上小括号;3)若条件表达式中有指针变量而且没有指针运算符时,则加上指针运算符;4)若if条件表达式中只有一个等于号即数学等号(=),则要改写成两个等于号即逻辑等号(= =);5) 若if条件表达式为其他的比较运算符,则一般是进行逆转或加一个等于号;2、for语句若错误行是for语句,则要注意以下几点:1)首先判断for有没有书写正确;2)然后看for中的表达式是不是用分号(;)隔开,若不是则改为分号。
记住是分号(;),不是逗号(,)!3) 再者,分析for中的三个表达式,是否符合题意;第一个表达式表示起始条件,第二个表达式表示终止条件,第三个表达式表示循环变量的变化。
3、 return语句若错误行为return语句,则要注意以下几点:1)首先看是不是正确书写return关键字;2)然后看是不是缺少分号,若是则加上分号即可;3)再者判断return后的变量或表达式是否正确;这种错误需要根据题意来分析,分析返回变量或表达式的值和类型。
4、赋值语句若错误行是赋值语句,则要看赋值是否正确,然后看赋值运算符是否写正确。
5、定义语句若错误行是定义语句,则要注意:1)首先分析变量类型名是否写对;2)然后分析给变量赋初值是否正确;3)若以上均不是,则看是不是少定义了某个变量或少了花括号;6、表达式错误问题:若错误行中有整数1除以某个表达式或变量时,必须把整数1改为1.0;若变量或表达式是整型时,则只能进行强制类型转换。
7、字符串类问题若错误行中有字符串结束符,则特别要要注意结束符有没有写错。
但是要区分清楚字符‘o’和数字’0’。
8、指针类问题若错误行中有指针变量,并且该变量名之前没有指针运算符,则一般都是加上指针运算符;9、函数首部类问题:若错误行是函数首部,则要注意:1)首先看该行最后有没有分号,若有则删掉分号;若中间有分号则要改为逗号;2)形参和实参类型不一致问题① 若实参是个地址或数组名或指针变量名,则对应的形参肯定是指针或数组;②若实参是二维数组名,则对应的形参应该是指针数组或是二维数组;③若后面用到某形参的时候有指针运算符,则该形参比为指针类型;④若形参是二维数组或指向M 个元素的指针变量,则该二维的长度必须与main中对于数组的第二维的长度相同。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机等级C语言上机考试改错题分类总结改错题总的出错分为两大类:语法出错和逻辑出错,此类题目是比较简单的题型,因此也是最容易把握的知识点。
注意:错误都是出现在/**********found**********/下面的这一行。
只是下面的这一行,其他行都没有错误。
不能修改其他行。
做题方法:1.首先拿到题目,先将题目详细看看,看清题目对做题时很有帮助的,特别是一些逻辑性较强的题目很有用。
有的同学可能会觉得题目太难了不想去读,其实在做改错题目时即便你不会也能把题目做对。
2.按照以下的步骤解决题目中的错误的内容,对应着修改。
修改完之后保存即可。
1.关键字出错:在二级C 语言考试中仅仅考查学生对基本的关键字掌握情况,比如:整型就是int 不是Int,知识点简单。
2.格式出错:在考试中主要考查学生细心的程度,最喜欢考简单的知识点。
(1)少分号:考查的知识点:分号是语句结束的标志。
(2)for 语句的格式:for( ; ; )中间用分号隔开不是用逗号隔开。
(3)if 语句的格式:if(表达式),if 后面必须加上小括号。
(4)命令行格式出错:如include 命令少了#,正确的形式应该是#include “stdio.h”;(5)常用函数格式:A.函数名后面一定是花括号,不能是方括号,方括号只有在数组下标中用到。
B.要同时定义两种以上不同的数据类型的时候必须在不同类型的数据中间加上分号。
C.scanf(“%d”,a[i][j]);应该改为scanf(“%d”,&a[i][j])。
考查scanf输入函数的格式。
(6)数组:A.数组下标引用时候只能用反括号。
B.二维数组中的列下标不能省略。
(7)常用符号出错:A.C 语言中大于等于符号是“>=”,但是在考试的时候可能出现将它写为“=>”B.当题目中需要比较某个字符是否是大写字母或是小写字母、数字时,必须将“与”、“或”、“非”记住。
判断某个字符是否是大写字母:char ch;if(ch>=’A’&&ch<=’Z’)printf(“%c”,ch);判断某个字符是否是小写字母:char ch;if(ch>=’a’&&ch<=’z’) printf(“%c”,ch);判断某个字符是否是数字:char ch;if(ch>=’0’&&ch<=’9’)printf(“%c”,ch);判断某个数字是否能同时被5 和7 整除:int i=35; if(i%5==0&&i%7==0)printf(“%d”,i);判断某个数字是否能被5 或7 整除:int i=35; if(i%5==0||i%7==0)printf(“%d”,i);判断某个数字是否是偶数或奇数:int i=35;if(i%2==0) printf(“%d 是一个偶数”,i);else printf(“%d 是一个奇数”,i);1. 使用了没有定义过的变量:这种题目可以通过编译查找出出错的地方并改之。
(1)0(零)和o(字母欧)的区别:(2)P(大)和p(小)的区别:(3)普通变量大小写的区别:A.有的变量在定义的时候是小写但是在使用的时候是大写,或是在定义的时候是大写在使用的时候却是小写。
B.大小写没有出错,程序中直接使用了没有定义过的变量,要求学生更加细心的读题目。
2.运算符号出错:(1)C 语言中除号是“/”不是“\”(2)赋值号(=)和等号(= =)混淆,记住在if 语句中出现赋值号(=)一般是讲它改为等号(= =)。
3.表达式的取值范围出错:当遇到计算表达式的累加或是累减时,一定用到循环来完成相应的操作。
例如:要求计算t=1-1/2*2-1/3*3-….-1/m*m 这个表达式,在这个题目中第一空有这样的for 语句:for(i=2;i<m;i++)y-=1/(i*i);从题目中不难发现i 是一个变量,它的取值范围从整数2 开始到m-1 结束,最终计算的结果为y=1-1/2*2-1/3*3-….-1/(m-1)*(m-1)和题目要求的不符,因此将i<m 改为i<=m。
做这样的题目看两点:一看题目中的表达式,二看for 语句中变量的取值范围。
4.C 语言中的除法运算:这个考点同样考查表达式的相关知识。
例如:要求计算t=1-1/2*2-1/3*3-….-1/m*m 这个表达式,在这个题目中第一空有这样的for 语句:for(i=2;i<m;i++)y-=1/(i*i);刚才我们将了表达式的范围,现在我们考虑y-=1/(i*i);是否正确?赋值号左边问题不大,我们看看右边1/(i*i),其中i 是整数,那么i*i也是整数,在C 语言中1 除以比它大的数时值为零。
这样和题目的要求就不相符。
记住:1/2 的值为零,只有1.0/2 或是1.0/2.0 的值为0.5。
5.找最大值和排序问题:遇到这种题目在改错题中最容易考查的是大于(>)、小于(<)等符号的变化,当你查找出错的地方没有语法错误,也没有使用了未定义的变量时,记住这个口诀:将大于改为小于,将小于改为大于!6.函数的返回值及其参数:重点int fun(int x,int y) main(){ {if(x>y) return x;int a,b,c;else return y;scanf(“%d%d”,&a,&b);} c=fun(a,b);printf(“最大值为:%d”,c);}(1) 函数的返回类型:在上面的例子中fun 函数的返回值是int,如果将int 改为double,很明显是错误的。
从两个地方来看,首先return x;中x 的类型必须和fun 函数中的返回值相同,x 是整型。
其次c=fun(a,b);中fun 函数将一个返回值赋值给了变量C,说明函数返回的值一定是整型。
记住:函数调用、函数的返回值和ruturn 中数据类型必须一致!(2) return 后面的表达式及其类型:(3) 函数传递的参数:int fun(int *x,int *y) main(){ {if(*x>*y)return *x; int a,b,c;else return *y; scanf(“%d%d”,&a,&b);} c=fun(&a,&b);printf(“最大值为:%d”,c);}一定注意:传递的是值还是地址。
比较上面两个例子大家很容易区别传递的是值还是地址,第一个例子调用函数的时候传递的是值,因此在fun 函数的形参中x和y 仅仅是普通的变量,而第二个例子中调用函数的时候传递的是地址,因此在fun 函数的形参中x 和y 就是两个指针变量。
5 (4)指针的使用:int fun(int *x,int *y){if(*x>*y)return *x;else return *y;}在此例中fun 函数的形参是x 和y,它们的类型是整型的指针,那么在fun 函数的函数体中使用到x 和y 的值时一定要区分:x>y 比较的是x 和y 所存变量地址的大小,*x>*y 才是比较值的大小。
如果存在*x=x+y;的类似情况一定是错误的,必须要将赋值号的左右两边的类型变为一致。
7.数组:(1)数组下标的初始值:数组下标从零开始,到长度减一结束。
考试技巧:当出错行在定义部分时,先检查该定义语句有没有语法错误,再看定义语句中的变量有没有赋初始值,最后看变量赋的初始值有没有正确。
定义初始值有窍门,遇到累加时,用来存放累加和的变量一般赋值为零,遇到求阶乘时,用来存放阶乘值的变量一般赋值为一。
(2)普通变量的初始值:依照上面的技巧,我们同样可以将它延伸到普通变量中。
(3)数组和字符串长度减一:当使用数组中的元素时,最大值只能到数组长度减一。
字符串以’\0’作为字符串的结束标志,因此取值最大也只能到字符串长度减一(4)数组下标往后走:当题目要求将一个数组中的元素直接赋值或是以某种方式复制到另一个数组中时,接受数据的数组中的下标要自增。
8.特例:部分题目的解答很特殊,需要根据上下文中的内容来解答题目;9.素数掌握求素数的格式:判断一个数是否是素数的方法很多,的是只用掌握一种即可,首先掌握判断一个素数的方法;素数的定义:1、是自然数2、只能被1 和本身整除,2 到本身减一之间的数不能整除该数。
判断m 是否为素数的格式:for(i=2;i<m;i++)if(m%i==0)break;if(m==i) 表明m 是素数;素数只能被1 和m,那么用2 到m-1 之间的数除m,如果有一个数能整除m,说明m 不是一个素数,就不用再判断后面的数值了,用一条break 语句提前结束函数;如果一直都不能整除,则说明m 是一个素数。
那么用循环语句表示2 到m-1 之间的数的语句为:for(i=2;i<m;i++),如果在这个范围内的数值有一个数值能整除m,说明m 不是一个素数,则可以提前结束循环,break;那么结束之后这个循环中的变量I 的值小于m,如果m 是一个素数的时候,则一直都不执行break 语句;则循环语句结束的时候是在i==m 的时候退出循环。
结束循环以后,进行i和m 的比较,如果i 小于m,则表明m 不是一个素数;如果i 等于m,则表明m是一个素数。
求素数的题目只要把格式给带进去就可以了。
10、链表链表的题目分为带头结点的和不带头结点的链表;1、带头结点的链表带头结点的链表的第一个空的改为:p=h->next;第二个空改为:p=p->next;.2、不带头结点的链表带头结点的链表的第一个空的改为:p=h;第二个空改为:p=p->next;.。