东北大学c语言上机考试题全答案
⑴ 帮忙给个《C语言程序设计》 练习题 答案 这次考试题就在其中。。。。
1A(B 中第四个选项首行是数字,D选型有关键字) 2D 3A 4A 5C(我在TC上运行的) 6A 7D 8D(0147是8进制转换成十进制即103即‘g’) 9D(属自动类型转换) 10 D 11C 12A(条件运算符运算方式是从右向左的) 13B(算术运算符-的优先级高于关系运算符<=,最后是逻辑判断 为真1,假0)14C
15 D(考察逗号运算符) 16D
⑵ 2015年东北大学计算机专升本考试题及答案
计算机基础知识综合
《数据结构》
严蔚敏
清华版社
《C语言程序设计》第3版
谭浩强
清华版社
C语言程序设计与数据结构
《标准C语言程序设计》
金名等译
清华版社
《数据结构》(用面向象与C++语言描述)(第2版)
殷昆
清华版社
⑶ C语言考试题
我来回答下把:
1.1
2.9
解释:t = (a>b)?a:b等价于t = ((a>b)?a:b),这下应该知道了把
3.96 `(和~键是同一个键)
解释:a=96;96是那个字符的ACSII码值的十进制表示,它的十六进制表示的ASCII码值为60,你可以对96进行除16取余法得到60,然后你去查看下字符的ASCII码 16进制表示的那个表就会发现,它对应的是这个字符,所以就是他了,别和单引号混淆就好,单引号的ASCII码十六进制表示为27
4.a[0] a[1] a[2]
5.1600
6.文本文件 二进制文件 [这个拿的不是很准]
7.fopen fclose fseek
下面:
1.C
解释:a+=a-=a*=a,首先要知道+=,-=,*=的优先级是相同的,但是他们的结合性是由右向左的,所以,他相当于a+=a-=(a=a*a),你还要知道,这是在同一条语句中多次修改同一个变量的值,这里有结合性,可以保证,但是有的时候并不可以,因为语言中明确规定,求值顺序未定义,一般尽可能不要在同一条语句里多次修改同一个变量的值,有的时候还和编译器有关的,a+=a-=(a=a*a)相当于a+=(a=a-(a=a*a)),在a=(a+(a=a-(a=a*a))),所以为0
2.B
3.D
解释:你定义一个带参数的宏#define ADD(x) (x)+(x)
你要知道,宏替换是机械化的替换,不会很智能化的,也就是说
在这里,替换的时候是替换成了这样d=(a+b)+(a+b)*c;所以最后就是80了
4. A
解释:这样理解把, char a[5]; char *p=a;这个是把数组的首地址赋给指针p来初始化指针,你后面再加一句p="abcd";不就是对指针的赋值吗,使指针不再指向数组的首地址,而是指向了字符串的首地址了.相信char *p="abcd";很常见把,呵呵...
5.C
解释:因为k=2,然后执行关系表达式k==0,结果显然判断结果为假,所以不执行循环体
6.C
7.A
指针是不能相加的
8.D
解释:这个应该好好解释下,这个题还好了
struct st{ int n;struct st *next;};
static struct st a[3]={5,&a[1],7,&a[2],9,‘\0’},*p; p=&a[0];
A p++->n B p->n++ C (*p).n++ D ++p->n
分析:首先你要知道,这是定义了一个结构体数组,这个static struct st a[3]={5,&a[1],7,&a[2],9,‘\0’}写的易读一点就是static struct st a[3]={{5,&a[1]},{7,&a[2]},{9,'\0'}},是不是明了了好多.
你做这个题目之前还需要明白一点,即箭头操作符的优先级高于++运算符,然后分析选项
选项A.p++是后缀加,所以执行(p++)->n(即p++->n) 相当于执行p->n,即得到的值是5
选项B. p->n++相当于(p->n)++,由于是后缀加,所以得到的值也是5
选项C.(*p).n++ 就是相当于((*p).n)++,更相当于(p->n)++,所以和上面的是一样的,也是5,为什么它相当于它呢,这就要你看看箭头操作符的由来了,箭头操作符的由来就是为了结合解引用操作符*和点操作符.于一起的.来简化书写,增加可读性
选项D.++p->n 相当于++(p->n),由于是前缀加,所以得到的值为6了
9.C,选择W会格式化
10. B ,数组名其实就相当于一个指针,这里对指针做运算,加1使指针下移
写出运行结果:
1.
10623-9003
2.
6 7 8
填空题:
1.
#include <stdio.h>
#include <math.h>
2. 2
3.break;
4.k+1
编程题:
1.代码如下:
#include<stdio.h>
int main()
{
int i,n;
long s=1;
scanf("%d",&n);
for(i=1;i<=n;i++)
s*=i;
printf("%ld",s);
return 0;
}
2.代码如下
#include<stdio.h>
int main()
{
int i,s=0;
for(i=1;i<=100;i++)
s+=i;
printf("%d",s);
return 0;
}
应该没错把,楼主有什么问题可以发消息给我
⑷ 急求全国计算机二级考试C语言上机题库(10年9月份考的),要有题带答案的
LZ邮箱我就不发了,告诉你网站
http://www.shangxueba.com/share/s23.html
自己去里面下载吧!
记得加分哦。。。呵呵
⑸ 跪求近几年全国计算机等级考试二级C语言笔试和上级真题及答案解析,谢谢!!
推荐资料:
北京邮电大学出版社出版的最好。
考点复习:《全国计算机等级考试考眼分析与样卷解析——二级C语言》
上机复习:《全国计算机等级考试上机考试与题库解析——二级C语言》
真题复习:《全国计算机等级考试历年真题必练(含关键考点点评)——二级C语言》
冲刺模拟:《全国计算机等级考试6日达标——二级C语言》
不错,很便宜,过关率高,值得使用。
⑹ 求一份2012c语言上机题库100套题,带答案,要word版的,谢谢,收到追加分,好人一生平安~~
还要吗 [http://wenku..com/view/785e871f964bcf84b9d57b1f.html]连接一下自己下 希望对你有用!!
⑺ 2007年计算机等级考试二级C语言上机试题(1-8套) 有 答案 吗急用,谢谢!
http://www.isud.com.cn/down.asp?cat_id=13&class_id=53
本分类共有96个文件
『计算机』2007年计算机二级C语言上机考试试题(1-8套..
·2007年计算机二级C语言上机考试试题(1-8套)
软件大小:未知 授权方式:免费下载 下载:5118 推荐程度:
『计算机』全国计算机等级考试一级试题及答案
·1. 微型计算机硬件系统中最核心的部件是( ).B A,主板 B,CPU C,内存储器 D,I/O设备 2. 下列术语中,属于显示器性能指标的是( ).C A,速度 B,可靠性 C......
软件大小:未知 授权方式:免费下载 下载:5208 推荐程度:
『计算机等级题』全国计算机等级考试一级试题库
·全国计算机等级考试一级试题库(答案在题号前面) D(1)引导型病毒程序被存放在 A)最后1个扇区中 B)第2物理扇区中 C)数据扇区中 D)引导扇区中 C(2)文件被感染上病......
软件大小:未知 授权方式:免费下载 下载:2638 推荐程度:
『计算机等级题』全国计算机等级考试一级试题及答案
·全国计算机等级考试一级试题及答案 1. 微型计算机硬件系统中最核心的部件是( ).B A,主板 B,CPU C,内存储器 D,I/O设备 2. 下列术语中,属于显示器性能指标......
软件大小:未知 授权方式:免费下载 下载:2091 推荐程度:
『计算机等级题』2004年9月全国计算机等级考试二级C笔试试题..
·2004年9月全国计算机等级考试二级C笔试试题 11.用C语言编写的代码程序 A)可立即执行 B)是一个源程序 C)经过编译即可执行 D)经过编译解释才能执行 12.......
软件大小:未知 授权方式:免费下载 下载:588 推荐程度:
『计算机等级题』全国计算机等级考试一级B模拟试题五
·全国计算机等级考试一级B模拟试题五 (1)我国第一台电子计算机诞生于哪一年 A)1948年 B)1958年 C)1966年 D)1968年【答案】:B 【解析】:我国自......
软件大小:未知 授权方式:免费下载 下载:550 推荐程度:
『计算机等级题』2004年4月全国计算机等级考试二级C语言笔试..
·2004年4月全国计算机等级考试二级C语言笔试试题基础知识和C语言程序设计一, 选择题((1)~(40)每题1分,(41)~(50)每题2分,共60分) 1, 1MB等于......
软件大小:未知 授权方式:免费下载 下载:481 推荐程度:
『计算机等级题』06年计算机等级考试一级B考试试题及试题分析..
·06年计算机等级考试一级B考试试题及试题分析 1.计算机根据运算速度,存储能力,功能强弱,配套设备等因素可划分为(). A)台式计算机,便携式计算机,膝上型计算机 B)电......
软件大小:未知 授权方式:免费下载 下载:888 推荐程度:
『计算机等级题』广东省计算机等级考试(一级)仿真试题(F)
·广东省计算机等级考试(一级)仿真试题(F) (考试时间:100分钟) 系 班 级 学 号 姓 名 说明:(1)请考生在D盘根目录下建立以自己学号命名文件夹(考生......
软件大小:未知 授权方式:免费下载 下载:664 推荐程度:
『计算机等级题』计算机等级考试三级网络试题
·计算机等级考试三级网络试题 04年9月 教育部考试中心 版权所有一,选择题(每小题1分,共60分) 下列各题A,B,C,D四个选项中,只有一个选项是正确的.请将正确选项涂写......
软件大小:未知 授权方式:免费下载 下载:634 推荐程度:
『计算机等级题』全国计算机等级考试四级笔试试题
·一,选择题:((1)-(90))题,分为1分题和2分题,满分120分.除标注2分题外,其它均为1分题.) 下列各题A),B),C),D)四个选项中,只有一个是正确的,请将正确选项......
软件大小:未知 授权方式:免费下载 下载:298 推荐程度:
『计算机等级题』计算机等级考试上机模拟试题汇总
·计算机等级考试上机模拟试题汇总模拟试题(一) 1.填空题请补充函数fun(),该函数的功能是:把从主函数中输入的字符串str2接在字符串str1的后面. 例如:str1......
软件大小:未知 授权方式:免费下载 下载:778 推荐程度:
『计算机等级题』计算机等级考试二级模拟试题4基础知识与FOX..
·计算机等级考试二级模拟试题4 基础知识与FOXBASE程序设计 (考试时间120分钟,满分100分) 一,选择题((1)-(40)每个选项1分,(41)-(50)每个选项......
软件大小:未知 授权方式:免费下载 下载:330 推荐程度:
『计算机等级题』2005年4月全国计算机等级考试二级笔试试题A..
·2005年4月全国计算机等级考试二级笔试试题 Access 数据库程序设计 一,选择题(每小题 2 分,共 70 分) 下列各题 A),B),C),D)四个选项中,只有一......
软件大小:未知 授权方式:免费下载 下载:420 推荐程度:
『计算机等级题』2006年4月全国计算机等级考试二级VFP试题及..
·2006年4月全国计算机等级考试二级VFP试题及答案 (考试时间90分钟,满分100分) 一,选择题(每小题2分,共70分) 下列各题A),B),C),D)四个选项中,只有一......
软件大小:未知 授权方式:免费下载 下载:583 推荐程度:
『计算机等级题』计算机等级考试二级VFp笔试试题
·计算机等级考试二级VFp笔试试题 一,选择题((1)~(35)每小题2分,共70分)下列各题A),B),C),D)四个选项中,只有一个选项是正确的,请将正确选项涂写在大题卡 相......
软件大小:未知 授权方式:免费下载 下载:297 推荐程度:
『计算机等级题』全国计算机等级考试二级VFp笔试试题(含答案..
·全国计算机等级考试二级VFp笔试试题(含答案) 一,选择题((1)~(35)每小题2分,共70分) 下列各题A),B),C),D)四个选项中,只有一个选项是正确的,请将......
软件大小:未知 授权方式:免费下载 下载:356 推荐程度:
『计算机等级题』全国计算机等级考试二级VB上机试题
·全国计算机等级考试二级VB上机试题 (考试时间90分钟,满分100分) 1. 基本操作(2小题,每小题15分,共计30分) 注意:下面出现的"考生文件夹"均为%USER% ......
软件大小:未知 授权方式:免费下载 下载:461 推荐程度:
『计算机等级题』全国计算机等级考试二级C笔试试题
·9月全国计算机等级考试二级C笔试试题 1.与十进制数200等值的十六进制数为 A) A8 B)A4 C)C8 D)C4 2.DOS文件系统的组织结构属于 A)星......
软件大小:未知 授权方式:免费下载 下载:213 推荐程度:
『计算机等级题』计算机等级考试试卷二级VFP试题及答案
·计算机等级考试试卷二级VFP试题及答案一,选择题((1)~(35)每小题2分,共70分) 下列各题A),B),C),D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答......
软件大小:未知 授权方式:免费下载 下载:286 推荐程度:
『计算机等级题』全国计算机等级三级C语言上机试题解析
·全国计算机等级三级C语言上机试题解析三级网络技术和三级数据库技术的C语言上机试题难度较大,题型多样,因此颇难掌握,今将这些试题分类解析,希望能帮大家顺利通过上机考试. 三级......
软件大小:未知 授权方式:免费下载 下载:231 推荐程度:
『计算机等级题』计算机等级二级C语言模拟试题
·计算机等级二级C语言模拟试题一,选择题(1)~(10)每小题2分,(11)-(50)每小题1分,共60分) 下列各题A),B),C),D)四个选项中,只有一个选项是正确的,......
软件大小:未知 授权方式:免费下载 下载:215 推荐程度:
『计算机等级题』计算机等级考试二级VB全真模拟试题含答案(2..
·计算机等级考试二级VB全真模拟试题含答案(2) 一,选择题 (1)—(35)题每题2分,共70分. 下列各题A),B),C),D)四个先项中,只有一个选择是正确的,请将正......
软件大小:未知 授权方式:免费下载 下载:308 推荐程度:
『计算机等级题』2007年9月计算机等级考试二级VB标准模拟试题..
·2007年9月计算机等级考试二级VB标准模拟试题 ,选择题1~20每小题2分,21~30每小题3分,共70分 1.在窗体中添加一个命令按钮,并编写如下程序: Private ......
软件大小:未知 授权方式:免费下载 下载:461 推荐程度:
『计算机等级题』2006年4月全国计算机等级考试二级VB程序设计..
·2006年4月全国计算机等级考试二级VB程序设计试题及答案一,选择题(每小题2分,共70分) 下列各题A),B),C),D)四个选项中,只有一个选项是正确的.请将正确选项填涂......
软件大小:未知 授权方式:免费下载 下载:237 推荐程度:
『计算机等级题』湖南省非计算机专业等级考试试题(FOXPRO一级..
·湖南省非计算机专业等级考试试题(FOXPRO一级选择题) 1, 要求一个数据库文件的数值型字段具有5位小数,那么该字段的宽度最少应当定为( ) A,5位 B,6位 C,7位 D......
软件大小:未知 授权方式:免费下载 下载:1649 推荐程度:
『计算机等级题』全国计算机等级考试一级考试最新模拟试题
·1,设Windows处于系统默认状态,在Word 97编辑状态下,移动鼠标至文档行首空白处(文本选定区)连击左键三下,结果会选择文档的______. A:一句话 B:一行 ......
软件大小:未知 授权方式:免费下载 下载:195 推荐程度:
『计算机等级题』云南省计算机等级考试(二级C)模拟试卷试题五..
·云南省计算机等级考试(二级C)模拟试卷试题五第一卷第一部分:综合基础知识(共30分,每项1分) 1. 在下列设备中,不能作为微型计算机的输出设备的是____. A.打印......
软件大小:未知 授权方式:免费下载 下载:232 推荐程度:
『计算机等级题』计算机等级考试模拟题(第一套)
·计算机等级考试模拟题(第一套) 判断正误题目前常用的国产品牌机是联想,金长城等.(√ ) 第一部内存储程序计算机是用汇编语言来设计程序.(×) 二进制数01100101转......
软件大小:未知 授权方式:免费下载 下载:379 推荐程度:
『计算机等级题』江苏省计算机软件项目开发水平等级考试模拟..
·江苏省计算机软件项目开发水平等级考试模拟试题《程序设计》(Java开发员) 考试说明:卷面分100分;时间2小时考生务必将自己的数据文件存放在D盘上,并以自己的考号命名文......
软件大小:未知 授权方式:免费下载 下载:171 推荐程度:
http://www.zhaoshiti.com.cn/Soft/List.asp?cat_id=53
2007-09-21 2007年9月计算机等级考试二级VB标准模拟试题
2007年9月计算机等级考试二级VB标准模拟试题 ,选择题1~20每小题2分,21~30每小题3分,共70分 1.在窗体中添加一个命令按钮,并编写如下程序: Private Sub Command1Click() X=1:Y=2:Z=3 X=Y:Y=Z:Z=X Print Z End Sub 程序执行后,输出的结果是()(本题分值:1分) A.3 B.0 C.2 D.1 【正确答案】C 2.下列叙述不正..
推荐程度:授权方式:免费软件软件大小:未知下载:82
2007-12-20 微型计算机接口技术复习资料
总线 • 总线是一组公共的信号传输线,用于连接计算机各个部件。 • 位于芯片内部的总线称为内部总线。 • 连接微处理器与存储器、输入输出接口,用以构成完整的微型计算机的总线称为系统总线(有时也称为外部总线)。 • 微型计算机的系统总线分为数据总线、地址总线和控制总线三组。 ……
推荐程度:授权方式:免费软件软件大小:未知下载:8
2007-09-21 江苏省计算机软件项目开发水平等级考试模拟试题
江苏省计算机软件项目开发水平等级考试模拟试题《实际项目开发》(Delphi开发师) 考试时间: 8小时,卷面分:100分项目名称:招评标管理及决策信息系统要求:根据《招评标管理及决策信息系统需求分析说明书》设计和开发系统,所有文档必须齐全,格式见文档模板. (说明:由于时间要求,考试通常分成如下A,B两类,本试题属于B类...
推荐程度:授权方式:免费软件软件大小:未知下载:17
2007-09-21 江苏省计算机软件项目开发水平等级考试模拟试题
江苏省计算机软件项目开发水平等级考试模拟试题《程序设计》(Java开发员) 考试说明:卷面分100分;时间2小时考生务必将自己的数据文件存放在D盘上,并以自己的考号命名文件夹. 开发员程序设计题: (1) 试用递归算法求出Fibonacci数列:1,1,2,3,5,8,……的第40个数,即 F1 = 1 (n=1) F2 = 1 (n=2) Fn = Fn-1 +Fn-2 (n>=3..
推荐程度:授权方式:免费软件软件大小:未知下载:13
2007-09-21 计算机等级考试模拟题(第一套)
计算机等级考试模拟题(第一套) 判断正误题目前常用的国产品牌机是联想,金长城等.(√ ) 第一部内存储程序计算机是用汇编语言来设计程序.(×) 二进制数01100101转换成十六进制数是65.(√) 第二代计算机是电子管为主要逻辑元件,体积大电路复杂且易出故障.(×) 十进制数120转换成二进制数是1111000.(√) 微处理器就是微..
推荐程度:授权方式:免费软件软件大小:未知下载:21
2007-09-21 云南省计算机等级考试(二级C)模拟试卷试题五
云南省计算机等级考试(二级C)模拟试卷试题五第一卷第一部分:综合基础知识(共30分,每项1分) 1. 在下列设备中,不能作为微型计算机的输出设备的是____. A.打印机 B.显示器 C.绘图仪 D.键盘 2. 二进制数101110转换为等值的八进制数是____. A.45 B.56 C.67 D.78 3. 微型计算机中,普遍使用的字符编码是____. A.补..
推荐程度:授权方式:免费软件软件大小:未知下载:15
2007-09-21 全国计算机等级考试一级考试最新模拟试题
1,设Windows处于系统默认状态,在Word 97编辑状态下,移动鼠标至文档行首空白处(文本选定区)连击左键三下,结果会选择文档的______. A:一句话 B:一行 C:一段 D:全文 2,如果你的计算机已接入Internet,用户名为Zhs,而连接的服务商主机域名为Public.tpt.cn,则你的E-mail地址应该是_______. 3,在Word编辑状态下,若想将..
推荐程度:授权方式:免费软件软件大小:未知下载:22
2007-09-21 湖南省非计算机专业等级考试试题(FOXPRO一级选择题)
湖南省非计算机专业等级考试试题(FOXPRO一级选择题) 1, 要求一个数据库文件的数值型字段具有5位小数,那么该字段的宽度最少应当定为( ) A,5位 B,6位 C,7位 D,8位 2,某数值型字段的宽度定为6,小数位为2,该字段所能存放的最小数值是( ) A,0 B,-999.99 C,-99.99 D,-9999.99 3,可以使用5种不同的数据类型描述数据库文件中的..
推荐程度:授权方式:免费软件软件大小:未知下载:21
2007-09-21 2006年4月全国计算机等级考试二级VB程序设计试题及答案
2006年4月全国计算机等级考试二级VB程序设计试题及答案一,选择题(每小题2分,共70分) 下列各题A),B),C),D)四个选项中,只有一个选项是正确的.请将正确选项填涂在答题卡相应位置上,答在试卷上不得分. (1)下列选项中不属于结构化程序设计方法的是. A) 自顶向下B) 逐步求精 C) 模块化D) 可复用 (2)两个或两个以上模块之间..
推荐程度:授权方式:免费软件软件大小:未知下载:18
2007-09-21 计算机等级考试二级VB全真模拟试题含答案(2)
计算机等级考试二级VB全真模拟试题含答案(2) 一,选择题 (1)—(35)题每题2分,共70分. 下列各题A),B),C),D)四个先项中,只有一个选择是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分. (1) 下列不能打开属性窗口的操作是 . A) 执行"视图"菜单中的"属性窗口"命令 B) 按F4键 C) 按Ctrl+T D) 单击工..
推荐程度:授权方式:免费软件软件大小:未知下载:25
首页 上一页 1 2 3 4 5 6 7 8 9 10 下一页 尾页
⑻ 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列的最小元素的值*/
{int k,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>
{index[j]=p[j];
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得到,第三行的值取前两行同列元素的最大公约数,所以编程时可用一个函数来实现求公约数的算法。
#include
#include
#define n 8
/*函数gcd实现求最大公约数的算法*/
gcd(int a,int b)
{int c;
while(b!=0)
{c=a%b;a=b;b=c;}
return a;
}
main()
{int i,j,x,a[3][n];
FILE *f;
if((f=fopen("d:\\temp\\1\\myf2.out","w"))= =NULL)
{printf("Create File myf2.out Failed!\n");exit(0);}
x=26;
/*下面二重for循环实现给第1、2行数组元素赋值的功能*/
for(i=0;i<2;i++)
for(j=0;j<N;J++)< p>
{a[i][j]=x;x=(25*x+357)%1024;}
/*下面for循环通过调用gcd函数实现给第3行数组元素赋值的功能*/
for(j=0;j<N;J++)< p>
a[2][j]=gcd(a[0][j],a[1][j]);
/*下面for循环实现按题目所给格式输出二维数组的功能*/
for(i=0;i<3;i++)
{for(j=0;j<>
fprintf(f,"\n");
}
fclose(f); }
2010年计算机等级考试二级C语言上机习题(2)
一、改错题
【知识点】整数数位处理、数字字符与相应数字的转换、程序调式
【解析】程序中的错误一般可以分为两类,一类是语法错误,即程序中有拼写错误,书写不符合C语言的规定等,此类错误可通过调试(按F9键),根据提示进行改正。另一类是逻辑错误,程序调试已通过(报success),但运行结果不正确,此类错误的修改必须要理解程序后方能改正。
使用putchar函数必须在程序开头加上文件包含#include "stdio.h";scanf语句中必须是地址序列,故scanf("num=%d",num);应改为scanf("num=%d",&num);,且调式时注意将“num=”原样输入;某数字若转换为相应数字字符,应加上字符'0'或48(字符'0'的ASCII码值),故digit[n++]=m%10;应改为digit[n++]=m%10+'0';;最后输出时,n已在前面多加了一次,故而输出时应先减1,故for(;n>=0;n--)中第一个表达式应加上n--或--n或n=n-1。
【答案】①在程序开头加上#include "stdio.h"
②将原第五行的scanf("num=%d",num);改为scanf("num=%d",&num);
③将原第十一行的digit[n++]=m%10;改为digit[n++]=m%10+'0';
④将原第十六行的for(;n>=0;n--)改为for(n--;n>=0;n--)
二、编程题
【知识点】字符串应用、数据文件的使用
【解析】注意,按要求必须调用函数,且使用数据文件完成输出。使用数据文件有5大步骤:①#include ,②用FILE *定义指针,③用fopen("A:\\myf2.out","w")打开文件并赋值给指针,④用fprintf输出结果,⑤用fclose关闭文件。
【注意】fopen("A:\\myf2.out","w")中盘符A:后要加双斜杠表示根目录,因为C语言用转义字符'\\'才能表达字符\;另外,文件的命名一定要严格按照规定处理,千万不要随便命名。
【参考答案】
#include "stdio.h"
int compress(char s[])
{int n,k=0,count=0;
if(s[0]!=NULL) n=k+1;
while(s[n]!=NULL)
{if(s[k]= =s[n]){n++;count++;}
else {s[++k]=s[n];n++;}
}
s[++k]='\0';
return count;
}
main()
{char num[100];
int count=0;
FILE *fp;
fp=fopen("A:\\myf2.out","w");
gets(num);
count=compress(num);
fprintf(fp,"%s",num);
printf("%d",count);
fclose(fp); }
运行结果如下:
@ I wil sucesful & and you to ! #
2010年计算机等级考试二级C语言上机习题(3)
一、改错题
【知识点】选择法排序、指针与字符串、程序的调试
【解析】程序中的错误一般可以分为两类,一类是语法错误,即程序中有拼写错误,书写不符合C语言的规定等,此类错误可通过调试(按F9键),根据提示进行改正。另一类是逻辑错误,程序调试已通过(报success),但运行结果不正确,此类错误的修改必须要理解程序后方能改正。
本题要求“从键盘上接受一个含有空格的字符串”,scanf是做不到的,它遇到第一个空格即认为读入完毕,故应替换成gets函数;程序中使用了strcpy函数,就必须在程序开头加上文件包含#include "string.h";根据选择法升序排序要领,每次找到一个“更小的字符”由r指着,直到指向最小的为止,而不是修改r所指字符的值,故if(*r>*q)*r=*q;应改为if(*r>*q) r=q;;当r与p所指不同时,交换二者所指字符的值,即使得p所指字符为每次的最小,故应将if(r/=p)改为if(r!=p)。
【答案】①在程序开头加上文件包含#include "string.h"
②将原第五行的scanf("%s",str);改为gets(str);
③将原第八行的*r=*q; 改为r=q;
④将原第九行的if(r/=p)改为if(r!=p)
二、编程题
【知识点】二维数组的应用、数据文件的使用
【解析】 关于“二维数组应用”的题目,一般都要仔细观察,找出规律后再编程。本题中原数组的任意一个元素a[i][j]旋转后,位置处于b中第3-j行i列。注意,按要求必须调用函数,且使用数据文件完成输出。使用数据文件有5大步骤:①#include ,②用FILE *定义指针,③用fopen("A:\\myf2.out","w")打开文件并赋值给指针,④用fprintf输出结果,⑤用fclose关闭文件。
【注意】fopen("A:\\myf2.out","w")中盘符A:后要加双斜杠表示根目录,因为C语言用转义字符'\\'才能表达字符\;另外,文件的命名一定要严格按照规定处理,千万不要随便命名。
【参考答案】
#include "stdio.h"
int rotate(int a[4][4],int b[4][4]);
main()
{FILE *fp;
int i,j,x[4][4],y[4][4],s;
fp=fopen("A:\\myf2.out","w");
if(fp= =NULL){printf("Can't create file myf2.out!");
exit(1);}
for(i=0;i<4;i++)
for(j=0;j<4;j++)
scanf("%d",&x[i][j]);
s=rotate(x,y);
for(i=0;i<4;i++)
{for(j=0;j<4;j++)
fprintf(fp,"%d ",y[i][j]);
fprintf(fp,"\n");
}
fprintf(fp,"sum=%d\n",s);
fclose(fp);
}
int rotate(int a[4][4],int b[4][4])
{int i,j,s=0;
for(i=0;i<4;i++)
for(j=0;j<4;j++)
b[3-j][i]=a[i][j];
for(i=0;i<4;i++) s+=b[i][i];
return s; }
2010年计算机等级考试二级C语言上机习题(4)
一、改错题
含有错误的源程序如下:
void match(char *pat,char str) ①
{char *p=pat,*q=str;
int i=0; ②
while((*p!=NULL)&&(*q!=NULL))
if(*p= =*q||*p= ='?')p++,q++;
else if(*p= ='*')
{p++;
while(*q!=*p&&*q!=NULL)q++;
}
else i=0;break; ③
if(*p!=NULL||*q!=NULL)i=0;
return i;
}
}
【知识点】字符串处理、程序的调试
【解析】程序中的错误一般可以分为两类,一类是语法错误,即程序中有拼写错误,书写不符合C语言的规定等,此类错误可通过调试(按F9键),根据提示进行改正。另一类是逻辑错误,程序调试已通过(报Success),但运行结果不正确,此类错误的修改必须要理解程序后方能改正。
程序中用到系统预设的符号常量NULL,又未加“文件包含”处理,按F9后即编译时系统会报错,故应在最前面加上include 或将以下全部NULL改为0。函数match分明有返回值,故系统也会报错,应将void改为int;变量i的作用是:当匹配时取值1,否则取值0,根据③处,易于发现i初值应取1,故②处应改为i=1,当发现不匹配时,立即置为0,并跳出循环,此两句应是一个整体,应构成复合语句。②③均为逻辑错误。
【答案】(1)在最前面加上include 或将以下全部NULL改为0
(2)加下划线的部分改为:
①int match(char *pat, char *str)
②i=1
③{ i=0;break;}
二、编程题
【知识点】穷举法、数据文件的使用
【解析】将30~50之间的每一个数都进行判断,就不会有遗漏。注意,按要求必须调用函数,且使用数据文件完成输出。使用数据文件有5大步骤:①#include ,②用FILE *定义指针,③用fopen("A:\\myf2.out","w")打开文件并赋值给指针,④用fprintf输出结果,⑤用fclose关闭文件。
【注意】fopen("A:\\myf2.out","w")中盘符A:后要加双斜杠表示根目录,因为C语言用转义字符'\\'才能表达字符\;另外,文件的命名一定要严格按照规定处理,千万不要随便命名。
【参考答案】
#include
int inv(int x)
{int y;
y=x/10+x%10*10; /*此句可将某两位正整数的十位与个位数字换位*/
return y;
}
main()
{FILE *out;
int i,j;
if((out=fopen("A:\\myf2.out","w"))= =NULL)
{printf("Open file myf2.out failed!\n");exit(1);}
for(i=30;i<50;i++)
for(j=30;j<50;j++)
if((i/10!=i%10)&&(i*j= =inv(i)*inv(j))) /* i/10!=i%10确保十位与个位数字不同*/
fprintf(out,"%d*%d=%d*%d\n",i,j,inv(i),inv(j));
fclose(out); }
2010年计算机等级考试二级C语言上机习题(5)
一、改错题
【分析】:对于改错题的程序中的错误一般可分为两类,一类是语法错误,程序中的语句不符合C语言的语法,拼写错误,这类的错误可通过调试程序改正。另一类是逻辑错误,程序调试已通过,但运行结果不正确,这类错误的修改必须要看懂和理解程序。
#include
#define N 50
void sum(int n,int *pa)
/*属第一类错误。若声明为void类型,则该函数没有返回值,但程序要求返回前n的和,所以类型声明不正确,应改为: int 或去掉*/
{ int count, total,temp;
*pa=3;*++pa=2;
total=5; count=2;
while(count++<N)< p>
{ temp=*(pa-1)**pa;
if(temp<10)
{ total+=temp; *(++pa)=temp;
}
else
{*++pa=temp/10;
total+=*pa;
if(count
/*属第二类错误。若乘积为两位数,已把其十位数字作为数列的后续项,但若数列的个数没有超过n时,将该乘积个位数字作为数列的后续项。*++pa 与*pa++不同,此处应为: *++pa */
}
}
return total;
}
main()
{ int tol,n,i,num[n];
/*属第一类错误。数组的声明不正确,数组的下标必须为常量或常量标识符。应改为:num[N] 或 num[50] */
do
{ printf("Input n=?(2<N<50)");< p>
scanf("%d",&n);
}while(n<=2||n>=50);
tol=sum(N,num);
/*属第二类错误。本题要求生成数列的前n(n<50)项,而N是常量。应改为:sum(n,num) */
for(i=0;i<N;I++)< p>
printf((i+1)%5?"%5d":"%5d\n",num[i]);
printf("\n");
printf("%d",tol);
}
2010年计算机等级考试二级C语言上机习题(6)
一、改错题
含有错误的源程序:
#include
#include
#define N 5
struct student
{ char name[10];
int score;
} ―――――――――――①
void sort(struct student stud[],int n)
{ int i,j;
struct student p;
for(i=1;i<>
{ p=stud[i];
for(j=i-1;j>0 && p>stud[j];j--) ―――――――――――③
stud[j+1]=stud[j];
stud[j+1]=p;
}
}
void main()
{ struct student stud[N]={"aaa",60,"bbb",90,"ccc",85,"ddd",65,"yyy",77};
int i;
sort(stud,N);
printf("sorted data:\n");
for(i=0;i< printf(?%s\t%d\n?,stud[i]);>
}
【知识点】结构体、排序
【难点】 插入法排序
【解析】本题是将未排序的数组元素采用插入排序方法进行排序,其思想是:从第2个元素开始,最初与第一个元素进行比较,由大到小排列在适当位置,成为排好序的数组元素一员。再依次将待排序的元素与前面已排好序的元素从后向前进行比较,如果大于该元素,则该元素向后移一位,直到待排序的元素小于已排好序的某一元素,则直接插入到该元素之后。直到待排序的元素全部完成为止。本程序的sort函数中i表示待排序的元素下标,j表示已排好序的元素下标。
【答案】(1)标号①:} 改为 }; (2)标号②:for(i=1;i
(3)标号③:for(j=i-1;j>0 && p>stud[j];j--) 改为 j>=0 && p.score>stud[j].score;j--)
(4) 标号④:printf("%s\t%d\n",stud[i]); 改为printf("%s\t%d\n",stud[i].name,stud[i].score );
二、编程题
【知识点】字符串操作、函数、文件
【解析】仔细阅读并分析【编程要求】。【编程要求1】已对函数Replace_string指定了函数名、函数类型、形参类型和个数,并详细说明了其功能。在line指向的字符串中查找str1指向的字符子串的关键语句是当“str1[j]= =line[loc]&&str1[j]!='\0'”时继续循环查找,当 因“str1[j]!='\0'”退出循环时,则找到str1指向的字符子串,此时用str2指向的字符串替换在line中的str1字符子串,返回。【编程要求2】编写主函数主要功能要求是保存结果到数据文件、调用Replace_string函数、输入测试数据。这部分是最常规和基本的要求,必须掌握。
【参考答案】
#include
#include
int Replace_string (char line[],char str1[],char str2[])
{ int i=0,j,loc;
char temp[80];
while(i<=strlen(line)-strlen(str2))
{ j=0;loc=i;
while(str1[j]= =line[loc]&&str1[j]!='\0')
{ loc++;j++;}
if(str1[j]= ='\0')
{strcpy(temp,&line[loc]);strcpy(&line[i],str2);
i+=strlen(str2);strcpy(&line[loc],temp);
return 1;
}
else i++;
}
return 0;
}
main()
{ FILE *fp;
char string[100]="My EXAM_number is 0112404321.";
char number[11]="0112404321",num[11];
fp=fopen("myf2.out","w");
fprintf(fp,"%s\n",string);
gets(num);
Replace_string (string,number,num);
fprintf(fp,"%s\n",string);
fprintf(fp,"\n my exam number is: %s\n","0112404321");
fclose(fp); }
2010年计算机等级考试二级C语言上机习题(7)
一、改错题
含有错误的源程序如下:
#include
#include
struct T
{char name [20],num[20];
};
void sort(struct T items[],int low,int high)
{struct T temp;
int k,j;
for(k=low;k<HIGH;K++)< p>
for(j=low;j<>
if(items[j].name>items[j+1].name) ②
{temp=items[j];items[j]=items[j+1];items[j+1]=temp;}
}
void main(void)
{struct T stu[4]={"Wang","6723","Cai","2106","Zhang", ③
"5129","Chang","4512","An","6868"};
int k;
sort(stu,0,4);
printf("The Sorted Array:\n");
for(k=0;k<5;k++)
printf("name:%s,num:%s\n",stu[k]->name,stu[k]->num); ④
}
【知识点】冒泡排序、结构体数组、程序的调试
【解析】程序中的错误一般可以分为两类,一类是语法错误,即程序中有拼写错误,书写不符合C语言的规定等,此类错误可通过调试(按F9键),根据提示进行改正。另一类是逻辑错误,程序调试已通过(报success),但运行结果不正确,此类错误的修改必须要理解程序后方能改正。
本题使用起泡法完成排序,①处j<HIGH-K-1等价与J<=HIGH-K-2,J最大取HIGH-K-2时,J+1才取到HIGH-K-1,例如,刚开始当K为0时,最后一个比较的元素下标为HIGH-1,而实际上根据实参(值已为4)传递而来的最后一个元素的下标应为HIGH,故①处应改为J<HIGH-K或J<=HIGH-K-1,此为逻辑错误。②③④处均属于语法错误:字符串的比较不能使用关系运算符,要借助STRCMP函数;所赋值有5个,数组维数就必须大于等于5;STU[K]不是指针,不能用指向成员符描述成员。< p>
【答案】加下划线的部分改为:
①j<HIGH-K或J<=HIGH-K-1< p>
②if(strcmp(items[j].name, items[j+1].name)>0)
③stu[5]
④stu[k].name, stu[k].num
2010年计算机等级考试二级C语言上机习题(7)
二、编程题
【知识点】字符串处理、函数调用、数据文件的使用
【解析】编程题的结果一般都是客观的,这样便于老师主观阅卷评分,虽然考生个人的准考证号是各异的,对评阅老师却是可以通过所交磁盘标签直接观察到,故必须如实输入,不能直接套用题中例子。注意,按要求必须调用函数,且使用数据文件完成输出。使用数据文件有5大步骤:①#include ,②用FILE *定义指针,③用fopen("A:\\myf2.out","w")打开文件并赋值给指针,④用fprintf输出结果,⑤用fclose关闭文件。
【注意】fopen("A:\\myf2.out","w")中盘符A:后要加双斜杠表示根目录,因为C语言用转义字符'\\'才能表达字符\;另外,文件的命名一定要严格按照规定处理,千万不要随便命名。
【参考答案】
#include
#include
#include
void count(char a[],char w[][10],int n,int b[])
{int i=0,j,k=0;char s[10];
for(i=0;a[i]!=0;i++)
{if(isalpha(a[i]))s[k++]=a[i]; /* isalpha函数用于判断字符是否为字母*/
/*此句将连续字母组成的一个单词存放于s中,便于与二维数组中的某一行进行比较*/
else
{s[k]= '\0'; /*加上'\0'才能使s中存放的是字符串,才能使用strcmp函数进行比较*/
for(j=0;j<N;J++)< p>
if(strcmp(s,w[j])= =0){b[j]++;break;}
k=0; /*让s重新存放另一个单词*/
}
}
}
main()
{FILE *fp;
char line[80]="this is a book,that is an apple",word[6][10]={"this","that","is","a","an","book"};
/*按要求初始化,用二维字符数组的一行存放一个单词便于后面比较处理*/
int c[6]={0},m;
count(line,word,6,c);fp=fopen("A:\\myf2.out","w");
if(fp= =NULL){printf("Can't open file");exit(1);}
for(m=0;m<6;m++)fprintf(fp,"%s:%d",word[m],c[m]);
fprintf(fp,"\nmy exam number is:%s","0112400123"); /*注意输入实际准考证号*/
fclose(fp);
}
⑼ 求2010年9月计算机二级C语言笔试和上机考试题库
模拟试题(一)
1.填空题
请补充函数fun(),该函数的功能是:把从主函数中输入的字符串str2接在字符串str1的后面。
例如:str1=“How do”,str2=“ you do?”,结果输出:How do you do?
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。
试题程序:
#include<stdio.h>
#include<conio.h>
#define N 40
void fun(char *str1,char *str2)
{
int i=0;
char *p1=str1;
char *p2=str2;
while(【1】)
i++;
for( ;【2】;i++)
*(p1+i)=【3】;
*(p1+i)='\0';
}
main()
{
char str1[N],str2[N];
clrscr();
printf("*****Input the string str1 &
str2*****\n");
printf(" \nstr1:");
gets(str1);
printf(" \nstr2:");
gets(str2);
printf("**The string str1 & str2**\n");
puts(str1);
puts(str2);
fun(str1,str2);
printf("*****The new string *****\n");
puts(str1);
}
答案及评析:
【1】*(p1+i) 【2】*p2 【3】*p2++
【解析】填空1:变量i用来记录字符串str1的长度,当指针指到字符串str1结束标志符‘\0'时,while循环结束,变量i停止累加。填空2:指针p2指向字符串str2,通过for循环将字符串str2接在str1后面,循环结束的条件是指针p2所指的字符是字符串结束标志符‘\0'。填空3:指针p2最初指向字符串str2的首字符,通过自加1,使指针p2依次向后移动,指向str2的各个字符,实现将字符串str2接在str1后面的功能。
2. 改错题
下列给定程序中,函数fun()的作用是:将字符串tt中的小写字母都改为对应的大写字母,其他字符不变。例如,若输入"edS,dAd",则输出"EDS,DAD"。
请改正程序中的错误,使它能得到正确结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include <stdio.h>
#include <string.h>
#include <conio.h>
/**********************found***********************/
char fun(char tt[])
{
int i;
for(i=0;tt[i];i++)
{
/**********************found***********************/
if((tt[i]>='A')&&(tt[i]<= 'Z'))
tt[i]-=32;
}
return(tt);
}
main()
{
int i;
char tt[81];
clrscr();
printf("\nPlease enter a string: ");
gets(tt);
printf("\nThe result string is: \n%s",fun(tt));
}
答案及评析:
(1)错误:char fun(char tt[])
正确:char *fun(char tt[])
(2)错误:if((tt[i]>='A')&&(tt[i]<= 'Z'))
正确:if((tt[i]>='a')&&(tt[i]<= 'z'))
【解析】错误1:函数的返回值是字符串的首地址,是指针类型,所以在函数名前要加'*'号。
错误2:题目要求将小写字母改为大写字母,所以if语句的判断条件是小写字母。
3. 编程题
请编写函数fun(),该函数的功能是:移动一维数组中的内容,若数组中有n个整数,要求把下标从p到n-1(p≤n-1)的数组元素平移到数组的前面。
例如,一维数组中的原始内容为1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,p的值为6。移动后,一维数组中的内容应为7,8,9,10,10,11,12,13,14,15,1,2,3,4,5,6。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include <stdio.h>
#define N 80
void fun(int *w, int p, int n)
{
}
main()
{
int a[N]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
int i, p, n=15;
printf("The original data:\n");
for(i=0;i<n;i++)
printf("%3d",a[i]);
printf("\n\nEnter p: ");
scanf("%d",&p);
fun(a,p,n);
printf("\nThe data after moving:\n");
for(i=0;i<n;i++)
printf("%3d",a[i]);
printf("\n\n");
}
答案及评析:
void fun(int *w, int p, int n)
{
int i,j,t;
for(i=p;i<=n-1;i++) /*循环右移n-p次*/
{t=w[n-1];
for(j=n-2;j>=0;j--) /*实现循环右移*/
w[j+1]=w[j];
w[0]=t;
}
}
【解析】本题采用"循环右移"的算法。和我们在前面分析的稍有不同的是,一个是整型数组,一个是字符型数组。
⑽ C语言的题
计算级数和1/(1*3+2/(3*5)+3/(5*7)+…+n/(2*n-1)*(2*n+1)):
#include<stdio.h>
void main()
{
float sum=0;
int i,n;
printf("input n:");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
sum+=(i*1.0)/((2*i-1)*(2*i+1));
}
printf("sum=%f",sum);
}
计算s=1+x+x^2/2!+x^3/3!+…直到某项的绝对值小于0.0005为止,x的值从键盘输入
#include<stdio.h>
void main()
{
float sum=0,n;
int i,m,x,xx;
printf("input x:");
scanf("%d",&x);
for(i=1,xx=1,m=1,n=1;n>0.00005;i++)
{
n=(xx*1.0/m);
sum+=n;
xx*=x;
m*=i;
}
printf("sum=%f",sum);
}
计算s=1+2!+3!+4!+5!+6!+7!+8!的值。
#include<stdio.h>
void main()
{
float sum=0,n;
int i,m;
for(i=1,m=1;i<=8;i++)
{
m*=i;
n=1.0/m;
sum+=n;
}
printf("sum=%f",sum);
}
求满足2+4+6+ … +n>1000时的最小n及s值.
#include<stdio.h>
void main()
{
int n=0,s=0;
while(s<1000)
{
n+=2;
s+=n;
}
printf("n=%d s=%d",n,s);
}
