江苏历年上机试卷1
江苏省秋季一级计算机信息技术考试试卷含答案

江苏省秋季一级计算机信息技术考试试卷含答案江苏省高等学校非计算机专业学生计算机基础知识和应用能力等级考试试卷选编20XX秋季一级计算机信息技术考试试卷(本试卷答题时间为100分钟)考生须知:1.请考生准确无误地输入“准考证号“、“姓名“、“试卷密码“,确认后进入考试系统。
2.在未完成所有考试项目之前,不得按“交卷“按钮;一旦按“交卷“按钮,考生则不得再次进入考试系统。
一、基础知识必做题(共45题)单击主界面上的“必做题“按钮。
按提示解答单选题、是非题和填空题(一)单选题’1.信息技术是指用来扩展人们信息器官功能、协助人们进行信息处理的一类技术,其中______主要用于扩展手、眼等效应器官的功能。
A.计算技术B.通信与存储技术C.控制与显示技术D.感知与识别技术2.存储在u盘和硬盘中的文字、图像等信息,都采用__________代码表示。
A.十进制B.二进制C.八进制D.十六进制3.将十进制数25.25转换成二进制数表示,其结果是__________。
A.11001.01B.11.01C.11001.11D.10011.004.若10000000是采用补码表示的一个带符号整数,该整数的十进制数值为__________。
A.128B.-127C.-128D.05.天气预报往往需要采用__________计算机来分析和处理气象数据,这种计算机的CPU由数以百计、千计、万计的处理器组成,有极强的运算处理能力。
A.巨型B.微型C.小型D.个人6.计算机硬系统中指挥、控制计算机工作的核心部是__________。
A.输入设备B.输出设备C.存储器D.CPU7.CPU的性能主要表现在程序执行速度的快慢,__________是决定CPU性能优劣的重要因素之一。
A.内存容量的大小B.功耗的大小。
C.主频的高低D.价格8.PC使用的芯片组大多由两块芯片组成,它们的功能主要是提供__________和I/O控制。
A.寄存数据B.存储控制C.运算处理D.高速缓冲9.近两年流行的平板电脑(如苹果公司的iPad)普遍使用______来替代键盘和鼠标器输入信息。
江苏省计算机等级考试一级历年真题(06-12)第一章信息技术概述附答案

第一章信息技术概述一、判断题1.传统的电视/广播系统是一种典型的以信息交互为主要目的的系统。
2.电话是一种单向的、点到点的,以传递信息为主要目的的信息系统。
3.广播是一种特殊的、面向公众的单向通信。
4.基本的信息技术包括信息获取与识别技术、通信与存储技术、计算技术,控制与显示技术等。
5.现代信息技术涉及众多领域,例如通信、广播、计算机、微电子、遥感遥测、自动控制、机器人等。
6.现实世界中存在着多种多样的信息处理系统,例如Internet就是一种跨越全球的多功能信息处理系统。
7.信息处理过程就是人们传递信息的过程。
8.信息技术是指用来取代人的信息器官功能,代替人们进行信息处理的一类技术。
9.30多年来,集成电路技术的发展,大体遵循着单块集成电路的集成度平均每18—24个月翻一番的规律,这就是著名的Moore定律。
10.40年来,集成电路技术总是遵循Moore定律发展的。
11.当前计算机中使用的集成电路绝大部分是模拟电路。
12.集成电路按集成度分成2类,集成度小于100个电子元件的集成电路称为小规模集成电路,超过100个电子元件的集成电路称为大规模集成电路。
13.集成电路按用途可分为通用和专用两类,PC机中的荐储器芯片属于专用集成电路。
14.差成电路的工作速度主要取决于组成逻辑门电路的晶体管的尺寸,尺寸越小,速度越快。
15.集成电路可以按它包含的晶体管元件的数目分类,其中英文缩写VLSI的含义是大规模集成电路。
16.集成电路是20世纪的重大发明之一,在此基础上出现了世界上第一台计算机ENIAC。
17.集成电路是计算机的核心。
它的特点是体积小,重量轻,可靠性高,但功耗很大。
18.集成电路为个人计算机(PC)的快速发展提供了基础,目前的PC机使用的都是大规模集成电路(LSI)。
19. 所谓集成电路,指的是在半导体单晶片上制造出含有大量电子元件和连线的电子电路。
20.早期的电子技术以真空电子管为基础元件。
江苏省计算机一级考试题库及答案

江苏省计算机一级考试题库及答案江苏省计算机一级考试题库及答案随着计算机和网络应用领域的不断扩大,人事部将会不断开发、增加新的考试科目,并根据信息技术的不断发展,更新、升级旧的考试科目。
yjbys店铺收集了一些关于江苏省计算机一级考试题库及答案,希望大家认真阅读!一、选择题(每小题1分,共20分)1、电子数字计算机最早的应用领域是 .A.辅助制造工程B.过程控制C.信息处理D.数值计算2、组成计算机指令的两部分是 .A.数据和字符B.操作码和地址码C.运算符和运算数D.运算符和运算结果3、根据汉字国标GB2312-80的规定,lKB存储容量可以存储汉字的内码个数是 .A.1024B.512C.256D.约3414、 UPS的中文译名是 .A.稳压电源B.不间断电源C.高能电源D.调压电源5、在计算机内部用来传送、存储、加工处理的数据或指令所采用的形式是 .A.十进制码B.二进制码C.八进制码D.十六进制码6、微型计算机的主机包括 .A.运算器和控制器B.CPU和内存储器C.CPU和UPSD.UPS和内存储器7、下列关于计算机病毒的叙述中,正确的是 .A.反病毒软件可以查、杀任何种类的病毒B.计算机病毒是一种被破坏了的程序C.反病毒软件必须随着新病毒的出现而升级,提高查、杀病毒的功能D.感染过计算机病毒的计算机具有对该病毒的免疫性8、通常打印质量最好的打印机是 .A.针式打印机B.点阵打印机C.喷墨打印机D.激光打印机9、一个汉字的机内码与它的国标码之间的差是_______.A.2020HB.4040HC.8080HD.AOAOH10、下列关于系统软件的四条叙述中,正确的一条是 .A.系统软件与具体应用领域无关B.系统软件与具体硬件逻辑功能无关C.系统软件是在应用软件基础上开发的D.系统软件并不是具体提供人机界面11、用高级程序设计语言编写的程序称为源程序,它 .A.只能在专门的机器上运行B.无须编译或解释,可直接在机器上运行.C.可读性不好D.具有良好的可读性和可移植性12、显示或打印汉字时,系统使用的是汉字的 .A.机内码B.字形码C.输入码D.国标码13、在下列字符中,其ASCⅡ码值最大的.一个是 .A.ZB.9C.空格字符D.a14、随机存储器中,有一种存储器需要周期性的补充电荷以保证所存储信息的正确,它称为 .A.静态RAM(SRAM)B.动态RAM(DRAM)C.RAMD.Cache15、执行二进制算术加运算001001+00100111其运算结果是 .A.111101111B.11110000C.00000001D.1010001016、计算机系统软件中,最基本、最核心的软件是 .A.操作系统B.数据库系统C.程序语言处理系统D.系统维护工具17、已知三个字符为:a、X和5,按它们的ASCⅡ码值升序排序,结果是 .A.5,a,XB.a,5,XC.X,a,5D.5,X,a18、一个汉字的内码和它的国标码之间的差是 .A.2020HB.4040HC.8080HD.AOAOH19、根据汉字国标码GB2312-80的规定,将汉字分为常用汉字和次常用汉字两级.次常用汉字的排列次序是按 .A.偏旁部首B.汉语拼音字母C.笔画多少D.使用频率多少20、操作系统的主要功能是 .A.对用户的数据文件进行管理,为用户管理文件提供方便B.对计算机的所有资源进行统一控制和管理,为用户使用计算机提供方便C.对源程序进行编译和运行D.对汇编语言程序进行翻译二、基本操作题(共10分)21、将考生文件夹下ERPO文件夹中SGACYL.DAT文件移动到考生文件夹下,并改名为ADMICR.DAT.22、将考生文件夹下KENT文件夹中的文件MONITOR.CDX移动到考生文件夹下KUNIER文件夹中,并改名为CONSOLE.CDX.23、将考生文件夹下JIE文件夹中的文件BMP.BAS设置为只读属性.24、将考生文件夹下RAS\GGG文件夹中的文件MENTS.DOC设置成只读属性.25、将考生文件夹下SUPPER文件夹中的文件WORD5.PPT删除.三、字处理题(共25分)26、在考生文件夹下,打开文档WORD2.d.cx,按照要求完成下列操作并以该文件名(WORD2.docx)保存文档.【文档开始】(1)在表格最右边插入一空列,输入列标题“总分”,在这一列下面的各单元格中计算其左边相应3个单元格中数据的总和.(2)将表格设置为列宽2.4厘米;表格外框线为3磅单实线,表内线为1磅单实线;表内所有内容对齐方式为水平居中.【江苏省计算机一级考试题库及答案】。
江苏省计算机等级考试一级历年真题(06-12)第五章数字媒体及应用附答案

第五章数字媒体及应用一、判断题l. GBl8030汉字编码标准收录了27484个汉字,完全兼容GBK、GB2312标准。
2. GBl8030汉字编码标准中收录的汉字在GBK编码标准中也能找到。
3. GBl8030是一种既保持与GB2312、GBK兼容,又有利于向UCS/Unicode过渡的汉字编码标准。
4. GB2312国标字符集构成一个二维平面,它分为94行、94列,共有6700多个简体汉字。
5.GB2312国标字符集由三部分组成:第一部分是字母、数字和各种符号;第二部分为一级常用汉字:第三部分为二级常用汉字。
6. GB2312国标字符集中的3000多个一级常用汉字是按汉语拼音排列的。
7. GBK是我国继GB2312后发布的又一汉字编码标准,它不仅与GB2312标准保持兼容,而且还增加了包括繁体字在内的许多汉字和符号。
8. HTML文件是一种使用超文本标记语言进行描述的文本文件,因此使用Windows中的记事本也可以编辑HTML文件。
9. UCS/Unicode中的汉字编码与GB2312、GBK标准以及GBl8030标准都兼容。
10. Windows、Unix和Linux操作系统都开始支持UCS/Unicode编码。
11. Windows操作系统中的“帮助”文件(hlp文件)是一种丰富格式文本。
12.超文本中的超链可以指向文字,也可以指向图形、图像、声音或动画节点。
13. 光学字符识别,即OCR是将纸介质上的印刷体文字符号自动输入计算机并转换成编码文本的一种技术。
14. 汉字输入的编码方法大体分成四类:数字编码、字音编码、字形编殂、形音编码,但使用不同的输入编码方法向计算机输入的同一个汉字,它们的内码是相同的。
15.几乎所有支持丰富格式文本的文本处理软件都能处理RTF格式的文档。
16. 虽然标准ASCII码是7位的编码,但由于字节是计算机中最基本的处理单位,故一般仍以一个字节来存放一个ASCII字符编码,每个字节中多余出来的一位(最高位),在计算机内部通常保持为0。
江苏省计算机等级考试一级B--2012年(春)IT01-IT04试卷理论题及答案

2012年(春)IT01 江苏省计算机等级考试一级B理论部分测试试卷一.必答题。
(45个小题,每小题1分,共45分)[1]. 下面有关计算机输入输出操作的叙述中,错误的是________。
A.没有I/O操作,计算机就无法与外界(包括人、环境、其他计算机等)交换信息B.输入操作的任务是将输入设备输入的信息送入内存的指定区域C.输出操作的任务是将内存指定区域的内容送到输出设备进行输出D.所有各种I/O设备使用同一个I/O控制器控制其操作[2]. DV D光盘片按容量大小共分为4个品种,它们是单面单层、单面双层、双面单层和双面双层,容量最大的是________。
[3]. 独立显示卡中有一个专用处理器,称为________,它使用一组适合图像和图形处理的专用指令,既减轻了CPU的负担,又加快了图形绘制和操作速度。
[4]. 信息技术可以帮助扩展人们信息器官的功能,例如,使用______最能帮助扩展大脑的功能。
A.通信技术B.计算与存储技术C.控制技术D.显示技术[5]. 下列4种字符编码标准中,能实现全球各种不同语言文字统一编码的国际标准是________。
A.ASCII B.GBK C.UCS(Unicode) D.Big5[6]. 非接触式IC卡利用电磁感应方式给芯片供电,实现无线传输数据。
[7]. 软件虽然不是物理产品而是一种逻辑产品,但通常必须使用物理载体进行存储和分发。
[8]. 下列四个不同进位制的数中最大的数是______。
A.十进制数73.5 B.二进制数1001101.01 C.八进制数115.1 D.十六进制数4C.4[9]. 下面关于网络信息安全的叙述中,正确的是________。
A.数据加密是为了在网络通信被窃听的情况下,也能保证数据的安全B.数字签名的主要目的是对信息加密C.因特网防火墙的目的是允许单位内部的计算机访问外网,而外界计算机不能访问内部网络D.所有黑客都是利用微软产品存在的漏洞对计算机网络进行攻击与破坏的[10]. 使用圆形插头的鼠标器接口是PS/2接口,使用长方形插头的鼠标器接口是US B接口。
江苏省二级c语言上机考试例题集1-20

1、取出一个十进制正整数中的所以奇数数字,用这些数字构成一个最小数。
#include<stdio.h>#include<stdlib.h>void sort(int a[], int n){int i, j, t;for (i = 0;i < n - 1;i++)for (j = 0;j < n - 1 - i;j++) /*利用双重循环,将数组按从小到大排列*/if (a[j] > a[j + 1]){t = a[j];a[j] = a[j + 1];a[j + 1] = t; }}long arrange(long s) /*arrange函数的功能是取出十进制整数s中的所有奇数数字,用这些数字构成一个最小数,函数返回该数*/{ int d, b[10], i, j = 0;long s1 = 0;while (s > 0) /*利用循环对s数位分离,分离出个位、十位、百位等各位上的数*/{ d = s % 10;if (d % 2 != 0) /*判断每一位上的数字是否为奇数*/b[j++] = d; /*若为奇数则存放到b数组中*/s /= 10;}sort(b, j); /*调用sort函数,将数组b从小到大排列*/for (i = 0;i < j;i++)s1 = s1 * 10 + b[i]; /*求得用各位上的奇数组成的最小数 */return s1; /*返回求得的数*/}void main(){long m, n;FILE *fp; /*定义文件指针fp*/if ((fp = fopen("myf2.out", "w")) == NULL) /*涉及文件的打开*/{printf("The file can not open!");exit(0);}scanf("%ld", &n); /*接收键盘输入的整型数据*/m = arrange(n); /*键盘输入的数据作为实参调用arrange 函数*/printf("%ld\n", m); /*将得到的最小数输出到屏幕及结果文件中*/fprintf(fp, "%ld\n", m);printf("\nMy exam number is:WLJY001\n"); /**/fprintf(fp, "\nMy exam number is:WLJY001\n");fclose(fp); /*关闭文件*/}2、按要求合并两个字符串#include<stdio.h>#include<string.h>#include<stdlib.h>void fun(char *a, char *b, char *c) /*函数功能是先将b指向的字符串逆序存放,然后按a[0] ,b[0], a[1], b[1]…的顺序合并a字符串和b字符串到c指向的数组中,将a 或b中剩余的字符拼接在c数组的尾部*/{int i, j;char ch;i = 0;j = strlen(b) - 1;while (i < j) /*利用while循环将数组b中的字符逆序存放*/{ch = b[i];b[i] = b[j];b[j] = ch;i++;j--;}while (*a || *b) /*利用while循环,通过判断*a || *b,将a、b数组间隔存放在c数组中*/{ if (*a){*c = *a;c++;a++;}if (*b){*c = *b;c++;b++;}}*c = '\0';}void main(){FILE *fp; /*定义文件指针fp*/char s1[80], s2[80], s[200]; /*声明3个一维数组*/if ((fp = fopen("myf2.out", "w")) == NULL){printf("can't open file");exit(0);}printf("\nEnter s1 string:");gets(s1);printf("\nEnter s2 string:");gets(s2); /*s1、s2 接收键盘输入的字符*/fun(s1, s2, s); /*调用change函数,对字符串s2进行逆序变换,再合并s1字符串和s2字符串并保存到s数组中*/printf("\nThe result is:%s\n", s);/*将合并后产生的数组s中的字符串输出到屏幕及结果文件中*/fprintf(fp, "%s", s);fprintf(fp, "\n");printf("\nMy exam number is:WLJY001\n"); /*将考生准考证号输出到屏幕及结果文件中*/fprintf(fp, "\nMy exam number is:WLJY001\n");fclose(fp); /*关闭文件*/}3、先判断一个m×n矩阵为Monge矩阵,在对该矩阵进行交换处理#include<stdio.h>#include<stdlib.h>#define N 5void change(int a[][N], int n) /*该函数的功能是,对a指向的n行5列数组中的矩阵进行变换*/{int i, j, t;for (i = 0;i < n / 2;i++) /*通过两重for循环对数组各行的位置进行交换*/for (j = 0;j < N;j++){t = a[i][j];a[i][j] = a[n - 1 - i][j];a[n - 1 - i][j] = t;} /*变换形式:第一行与最后一行交换,第二行与倒数第二行交换……*/}int Monge(int a[][N], int n){int i, j;for (i = 0;i < n - 2;i++) /*利用for循环和if语句对数组元素进行矩阵判断,判断是否为Monge矩阵*/ { for (j = 0;j < N - 2;j++)if (a[i][j] + a[i + 1][j + 1] > a[i][j + 1] + a[i + 1][j])return 0;/*若矩阵不是Monge矩阵,函数返回0*/}return 1;/*若矩阵是Monge矩阵,函数返回1*/}void main(){int a[][N] = {{10, 17, 13, 28, 23}, {17, 22, 16, 29, 23},{24, 28, 22, 34, 24}, {11, 13, 6, 17, 7}, {45, 44, 32, 37, 23}}; /*数组初始化*/ int monge, i, j;FILE *fp;fp = fopen("myf2.out", "w"); /*以只写"w"方式打开文件*/if (fp == NULL)exit(0);monge = Monge(a, 5); /*调用Monge函数对a数组进行判断*/for (i = 0;i < N;i++) /*将a数组变换前中的元素输出到屏幕及结果文件中*/{for (j = 0;j < N;j++){printf("%4d", a[i][j]);fprintf(fp, "%4d", a[i][j]);}printf("\n");fprintf(fp, "\n");}if (monge){printf("a is Monge\n");fprintf(fp, "a is Monge\n");} /*将a数组变换前的判断结果输出到屏幕及结果文件中*/else{printf("a is not Monge\n");fprintf(fp, "a is not Monge\n");}change(a, 5); /*调用change函数对a数组进行变换处理*/for (i = 0;i < N;i++){for (j = 0;j < N;j++){ printf("%4d", a[i][j]);fprintf(fp, "%4d", a[i][j]);}printf("\n");fprintf(fp, "\n");} /*将a数组变换后的元素输出到屏幕及结果文件中*/monge = Monge(a, 5); /*调用Monge函数对经过变换的a数组进行判断*/if (monge) /*将a数组变换后的判断结果输出到屏幕及结果文件中*/{printf("a is Monge\n");fprintf(fp, "a is Monge\n"); }else{ printf("a is not Monge\n");fprintf(fp, "a is not Monge\n"); }printf("\nMy exam number is:WLJY001\n"); /*将考生准考证号输出到屏幕及结果文件中*/fprintf(fp, "\nMy exam number is:WLJY001\n");fclose(fp); /*关闭文件*/}4、用一组整数验证命题#include<stdio.h>#include<stdlib.h>#define N 100int fun (int a[], int b[], int n){int i, j, x, y, z, s, t, m, k = 0;for (i = 0;i < n;i++) /*按题目要求的步骤进行交换,直到得到所要求的结果停止循环*/ if (a[i] / 1000 < 1){x = a[i] / 100;y = a[i] / 10 % 10;z = a[i] % 10; /*对数a[i]进行数位分离*/if (x != z){s = z * 100 + y * 10 + x; /*交换a[i]的百位数字与个位数字得到s*/t = s > a[i] ? (s - a[i]) : (a[i] - s); /*求a[i]和s的绝对值得到t*/x = t / 100;y = t / 10 % 10;z = t % 10;m = z * 100 + y * 10 + x; /*交换 t的百位数字与个位数字得到m*/if (t + m == 1089) /*判断t与m的和是否为1089*/b[k++] = i;}}return k; /*函数返回数组b中数据的个数*/}void main(){int a[N] = {123, 765, 1, 45, 121, 1345, 131, 67, 696, 3589}, b[N], n, i;FILE *fp; /*定义文件指针*/if ((fp = fopen("myf2.out", "w")) == NULL) /* 以只写"w"方式打开文件 */{printf("The file call not open!");exit(0);}n = dotest (a, b, 10); /*用a数组作为实参调用fun函数*/for (i = 0;i < n;i++){printf("%5d", a[b[i]]);fprintf(fp, "%5d", a[b[i]]);} /*将a数组中所有符合命题的整数输出到屏幕及结果文件中*//*将考生准考证号输出到屏幕及结果文件中*/printf("\nMy exam number is:WLJY001\n");fprintf(fp, "\nMy exam number is:WLJY001\n");fclose(fp); /*关闭文件 */}5、找出7个默森尼数#include<stdio.h>#include<stdlib.h>#define N 7void Mersenne(long a[], int m);int prime(long);void main(){long a[N];int i;FILE *fp; /*定义文件指针*/fp = fopen("myf2.out", "w"); /*以只写"w"方式打开文件*/if (fp == NULL)exit(0);Mersenne(a, N); /*调用Mersenne 函数,找出并保存前7个Mersenne 数*/for (i = 0;i < N;i++){ printf("%8ld", a[i]);fprintf(fp, "%8ld", a[i]);} /* 将运行结果输出到屏幕及结果文件中*/ printf("\nMy exam number is:WLJY001\n"); /*将考生准考证号输出到屏幕及结果文件中*/fprintf(fp, "\nMy exam number is:WLJY001\n");}void Mersenne(long a[], int m) /*该函数的功能是,求出前m个Mersenne数*/{long f, n, k;int i = 0;a[i++] = 3;for (n = 3;i < m;n += 2){f = 1;for (k = 1;k <= n;k++)f *= 2; /*求2的n次方*/if (prime(n) && prime(f - 1)) /*当n和2的n次方减1均为素数时,该数为Mersenne 数*/ a[i++] = f - 1; /*将找到的Mersenne 数保存到数组a中*/}}int prime(long n) /*该函数的功能是,判断整数a是否是素数*/{long i;for (i = 2;i <= n / 2;i++)if (n % i == 0) return 0;return 1; /*若是素数函数返回值1*/}6、从一个指定的自然数#include<stdio.h>#include<stdlib.h>int linkrun(int a, int b, int *p);void main(){int i, a, b, max, p[100];FILE *fp;if ((fp = fopen("myf2.out", "w")) == NULL) /*以只写"w"方式打开文件*/{printf("The file call not open!");exit(0);}printf("Enter a,b:(a<b)");scanf("%d,%d", &a, &b); /*接收从键盘输入的a和b*/max = linkrun(a, b, p); /*以a、b、p作为实参调用函数*/for (i = 0;i <= b - a;i++){printf("%3d", p[i]);fprintf(fp, "%3d", p[i]);}printf("\nmax=%d", max);fprintf(fp, "\nmax=%d", max); /*将运行结果输出到屏幕及结果文件中*/printf("\nMy exam number is:WLJY001\n"); /*将考生准考证号输出到屏幕及结果文件中*/fprintf(fp, "\nMy exam number is:WLJY001\n");fclose(fp); /*关闭文件*/}int linkrun(int a, int b, int *p){int i, k, m, n, num;num = 0;for (i = 0, k = a;k <= b;i++, k++) /*通过for循环,以[a,b]中所有自然数作为n*/{n = k;p[i] = 1;while (n != 1){++p[i]; /*将数列的长度保存到数组p中*/i f(n % 2) /*n为奇数时,按相应公式求解*/n = n * 3 + 1;else /*当n为偶数时,按相应公式求解*/n /= 2;}if (p[i] > num)num = p[i]; /*求出数组中最大值*/}return num; /*返回最大值*/}7、将一个十进制整数m转换成r进制整数的字符串表示形式#include<stdio.h>#include<stdlib.h>void trdec(char *str, int idec, int ibase) /*该函数的功能是,将十进制整数idec转换为ibase进制的字符串表示形式*/{char ch;int i, idr, k = 0;while (idec != 0){idr = idec % ibase; /*idec对ibase求余*/if (idr >= 10) /*判断余数,根据余数的值对其进行变换*/str[k++] = idr - 10 + 'A';elsestr[k++] = idr + '0';idec /= ibase;}for (i = 0;i < k / 2;i++) /*转换成ibase进制数的字符串形式后,将字符串保存到str指向的字符数组 */ {ch = str[i];str[i] = str[k - i - 1];str[k - i - 1] = ch;}str[k] = '\0';}void main(){int x;char str[20];FILE *fp; /*变量声明,定义文件指针fp */if ((fp = fopen("myf2.out", "w")) == NULL){printf("The file can not open!");exit(0);}printf("Enter a number"); scanf("%d", &x); /*接收从键盘输入的x*/trdec(str, x, 2); /*调用函数将该整数转换为二进制并输出到屏幕及结果文件中*/printf("%sB,", str);fprintf(fp, "%sB,", str);trdec(str, x, 8); /*调用函数将该整数转换为八进制并输出到屏幕及结果文件中*/printf("%sQ,", str);fprintf(fp, "%sQ,", str);trdec(str, x, 16); /*调用函数将该整数转换为十六进制并输出到屏幕及结果文件中*/printf("%sH\n", str);fprintf(fp, "%sH\n", str);printf("\nMy exam number is:WLJY001\n"); /*将考生准考证号输出到屏幕及结果文件中*/fprintf(fp, "\nMy exam number is:WLJY001\n");fclose(fp); /*关闭文件*/}8、将以为数组中的所有素数移到该数组的前端部分#include<stdio.h>#include<stdlib.h>int N;void insert(int *p, int x, int n){int i = 0, j;while (x > p[i] && i < n) /* ① p是指针类型,引用形式不对*/i++;for (j = n;j > i;j--)p[j] = p[j - 1];p[j] = x; /* ②此语句的作用是将x插入到元素p[j]的位置 */}int *create(){int *head, *p, i;printf("\n N=");scanf("%d", &N);head = (int *)malloc(N * sizeof(int)); /* ③分配内存空间函数malloc的调用形式错误,正确的为:(类型说明符*)malloc(size) */printf("Enter numbers:");p = head;for (i = 0;i < N;i++)scanf("%d", &p[i]); /* ④接收从键盘输入的数值要用取址运算符 */for (i = 1;i < N;i++)insert(p, p[i], i);return head;}void main(){int *head, *p, i, x;head = create();p = head;for (i = 0;i < N;i++)printf("%3d", *p++);free(head);}9、用以下展开式求#include<stdio.h>#include<ctype.h>#include<ctype.h> /* ①后续程序调用了字符函数isalpha,所以要加#include<ctype.h> */void replace_word(char s[]){char word_tab[4][10] = {"sad", "happy", "accuse", "forgive"};char t[10], tmp[80]; /* ②由后面的t[k]=s[j]知,此处定义的t不是一个字符变量,而是一个字符型数组*/int i, j, k, n;for (i = 0;s[i];i++){for (j = i, k = 0;isalpha(s[j]);k++, j++)t[k] = s[j];t[k] = 0;if (k > 0){for (n = 0;n < 4;n++)if (strcmp(t, word_tab[n]) == 0)break;if (n < 4){strcpy(tmp, s + i + strlen(t));strcpy(s + i, word_tab[(n + 1) % 4]);strcat(s, tmp); /* ③strcpy(str1,str2)是把字符串str2复制到str1中,会覆盖str1中的内容,此处应用strcat函数 */i = i + strlen(word_tab[(n + 1) % 4]);}elsei = i + strlen(t);}}}main(){char line[80] = "I am very sad.";replace_word(line);puts(line); /* ④输出字符串应调用函数puts,putchar只能输出单个字符 */}10、找出满足下列条件的整数对#include<stdio.h>#include<conio.h>int factor(int n) /*该函数的功能是,求整数n的所有因子之和*/{ int i, s = 0;for (i = 1;i <= n;i++)if (n % i == 0)s = s + i; /*各因子累加求和*/return s; /*返回和值*/}int fun(int n, int a[][2]) /*该函数的功能是,在[1,n] 中查找满足题目条件的整数对*/{ int i, j, g1, g2, k = 0;for (i = 2;i <= n;i++){g1 = factor(i); /*调用factor函数求得g1的因子之和*/for (j = 1;j < i;j++){g2 = factor(j); /*调用factor函数求得g2的因子之和*/if (g1 == g2 && g1 == i + j + 1) /*比较两因子之和,若符合要求,则将其存入数组a中*/{a[k][0] = j;a[k++][1] = i;}}}return k; /*返回数组a中元素个数*/}void main(){FILE *fp;int i, n, m, a[100][2];if ((fp = fopen("myf2.out", "w")) == NULL){printf("The file call not open!");exit(0);}scanf("%d", &n); /*接收键盘输入的n*/m = fun(n, a); /*用n,a作为实参调用fun函数*/for (i = 0;i < m;i++){printf("(%d,%d)\n", a[i][0], a[i][1]);fprintf(fp, "(%d,%d)\n", a[i][0], a[i][1]);} /*将a数组中的结果数据输出到屏幕及结果文件中*/printf("\nMy exam number is:WLJY001\n"); /*将考生准考证号输出到屏幕及结果文件中*/fprintf(fp, "\nMy exam number is:WLJY001\n");fclose(fp);}11、验证3~2008的所有素数中存在这样两个素数#include<stdio.h>#include<conio.h>#include<math.h>#include<stdlib.h>int prime(int n) /*该函数的功能是,判断整数a是否素数*/{ int i;for (i = 2;i <= n / 2;i++)if (n % i == 0) return 0; /*若不是素数,函数值返回0*/return 1; /*若是素数,函数值返回1*/}int fun(int n, int *a, int *b) /*该函数的功能是,在3~n之间寻找符合要求的一对素数*/{ int n1, n2;for (n1 = 3;n1 < n;n1 += 2){if (prime(n1))n2 = n - n1;if (prime(n2) && n1 + n2 == n) /*n1和n2均为素数,且和为n */{*a = n1;*b = n2; return 1;} /*将找到的两个素数分别保存到数组a和b中,函数返回1*/ }return 0; /*若找不到,函数返回0*/}void main(){FILE *fp; /*定义文件指针fp*/int n = 2008, a, b, c;if ((fp = fopen("myf2.out", "w")) == NULL){printf("Create File myf2.out failed!\n");exit(0);}c = fun(n, &a, &b); /*调用fun函数找出3~n之间和值为n的一对素数*/if (c) /*将找到的素数输出到屏幕并用写文件函数保存到结果文件中*/{printf("a=%d b=%d a+b=%d\n", a, b, a + b);fprintf(fp, "%d+%d=%d\n", a, b, a + b);}elsefprintf(fp, "not found!");printf("\nMy exam number is:WLJY001\n"); /*将考生准考证号输出到屏幕及结果文件中*/ fprintf(fp, "\nMy exam number is:WLJY001\n");fclose(fp); /*关闭文件*/}12、数组部分元素逆置#include<stdio.h>#include<conio.h>int prime(int a) /*该函数的功能是,判断整数a是否是素数*/{int k, i;if (a == 1) return 0;if (a == 2) return 1; /*a等于1和2时单独考虑*/for (i = 2;i < a;i++)if (a % i == 0) return (0);return (1); /*若是素数,函数返回1*/}void reverse(int *a, int n, int m){int i, k = -1, *b, *p, t; /*定义变量b和p为指针变量*/for (i = 0;i < n;i++)if (prime(a[i]))k = i; /*找到数组a中的最后一个素数*/p = a + k - 1;if (k - m < 0)b = a; /*判断最后一个素数之前的元素个数与m的大小*/else b = a + k - m;while (b < p) /*将最后一个素数之前的m个元素逆置*/{t = *b;*b = *p; *p = t;b++;p--;}}void main(){int a[20] = { 4, 3, 6, 7, 8, 13, 9, 19, 21, 26}}, i, m, n = 10;FILE *fp; /*定义文件指针 */if ((fp = fopen("myf2.out", "w")) == NULL){printf("Creat File myf2.out failed!\n");exit(0);}printf("Please input m:\n");scanf("%d", &m); /*接收从键盘输入的m值*/reverse(a, n, m); /*调用reverse函数变换数组a*/for (i = 0;i < n;i++) /*将变换后的数组a输出到屏幕并用写文件函数保存到结果文件中*/ {printf("%4d", a[i]);fprintf(fp, "%4d", a[i]);}printf("\nMy exam number is:WLJY001\n"); /*将考生准考证号输出到屏幕及结果文件中*/ fprintf(fp, "\nMy exam number is:WLJY001\n");fclose(fp); /*关闭文件*/}13、取出一个正整数中的所有偶数数字#include<stdio.h>#include<conio.h>#include<stdlib.h>void sort(int a[], int n) /*将数组a中的n个整数进行从大到小排列*/{ int i, j, k, t;for (i = 0;i < n - 1;i++) /*利用双重for循环*/{k = i;for (j = i + 1;j < n;j++)if (a[j] > a[k])k = j;if (k != i){t = a[k];a[k] = a[i];a[i] = t;}/*利用中间变量t交换两者的值,最后将数组按从大到小的顺序进行排列*/ }}long fun(long s){int d, b[10], i, j = 0;long s1 = 0;while (s > 0) /*利用while循环对数据s进行各位数字各位的分离*/{ d = s % 10;if (d % 2 == 0) /*判断各位是否为偶数,若是偶数则将其保存到数组b中*/b[j++] = d;s /= 10;}sort(b, j); /* 调用函数sort对b数组中存放的j个偶数进行排序*/for (i = 0;i < j;i++)s1 = s1 * 10 + b[i]; /* 利用j个偶数,构成一个最大的整数*/return s1; /* 返回构成的最大数*/}void main(){long m, n;FILE *fp; /*定义文件指针*/if ((fp = fopen("myf2.out", "w")) == NULL) /*以只写方式"w"打开文件*/{printf("The file call not open!");exit(0);}scanf("%ld", &n); /*接收从键盘输入的n */m = fun(n); /*调用fun函数求出整数n的所有偶数数字构成的一个最大数*/printf("%ld\n", m); /*将所得结果输出到屏幕并用写文件函数保存到结果文件中*/fprintf(fp, "%ld\n", m);printf("\nMy exam number is:WLJY001\n"); /*将考生准考证号输出到屏幕及结果文件中*/ fprintf(fp, "\nMy exam number is:WLJY001\n");fclose(fp); /*关闭文件*/}14、找出符合以下条件的Troisty数#include<stdio.h>#include<conio.h>#include<math.h>#define N 10int Troitsky(long a[]) /*该函数的功能是,求出1000000以内所有的Troitsky数*/{int count = 0, b;long n, n1;for (n = 1;n <= 1000000;n++) /*利用for循环对1~1000000的数进行变换*/{n1 = n;b = 0;while (n1 > 0){b++;n1 /= 10;} /*确定数n的位数,求得数n的首位数字*/n1 = n % (long)pow(10, b - 1) * 10 + n / (long)pow(10, b - 1); /*将首位作为个位,其他三位数乘以10组成新的整数*/if (n1 / n == (double)n1 / n && n1 / n > 1) /*判断新的整数是否是原数n的整数倍*/ a[count++] = n; /*将符合要求的数存入数组a中*/}return count; /*函数返回Troitsky数的个数*/}void main(){long a[N], i;int k;FILE *fp; /*定义文件指针*/fp = fopen("myf2.out", "w"); /*以只写方式"w"打开文件*/if (fp == NULL)exit(0);k = Troitsky(a); /*调用Troitsky函数*/for (i = 0;i < k;i++) /*将运行结果输出到屏幕并用写文件函数保存到结果文件中*/{printf("%10ld", a[i]);fprintf(fp, "%10ld", a[i]); }printf("\n"); /*换行*/fprintf(fp, "\n");printf("\nMy exam number is:WLJY001\n"); /*将考生准考证号输出到屏幕及结果文件中*/fprintf(fp, "\nMy exam number is:WLJY001\n");fclose(fp); /*关闭文件*/}15、产生Fibonacci#include<stdio.h>#include<conio.h>#include<math.h>#include<stdlib.h>int Fibonprime(long f[], int n){int i, m = 0;long a[40] = {1, 1}, j, k;for (i = 2;i < n;i++)a[i] = a[i - 2] + a[i - 1]; /*利用for循环生成数列的前n项*/for (i = 2;i < n;i++){k = (long)sqrt(a[i]);for (j = 2;j <= k;j++)if (a[i] % j == 0)break; /*判断其是否是素数*/if (j >= k + 1)f[m++] = a[i]; /*将素数存放到数组k中*/}return (m); /*数组中素数的个数作为函数值返回*/}main(){int i, m;long f[40];FILE *fp; /*定义文件指针 */fp = fopen("myf2.out", "w"); /*以只写方式"w"打开文件*/if (fp == NULL){ printf("Can not open de file!\n");exit(0);}m = Fibonprime(f, 30); /*调用函数Fibonprime 求出Fibonacci数列前30个数中的素数 */for (i = 0;i < m;i++) /*将找到的素数输出到屏幕并用写文件函数保存到结果文件中*/ printf("%ld\t", f[i]);for (i = 0;i < m;i++)fprintf(fp, "%ld\t", f[i]);printf("\nMy exam number is:WLJY001\n"); /*将考生准考证号输出到屏幕及结果文件中*/fprintf(fp, "\nMy exam number is:WLJY001\n");fclose(fp); /*关闭文件*/}16、在数列中查找、移动#include<stdio.h>#include<conio.h>void sumfac(int x[], int n);int fac(int n);main(){int i, a[10] = {1, 2, 4, 8, 16, 32, 64, 128, 256, 512};FILE *fp; /*定义文件指针*/if ((fp = fopen("myf2.out", "w")) == NULL){ printf("Creat File myf2.out failed!\n");exit(0);}sumfac(a, 10); /*调用函数sumfac对一维数值中的数列进行变换操作*/printf("\n");fprintf(fp, "\n");for (i = 0;i < 10;i++) /*将变换后的数列输出到屏幕并用写文件函数保存到结果文件中*/{printf("%6d", a[i]);fprintf(fp, "%6d", a[i]);}printf("\nMy exam number is:WLJY001\n"); /*将考生准考证号输出到屏幕及结果文件中*/fprintf(fp, "\nMy exam number is:WLJY001\n");fclose(fp); /*关闭文件*/}int fac(int n) /*该函数的功能是,求得n的所有因子之和*/{int i, sum = 0;for (i = 1;i <= n;i++)if (n % i == 0)sum += i; /*求出n的所有因子及因子之和*/return sum; /*函数返回和值*/}void sumfac(int x[], int n){int i, j, k, m, sum;for (i = n - 1, k = 0;i >= k;i--) /*利用循环,从后向前遍历数列查找超完全数*/{sum = fac(x[i]); /*调用fac函数求得各元素的所有因子之和*/if (fac(sum) == x[i] *2) /*利用if判断其是否是超完全数*/{m = x[i];for (j = i;j > 0;j--)x[j] = x[j - 1]; /*移动超完全数之前需将数列所有数依次后移*/x[0] = m; /*将超完全数移动到数列的第一个位置*/k++;i++;}}}17、编写函数int Del-findged (int a[],int n,int *f)#include"stdio.h"#include"conio.h"int Del_findgcd(int a[], int n, int *f){int i, k, g;for (i = 0, k = 0;i < n;i++)if (i % 2 == 0)a[k++] = a[i]; /*利用循环判断数组元素的下标,若是奇数则将其删除*/ if (n % 2 == 0)n = n / 2; /*判断数组中剩余元素的个数 */else n = n / 2 + 1;k = a[0];for (i = 1;i < n;i++) /*通过循环找到能被所有数整除的最大的数即为最大公约数*/{g = a[i];while (k != g){if (k > g)k = k - g;else g = g - k;}}*f = k; /*保存最大公约数到f指向的变量中*/return n; /*函数返回数组中剩余的整数个数*/}main(){FILE *fp; /*定义文件指针*/int i, a[10] = { 6, 8, 9, 11, 12, 13, 15, 16, 18, 19}, f, n;if ((fp = fopen("myf2.out", "w")) == NULL){ printf("can't open file!");exit(0);}n = Dle_findgcd(a, 10, &f); /*调用Dle_findgcd函数删除数组中的所有满足条件的整数并求出剩余整数的最大公约数*/for (i = 0;i < n;i++) /*将数组中剩余的整数和这些整数的最大公约数输出到屏幕并用写文件函数保存到结果文件中*/{printf("%d,", a[i]);fprintf(fp, "%d,", a[i]);}printf("max common divisor=%d\n", f);fprintf(fp, "max common divisor=%d\n", f);printf("\nMy exam number is:WLJY001\n"); /*将考生准考证号输出到屏幕及结果文件中*/fprintf(fp, "\nMy exam number is:WLJY001\n");fclose(fp); /*关闭文件*/}18、找出给定范围内的和亲数#include<stdio.h>#include<stdlib.h>#include<conio.h>int heqinmath(int m, int n, int a[][2]){int i, j, m1, s1, s2, count = 0;for (m1 = m;m1 < n;m1++) /*通过循环对m~n的整数进行依次判断*/{ s1 = 1;s2 = 1;for (i = 2;i < m1;i++)if (m1 % i == 0)s1 = s1 + i; /*找到某一整数m1的全部真因子并求和*/for (j = 2;j < s1;j++)if (s1 % j == 0)s2 = s2 + j; /*找到和值s1的真因子并求和*/if ((s2 == m1) && (m1 != s1))/*判断是否为和亲数*/{a[count][0] = m1;a[count++][1] = s1; /*将和亲数对保存到a指向的数组中*/}}return count; /*函数返回a数组中和亲数对的个数*/}main(){int count, i, m, n, a[10][2];FILE *fp; /*定义文件指针*/fp = fopen("myf2.out", "w"); /*以只写方式"w"打开文件*/if (fp == NULL){printf("Can not open the file!\n");exit(0);};printf("Please input m,n:\n");scanf("%d%d", &m, &n); /*从键盘输入m和n*/count = heqinmath(m, n, a); /*调用函数heqinmath,求出m~n之间所有的和亲数对*/for (i = 0;i < count;i++) /*将计算结果输出到屏幕并用写文件函数保存到结果文件中*/ printf("(%d,%d)\n", a[i][0], a[i][1]);for (i = 0;i < count;i++)fprintf(fp, "(%d,%d)\n", a[i][0], a[i][1]);printf("\nMy exam number is:WLJY001\n"); /*将考生准考证号输出到屏幕及结果文件中*/fprintf(fp, "\nMy exam number is:WLJY001\n");fclose(fp); /*关闭文件*/}19、编写函数int prime-m(int n,int x[],long y[])#include<stdio.h>#include<stdlib.h>#include<math.h>int prime_m(int n, int x[], long y[]){int i, j, m, count;long k = 0, q, k1, k2, k3;for (m = 2;m <= n;m++) /*通过循环在2~n之间查找符合条件的整数*/{k1 = pow(2, m) - 1;q = sqrt(k1);for (j = 2;j <= q;j++)if (k1 % j == 0)break;if (j <= q)continue; /*判断2m-1是否为素数*/count = 0;k3 = k1;k2 = 0;while (k3 > 0){int w = k3 % 10;if (w == 1) /*判断2m-1的十进制表示中是否包含数字1*/{count++;}k2 = k2 * 10 + w;k3 = k3 / 10;}if (k2 % 2 == 0)continue; /*判断2m-1的反序数是否为奇数*/if (count > 0){x[k] = m;y[k++] = k1;} /*符合条件的所有整数m保存到x指向的数组中,将与m对应的整数2m-1保存到y指向的数组中*/}return k; /*函数返回x数组中保存的整数个数*/}main(){FILE *fp; /*定义文件指针*/long a[20];int i, j, n, b[20], m;if ((fp = fopen("myf2.out", "w")) == NULL){printf("Open file myf2.out failed!\n");exit(1);}printf("input n:");scanf("%d", &n); /*接收从键盘输入的参数n*/m = search(n, b, a); /*调用search函数分别求得满足上述条件的所有三位正整数和所有四位正整数*/ for (i = 0;i < m;i++) /*将满足条件的三位正整数和四位正整数输出到屏幕并用写文件函数保存到结果文件中*/{ printf("%5d%15ld\n", b[i], a[i]); fprintf(fp, "%5d%15ld\n", b[i], a[i]);}printf("\nMy exam number is:WLJY001\n"); /*将考生准考证号输出到屏幕及结果文件中*/fprintf(fp, "\nMy exam number is:WLJY001\n");fclose(fp); /*关闭文件*/}20、编写函数int find(int n,long x[])#include<stdio.h>#include<conio.h>#include<limits.h>#define min(x,y) ((x)<(y)?(x):(y)) /* ①宏定义的格式为:#define 标识符(形参表)形参表达式,形参表中的形参无需声明类型*/int min_dist(int a[], int b[], int m, int n) /* ②由后面程序知,函数的前两个形参均为数组,所以此处应改为min_dist(int a[],int b[],int m,int n) */{int min = INT_MAX;int ia = 0, ib = 0;while (ia < m && ib < n) /* ③循环限制条件应是ia,ib都不能大于数组元素的个数,两者是"与"的关系*/if (a[ia] >= b[ib]){min = min(min, a[ia] - b[ib]);ib++;}else{min = min(min, b[ib] - a[ia]);ia++;}return min;}main(){int a[] = {2, 4, 8, 11, 16}, b[] = {1, 5, 7, 13, 24};int i, m, n;m = sizeof(a) / sizeof(int);n = sizeof(b) / sizeof(int);printf("\n");for (i = 0;i < m;i++)printf("%5d", a[i]);printf("\n");for (i = 0;i < n;i++) printf("%5d", b[i]);printf("\n min distance=%d", min_dist(a, b, m, n)); /* ④此处需要输出函数的返回值,printf 函数格式控制符应为 "%d"*/getch();}。
江苏计算机一级真题

2009春第一部分计算机基础知识1.在下列有关现代信息技术的一些叙述中,正确的是 1 。
A)集成电路是20世纪90年代初出现的,它的出现直接导致了微型计算机的诞生B)集成电路的集成度越来越高,目前集成度最高的已包含几百个电子元件C)目前所有数字通信均不再需要使用调制解调技术和载波技术D)光纤主要用于数字通信,它采用波分多路复用技术以增大信道容量2.最大的10位无符号二进制整数转换成八进制数是 2 。
A)1023 B)1777 C)1000 D)10243.在下列有关目前PC机CPU的叙述中,错误的是 3 。
A)CPU芯片主要是由Intel公司和AMD公司提供的B)“双核”是指PC机主板上含有两个独立的CPU芯片C)Pentium 4微处理器的指令系统由数百条指令组成D)Pentium 4微处理器中包含一定容量的Cache存储器4.在下列有关当前PC机主板和内存的叙述中,正确的是 4 。
A)主板上的BIOS芯片是一种只读存储器,其内容不可在线改写B)绝大多数主板上仅有一个内存插座,因此PC机只能安装一根内存条C)内存条上的存储器芯片属于SRAM(静态随机存取存储器)D)目前内存的存取时间大多在几个到十几个ns(纳秒)之间5.在下列有关PC机辅助存储器的叙述中,正确的是 5 。
A)硬盘的内部传输速率远远大于外部传输速率B)对于光盘刻录机来说,其刻录信息的速度一般小于读取信息的速度C)使用USB 2.0接口的移动硬盘,其数据传输速率大约为每秒数百兆字节D)CD-ROM的数据传输速率一般比USB 2.0还快6.在下列PC机I/O接口中,数据传输速率最快的是 6 。
A)USB 2.0 B)IEEE_1394 C)IrDA(红外) D)SATA7.计算机软件可分为商品软件、共享软件和自由软件等类型。
在下列叙述中,错误的是7 。
A)通常用户需要付费才能得到商品软件的使用权,但这类软件的升级总是免费的B)共享软件通常是一种“买前免费试用”的具有版权的软件C)自由软件的原则是用户可共享,并允许拷贝和自由传播D)软件许可证是一种法律合同,它确定了用户对软件的使用权限8.人们通常将计算机软件划分为系统软件和应用软件。
江苏历年上机试卷1

2003春Visual Basic上机试卷 (试卷代号VB01) 参考答案【考试须知】1.改错题的界面不作要求,主要用来调试程序,若题目中有参考界面,则仅供参考。
2.考试结束后,文件必须存放在指定位置,否则适当扣分;考试盘中若无指定文件,则不予评分。
3.程序代码书写应呈现锯齿型。
一、改错题(17分)【题目】本程序的功能是求数列的和,规定计算到第k项的值≤10-6为止(输入X=2测试程序,正确结果为S=0.9985868)。
Option ExplicitPrivate Function pt(X As Single, N As Integer) As SingleDim P As Single, I As Integer‘P As Integerp = 1‘p=0For i = 1To np = p * i / (x + i)Next Ipt = pEnd FunctionPrivate Sub Form_Click()Dim X As Single, K As Integer, I As IntegerDim A As Double, S As Single, P As DoubleDox = InputBox("输入一个大于1的数:", , 1)If x <= 1Then MsgBox "数据错误,重输!", vbOKOnlyLoop Until x < 1‘x>1k = 1Doa = pt(x, k) ‘pt(k)s = s + aIf a <= 0.000001Then Exit Do‘e-7k = k + 1LoopPrint sEnd Sub【要求】1.新建工程,输入上述代码,改正程序中的错误2.改错时,不得增加或删除语句,但可适当调整语句位置。
3.将窗体文件和工程文件分别命名为F1.frm和P1.vbp,并保存到软盘A的根目录下。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2003春Visual Basic上机试卷 (试卷代号VB01) 参考答案【考试须知】1.改错题的界面不作要求,主要用来调试程序,若题目中有参考界面,则仅供参考。
2.考试结束后,文件必须存放在指定位置,否则适当扣分;考试盘中若无指定文件,则不予评分。
3.程序代码书写应呈现锯齿型。
一、改错题(17分)【题目】本程序的功能是求数列的和,规定计算到第k项的值≤10-6为止(输入X=2测试程序,正确结果为S=0.9985868)。
Option ExplicitPrivate Function pt(X As Single, N As Integer) As SingleDim P As Single, I As Integer‘P As Integerp = 1‘p=0For i = 1To np = p * i / (x + i)Next Ipt = pEnd FunctionPrivate Sub Form_Click()Dim X As Single, K As Integer, I As IntegerDim A As Double, S As Single, P As DoubleDox = InputBox("输入一个大于1的数:", , 1)If x <= 1Then MsgBox "数据错误,重输!", vbOKOnlyLoop Until x < 1‘x>1k = 1Doa = pt(x, k) ‘pt(k)s = s + aIf a <= 0.000001Then Exit Do‘e-7k = k + 1LoopPrint sEnd Sub【要求】1.新建工程,输入上述代码,改正程序中的错误2.改错时,不得增加或删除语句,但可适当调整语句位置。
3.将窗体文件和工程文件分别命名为F1.frm和P1.vbp,并保存到软盘A的根目录下。
二、编程题(23分)~【题目】编程找出10000以内的所有可以表示为两个平方数和的素数。
【编程要求】1.编程参考界面如下图所示,编程时不得增加或减少界面对象或改变对象的种类,窗体及界面元素大小适中,且均可见。
2.标题“可表示为两个平方数和的素数列表”要求居中,按“生成素数列表”按钮,则运行程序;按“清除数据列表”按钮,则将列表框清空;按“返回”按钮,则停止程序运行。
3.要有一个函数过程。
【要求】将窗体文件和工程文件分别命名为F2.frm和P2.vbp,并保存到软盘A的根目录下。
参考答案:Option ExplicitPrivate Sub Command1_Click()Dim N As Integer, M As Integer, K As IntegerDim I As Integer, J As Integer, S As StringFor I = 13To1000If Prime(I) ThenFor J = 2To Sqr(I) - 1K = I - J ^ 2If Sqr(K) = Int(Sqr(K)) ThenS = Str(I) & "=" & Str(J ^ 2) & "+" & Str(K)List1.AddItem SExit ForEnd IfNext JEnd IfNext IEnd SubPrivate Function Prime(N As Integer) As BooleanDim K As IntegerFor K = 2To Sqr(N)If N Mod K = 0Then Exit FunctionNext KPrime = TrueEnd FunctionPrivate Sub Command2_Click()List1.ClearEnd SubPrivate Sub Command3_Click()EndEnd Sub计算机基础知识和应用能力等级考试上机试卷(2003春)二级Visual Basic语言(试卷代号VB01)(本试卷完成时间70分钟)考试须知:1.改错题的界面不作要求,主要用来调试程序,若题目中有参考界面,则仅供参考:2.考试结束后,文件必须存放在指定位置,否则适当扣分;考试盘中若无指定文件,则不予评分:3.程序代码书写应呈现锯齿形。
一、改错题(17分)~【题目】本程序的功能是:从键盘上输入的一个数字串中依次由第一个数字、第二个数字、第三数字……开始向后截取1位数、2位数……,找出其中的素数。
例如,输入236759,可截取得素数:2,23,3,367,67,7,5,59。
含有错误的源程序如下:Option ExplicitOption Base1Private Function Prime(M As Long) As BooleanDim I As LongFor I = 2To Int(Sqr(M))If M Mod I = 0Then Exit For' Exit FunctionNext IPrime = TrueEnd FunctionPrivate Sub Form_Click()Dim St As String, C As StringDim Num As Long, a() As LongDim I As Long, J As Long, K As LongSt = InputBox("请输入任一数字串:", "查找素数")C = ""I = 1: k = 1Do Until I <= Len(St) 'whileC = C + Mid (St , k , 1)Num = Val (C )If k <= Len (St ) ThenIf Prime (Num ) ThenJ = J + 1ReDim Preserve a (J )a (J ) = NumEnd Ifk = k + 1ElseC = ""k = I ‘与下句交换位置I = I + 1End IfLoopPrint StFor I = 1 To JPrint a (I );Next IEnd Sub【要求】1.新建工程,输入上述代码,改正程序中的错误。
2.改错时,不得增加或删除语句,但可适当调整语句位置。
3.将窗体文件和工程文件分别命名为F1.frm 和P1.vbp ,并保存到软盘A 的根目录下。
二、编程题(23分)**【题目】在列表框中显示自变量x 从0.1~0.7的arcsh (x )函数值(提示:循环终值为0.7001),arcsh (x )函数的计算公式如下:++⋅⋅⋅⋅⋅-⋅⋅⋅⋅++⋅⋅⋅-⋅⋅+⋅-=+)12(2642)12(531)1(765432154321321)(12753n x n n x x x x x arcsh n n -【编程要求】1.程序参考界面如下图所示,编程时不得增加或减少界面对象或改变对象的种类,窗体及界面元素大小适中,且均可见。
2.按“计算”按钮,则开始运行程序,按图示格式显示于列表框中;按“清除”按钮,则将列表框清空;按“结束”按钮,结束程序运行。
3.程序至少要有一个函数过程。
4.当数列某一项值的绝对值小于10-7时就不再累加。
【要求】将窗体文件和工程文件分别命名为F2.frm和P2.vbp,并保存到软盘A的根目录下。
参考答案:Option ExplicitPrivate Function ArcSh(X As Single, ByV al N As Integer) As Single Dim I As Integer, P As DoubleP = XFor I = 1To NP = P * (2 * I - 1) / (2 * I) * X * XNext IArcSh = P / (2 * N + 1)End FunctionPrivate Sub Command1_Click()Dim X As Single, I As Single, T As Single, Y As SingleDim k As IntegerFor X = 0.1To0.7001Step0.1I = 1: Y = Xk = 1DoT = ArcSh(X, I)If Abs(T) <= 0.0000001Then Exit Dok = (-1) * kY = Y + k * TI = I + 1LoopList1.AddItem Str(X) & ":" & Str(Y)Next XEnd SubPrivate Sub Command2_Click()List1.C1earEnd Sub计算机基础知识和应用能力等级考试上机试卷(2003春)二级Visual Basic语言(试卷代号VB02)(本试卷完成时间70分钟)考试须知:1.改错题的界面不作要求,主要用来调试程序,若题目中有参考界面,则仅供参考:2.考试结束后,文仲必须存放ᜨ指定位置,否则适当扣分;考试盘中苅无指定文件,则䨍予评分:3.程序代码书写应呈现锯齿形。
一、改错题(17分)【题目】下面程序的功能是找出2000以内这样的正整数N:它的不同值的因子(包括1和N 在内)之和是一个素数,例如16=1+2+4+8+16=31。
图1Option ExplicitOption Base1Private Sub Command1_Click()Dim I As Integer, K As Integer, Sum As Integer'Sum = 0 '错误位置For I = 2To2000Sum = 0 '正确位置Call Fctor(I, Sum)If Prime(Sum) ThenK = K + 1Text1.Text = Text1.Text & Str(I) & " "If K Mod5 = 0Then Text1 = Text1 & Chr(13) & Chr(10)End IfNext IEnd SubPrivate Sub Fctor(N As Integer, S As Integer)Dim I As Integer, J As IntegerDo While I < NI = I + 1 '正确位置If N Mod I = 0ThenS = S + IEnd If'I = I + 1 '错误位置LoopEnd SubPrivate Function Prime(N As Integer) As BooleanDim M As IntegerFor M = 2To Sqr(N)If N Mod M = 0Then Exit Function 'Sub'FunctionNext MPrime = TrueEnd Function【要求】1.新建工程,输入上述代码,改正程序中的错误:2.改错时,不得增加或删除语句,但可适当调整语句位置:3.将窗体文件和工程文件分别命名为P1.frm和F1.vbp,并保存到软盘A的根目录下。