上机习题的归纳总结_第1页
上机习题的归纳总结_第2页
上机习题的归纳总结_第3页
上机习题的归纳总结_第4页
上机习题的归纳总结_第5页
已阅读5页,还剩257页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

上机试题的归纳总结一般情况下,错误主要分为两大类:(1) 语法错误。对于这种错误,用编译器很容易解决。所以,改错题的第一不是先编译,解决这类语法错误。下面总结了二级 C 语言上机改错题中常见的语法错误:1 丢失分号,分号误写为逗号或分号的位置不对(尤其是在 while ) 。2 关键字拼写错误,如本来小写的写成了大写(数字 1 和 字母 L, l ;字母 O,o和数字 0) 。3 语句格式错误,例如 for 语句中的多写或者少写分号。4 表达式申明错误,例如:少了() ,或类型错误。5 函数形参类型说明错误或调用错误,例如多了或少了*。6 函数类型说明错误,与 main ()函数中不一致(关键看函数返回值与申明类型是否一致即可) 。7 运算符书写错误,例如:/写成了。(2) 逻辑错误,或者叫语义错误,这和实现程序功能紧密相关,一般不能用编译器发现。对于逻辑错误可以按下列步骤进行查找;1 先读试题,看清题目的功能要求。2 通读程序,看懂程序中算法的实现方法。3 细看程序,发现常见错误点。 (常见错误:1.变量初值错误 2 循环次数不对 3 下标越界 4 运算类型不匹配。一 . 字符处理a 字符 ASCII 码值的应用 如 1-3 表示第一套的第三题编程排序(1-2 3-3 10-2 25-2 26-3 34-1 ) 比较字符串大小 ( 25-2 1-2 20-2 62-3 97-1 )大小写转换( 1-1 17-3 20-2 39-1 50-2 50-3 54-1 54-2 62-2 )删除删除指定 ASCII 的字符或指定下标条件(6-2 30-2 36-1 51-1 68-1 98-3 85-2 86-3b 字符(串)查找及删除指定字符(24-1 30-2 37-2 38-2 42-1 52-3 53-3 56-2 56-3 57-3 63-3 66 -1 72-3 )c 字符统计(8-1 9-1 17-1 18-1 69-2)d 字符串逆置 (24-1 48-1 68-2 )e 回文字符串 (40-1 63-1 )f 数字字符与长整数间的转换 (3- 1 15-1 21-1 21-2 45-3 )g 字符串长度比较 (15-3 46-3h 字符串移动 ( 7-1 35-2 14-2 20- 3 59-3i 字符串连接和插入 (7-1 11-1 20-1 24-2 48-2 64-2 69-3)j 进制转换 (29-1 99-2k 统计连续指定字符 ( 36-1 37-1 12-2l 含*处理的字符串 ( 64-3 73-3 79-3 86-3 87-3 89-1 95-3 m 后序字母处理 (52-2 53-1 4 数组处理a. 数组元素排序 ( 34-2 13-2 57-2 61-1 65-1 70-1 71-1)b. 求数组元素的最大值、最小值或平均值 (2-3 8-2 8-3 11-2 11-3 12-2 15-2 22-1 23-1 28-1 31-3 51-2 54-3 58-1 89-3 )a) 求二维数组的最大值、最小值或平均值计算 ( 2-3 6-1 7-3 18-3 22-1 51-2 61-3 84-1 91-1c. 二维和一维之间的转换 (60-3d. 移动数组元素 (55-1 58-3e. 把指定数组元素移动到字符串或数组中 (4-1 12-2 14-1 76-3f. 元素分段存放g. 删除指定数组元素 ( 12-1 32-2 44-1 h. 查找指定数组元素 (33-1)5 数学问题a. 公式求值(一) (F(M,N)类 (2-2 4-2 16-2 70-12 92-3 93-1 94-2 95-2 96-3 98-2 99-2b. 公式求值(二) (F(N)=G(F(N-1) )类 ) (3-2 5-3 22-2 65-2 71-2 97-2 97-3 100-2c. 多项式求值d. 素数问题 (9-2 10-3 22-3 25-3 38-1 43-3 52-1 66-2 68-3 96-1e. 求方程的解 ( 2-1 5-1 f. 矩阵的问题 (6-1 7-3 12-3 13-3 19-2 23-127-2 29-2 39-3 40-3 41-3 42-3 46-2 70-3 72-392-2g. 数按位分离与合并 ( 1-3 4-1 5-2 7-2 13-1 14-1 18-2 21 -2 43-2 53-2 64-3 69-1h. 四舍五入 (19-1 100-3i. 整除或同时有两个整除 (4-3 6-2 9-3 16-3 17-2 60-1 99-3j. 奇偶判断问题 ( 25-1 32-3 33-3 4-2 47-1 48-14-3 6-3 9-3 16-3 17-26 结构体和链表a. 求结构体中元素最大值、最小值和平均值(14-3 19-3 21-3 23-3 7-3 91-1 65-3 67-3b. 排序 (21-3 23-2 c. 元素分段存放d. 查找元素 (23-3 24-3e. 链表的建立 ( 44-2 44-37 实际应用a. 统计单词的个数 (16-1b. 判断某一年份是否为闰年 (35-1c. 数据存储 ( 23-2 45-1 62-2 d. 求最大公约数 (49-2 e. 求绝对值 (10-1f . 文件操作 ( 94-1 98-1 99-1g. 穷取法求值 (93-2 h. 利用折半查找算法查找或冒泡法对利用插入排序法对 (58-2 81-2 一百套试题第一套1.填空题请补充main 函数,该函数的功能是:把一个字符串中的所有小写字母字符全部转换成大写字母字符,其他字符不变,结果保存原来的字符串中。例如:当strN=“123 abcdef ABCDEF!”,结果输出:“123 ABCDEF ABCDEF!”。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。试题程序:#include#include#include#define N 80void main()int j;char strN=“ 123abcdef ABCDEF!“;char *pf=str;clrscr();printf(“*original string *n“);puts(str);【 1】 ;while(*(pf+j)if(*(pf+j)=awhile(*p|*q)/*found*/ if (*pvoid fun(int a ,int b,long *c)main() int a,b; long c;clrscr();printf(“Input a,b;“);scanf(“%d%d“,fun(a,b,printf(“The result is:%ldn“,c);1.填空题【1】j=0 【2】*(pf+j)-32 【3】j+【解析】填空1:变量j声明时没有初始化,而后面程序用到j,所以在这里对j初始化为0。填空2:将小写字母转换为对应的大写字母的方法是,小写字母的ASCII码减去32,得到对应的大写字母的ASCII码。填空3:如果当前字符不是小写字母,则不做任何处理,使指针指向下一个字符,准备进行判断。2. 改错题(1)错误: if (*p=*q)(2)错误:k+正确:k+;【解析】错误1:依题意,把ASCII值小或相等的字符存放到c数组中,故if语句的关系运算符应为“=“。错误2:C语言规定,每个语句要用分号结束。3. 编程题void fun(int a ,int b,long *c)*c=(b%10)*1000+(b/10)*100+(a%10)*10+a/10; 【解析】语句*c=(b%10)*1000+(b/10)*100+(a%10)*10+a/10;是将a数的十位和个位数依次放在c数个位和十位上,b数的十位和个位数依次放在c数的百位和千位上。注意“/“和“%“的用法。第二套1.填空题请补充main 函数,该函数的功能是求方程ax 2+bx+c=0的两个实数根。方程的系数a、b、c从键盘输入,如果判别式(disc=b 2-4ac)小于,则要求重新输入a 、b、c的值。例如,当a=1,b=2,c=1时,方程的两个根分别是x1=-1.00, x2= -1.00。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。试题程序:#include “math.h“#include main()float a,b,c, disc,x1,x2;clrscr();doprintf(“Input a,b,c:“);scanf(“%f,%f,%f“,disc=b*b-4*a*c;if(disc#include double fun(int m) double y=1.0;/*found*/int j=1;int i;for(i=2; i#include #define M 3#define N 4void fun(int ttMN,int ppN)main()int tMN=68, 32, 54, 12,14, 24, 88, 58,42, 22, 44, 56;int pN,i,j,k;clrscr();printf(“The riginal data is:n“);for(i=0;imax) /*如果各列中的其他元素比最大值还大,则将这个更大的元素看做当前该列中最大的元素*/max=ttij;ppj=max; /*将各列的最大值依次放入pp数组中*/【解析】本题中函数的功能是求出二维数组中每列的最大元素。首先,假设各列中的第一个元素最大,然后利用行标值的移动来依次取得各列中其他元素的值,并与假设的最大值进行比较,如果遇到更大的,则把这个更大的元素看做当前该列中最大的元素,继续与该列中其他元素比较。第三套1.填空题请补充函数fun() ,该函数的功能是:把一个整数转换成字符串,并倒序保存在字符数组str中。例如:当n=13572468时, str=“86427531”。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。试题程序:#include#include#define N 80char strN;void fun(long int n)int i=0;while(【 1】 )stri=【 2】 ;n/=10;i+;【 3】 ;main()long int n=13572468;clrscr();printf(“* the origial data *n“);printf(“n=%ld“,n);fun(n);printf(“n%s“,str);2. 改错题下列给定程序中,函数fun的功能是按以下递归公式求函数值。 152)()(nFu例如:当给n输入5时,函数值为240;当给n输入3时,函数值为60。请改正程序中的错误,使它能得到正确结果。注意:不要改动main函数,不得增行或 删行,也不得更改程序的 结构。试题程序:#include /*found*/fun(int n);int c;/*found*/if(n=1)c=15;elsec=fun(n-1)*2;return(c);main()int n;printf(“Enter n:“);scanf(“%d“,printf(“The result :%dnn“,fun(n);3. 编程题请编写函数fun() ,对长度为7个字符的字符串,除首、尾字符外,将其余5个字符按ASCII值码升序排列。例如:原来的字符串为BdsihAd ,则排序后输出为BAdhisd 。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include #include #include int fun(char *s, int num)main()char s10;clrscr();printf(“输入7个字符的字符串:“);gets(s);fun(s,7);printf(“n%s“,s);1.填空题【1】n0 【2】n%10+ 0 【3】stri= 0【解析】填空1:while循环的执行条件是n0,当n等于0时,说明已经将整数的各位数字都转换为数字字符并存入字符串中了。填空2:n对10求余,得到整数n的个位数字,在加上字符 0的ASCII码,得到对应的数字字符,并存入字符串str中。填空3:将整数转换为字符串并倒序存放入字符数组str中后,还要在str最后加上字符串结束标记符 0。2. 改错题(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论