叶哩信息网带你了解计算机二级考试真题 ,希望本文能帮到你。
2019年全国计算机二级考试试题题库(附答案)

《2019年全国计算机二级考试试题题库》百度网盘txt 最新全集下载:
链接:
提取码:w2wt
通过不断研究和学习历年真题,为考生冲刺阶段复习提分指点迷津,做真题,做历年真题集,对照考纲查缺补漏,提高实战素养,制定做题策略,规划方向;
若资源有问题欢迎追问!
急求09年或者历年广西计算机二级考试的真题和答案
不知道你的二级是哪一类的 以下是VFP的:
2009年3月全国计算机等级考试二级笔试试卷
Visual FoxPro 数据库程序设计
(考试时间90分钟,满分100分)
选择题
(1)下列叙述中正确的是
A) 栈是“先进先出”的线性表
B) 队列是“先进先出”的线性表
C) 循环队列是非线性结构
D) 有序性表既可以采用顺序存储结构,也可以采用链式存储结构
(2)支持子程序调用的数据结构是
A) 栈 B) 树 C) 队列 D)二叉树
(3)某二叉树有5个度为2的结点,则该二叉树中的叶子结点数是
A)10 B)8 C)6 D)4
(4)下列排序方法中,最坏情况下比较次数最少的是
A)冒泡排序 B)简单选择排序 C)直接插入排序 D)堆排序
(5)软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面属于应用软件的是
A)编译软件 B)操作系统 C)教务管理系统 D)汇编程序
(6)下面叙述中错误的是
A)软件测试的目的是发现错误并改正错误
B)对被调试的程序进行“错误定位”是程序调试的必要步骤
C)程序调试通常也称为Debug
D)软件测试应严格执行测试计划,排除测试的随意性
(7)耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的是
A)提高耦合性降低内聚性有利于提高模块的独立性
B)降低耦合性提高内聚性有利于提高模块的独立性
C)耦合性是指一个模块内部各个元素间彼此结合的紧密程度
D)内聚性是指模块间互相连接的紧密程度
(8)数据库应用系统中的核心问题是
A)数据库设计 B)数据库系统设计
C)数据库维护 D) 数据库管理员培训
(9)有两个关系R,S如下:
R S
A B C A B
a 3 2 a 3
b 0 1 b 0
c 2 1 c 2
由关系R通过运算得到关系S,则所使用的运算为
A) 选择 B)投影 C) 插入 D)连接
(10)将E-R图转换为关系模式时,实体和联系都可以表示为
A) 属性 B)键 C) 关系 D) 域
(11)数据库(DB)、数据库系统(DBS)和数据库管理系统(DBMS)三者之间的关系是
A)DBS包括DB和DBMS B)DBMS包括DB和DBS
C)DB包括DBS和DBMS D)DBS就是DB,也就是DBMS
(12)SQL语言的查询语句是
A)INSERT B)UPDATE C)DELETE D)SELECT
(13)下列与修改表结构相关的命令是
A)INSERT B)ALTER C)UPDATE D)CREATE
(14)对表SC(学号 C(8),课程号 C(2),成绩 N(3),备注 C(20)),可以插入的记录是
A)('20080101', 'c1', '90',NULL) B)('20080101', 'c1', 90, '成绩优秀')
C)('20080101', 'c1', '90', '成绩优秀') D)('20080101', 'c1', '79', '成绩优秀')
(15)在表单中为表格控件指定数据源的属性是
A)DataSource B)DateFrom C)RecordSource D)RecordFrom
(16)在Visual FoxPro中,下列关于SQL表定义语句(CREATE TABLE)的说法中错误的是
A)可以定义一个新的基本表结构
B)可以定义表中的主关键字
C)可以定义表的域完整性、有效性规则等信息的设置
D)对自由表,同样可以实现其完整性、有效性规则等信息的设置
(17)在Visual FoxPro中,若所建立索引的字段值不允许重复,并且一个表中只能创建一个,这种索引应该是
A)主索引 B)唯一索引 C)候选索引 D)普通索引
(18)在Visual FoxPro中,用于建立或修改程序文件的命令是
A)MODIFY<文件名> B)MODIFY COMMAND <文件名>
C)MODIFY PROCEDURE <文件名> D)上面B和C都对
(19)在Visual FoxPro中,程序中不需要用PUBLIC等命令明确申明和建立,可直接使用的内存变量是
A)局部变量 B)私有变量 C)公告变量 D)全局变量
(20)以下关于空值(NULL值)叙述正确的是
A)空值等于空字符串 B)空值等同于数值0
C)空值表示字段或变量还没有确定的值 D)Visual FoxPro不支持空值
(21)执行USE sc IN 0命令的结果是
A)选择0号工作区打开sc表
B)选择空闲的最小号的工作区打开sc表
C)选择第1号工作区打开sc
D)显示出错信息
(22)在Visual FoxPro中,关系数据库管理系统所管理的关系是
A)一个DBF文件 B)若干个二维表
C)一个DBC文件 D)若干个DBC文件
(23)在Visual FoxPro中,下面描述正确的是
A)数据库表允许对字段设置默认值
B)自由表允许对字段设置默认值
C)自由表或数据库表都允许对字段设置默认值
D)自由表或数据库表都不允许对字段设置默认值
(24)SQL的SELECT语句中,“HAVING<条件表达式>”用来筛选满足条件的
A)列 B)行 C)关系 D)分组
(25)在Visual FoxPro中,假设表单上有一个选项组:O男 O女,初始时该选项组的value属性值为1。若选项按钮“女”被选中,该选项组的value属性值是
A)1 B)2 C)“女” D)“男”
(26)在Visual FoxPro中,假设教师表T(教师号,姓名,性别,职称,研究生导师)中,性别是C型字段,研究生导师是L型字段。若要查询“是研究生导师的女老师”信息,那么SQL语句“SELECT * FROM T WHERE <逻辑表达式>”中的<逻辑表达式>应是
A)研究生导师 AND 性别= "女" B)研究生导师 OR 性别= "女"
C)性别= "女" AND 研究生导师=.F. D)研究生导师=.T. OR 性别=女
(27)在Visual FoxPro中,有如下程序,函数IIF()返回值是
*程序
PRIVATE X,Y
STORE "男" TO X
Y=LEN(X)+2
IIF(Y<4, "男", "女")
RETURN
A)"女" B)"男" C).T. D).F.
(28)在Visual FoxPro 中,每一个工作区中最多能打开数据库表的数量是
A)1个 B)2个
C)任意个,根据内存资源而确定 D)35535个
(29)在Visual FoxPro 中,有关参照完整性的删除规则正确的描述是
A)如果删除规则选择的是"限制",则当用户删除父表中的记录时,系统将自动删除子表中的所有相关记录
B)如果删除规则选择的是"级联",则当用户删除父表中的记录时,系统将禁止删除与子表相关的父表中的记录
C)如果删除规则选择的是"忽略",则当用户删除父表中的记录时,系统不负责检查子表中是否有相关记录
D)上面三种说法都不对
(30)在Visual FoxPro中,报表的数据源不包括
A)视图 B)自由表 C)查询 D)文本文件
第(31)到第(35)题基于学生表S和学生选课表SC两个数据库表,它们的结构如下:
S(学号,姓名,性别,年龄)其中学号、姓名和性别为 C型字段,年龄为N型字段。
SC(学号,课程号,成绩),其中学号和课程号为C型字段,成绩为N型字段(初始为空值)。
(31)查询学生选修课程成绩小于60分的学号,正确的SQL语句是
A)SELECT DISTINCT 学号 FROM SC WHERE "成绩" <60
B)SELECT DISTINCT 学号 FROM SC WHERE 成绩 < "60"
C)SELECT DISTINCT 学号 FROM SC WHERE 成绩 <60
D)SELECT DISTINCT "学号" FROM SC WHERE "成绩" <60
(32) 查询学生表S的全部记录并存储于临时表文件one中的SQL命令是
A)SELECT * FROM 学生表 INTO CURSOR one
B)SELECT * FROM 学生表TO CURSOR one
C)SELECT * FROM 学生表 INTO CURSOR DBF one
D)SELECT * FROM 学生表TO CURSOR DBF one
(33)查询成绩在70分至85分之间学生的学号、课程号和成绩,正确的SQL语句是
A)SELECT 学号,课程号,成绩 FROM sc WHERE 成绩 BETWEEN 70 AND 85
B)SELECT 学号,课程号,成绩 FROM sc WHERE 成绩 >=70 OR 成绩 <=85
C)SELECT 学号,课程号,成绩 FROM sc WHERE 成绩 >=70 OR <=85
D)SELECT 学号,课程号,成绩 FROM sc WHERE 成绩 >=70 AND <=85
(34)查询有选课记录,但没有考试成绩的学生的学号和课程号,正确的SQL语句是
A)SELECT 学号,课程号 FROM sc WHERE 成绩 = ""
B)SELECT 学号,课程号 FROM sc WHERE 成绩 = NULL
C)SELECT 学号,课程号 FROM sc WHERE 成绩 IS NULL
D)SELECT 学号,课程号 FROM sc WHERE 成绩
(35)查询选修C2课程号的学生姓名,下列SQL语句中错误的是
A)SELECT 姓名 FROM S WHERE EXISTS;
(SELECT * FROM SC WHERE 学号=S.学号 AND 课程号= 'C2')
B)SELECT 姓名 FROM S WHERE 学号 IN;
(SELECT * FROM SC WHERE课程号= 'C2')
C)SELECT 姓名 FROM S JOIN ON S.学号=SC.学号 WHERE 课程号= 'C2'
D)SELECT 姓名 FROM S WHERE 学号=;
(SELECT * FROM SC WHERE课程号= 'C2')
二、填空题(每空2分,共30分)
请将每一个空的正确答案写在答题纸上【1】-【15】序号的横线上,答在试卷上,在试卷上不得分,
注意:以命令关键字填空的必须写完整。
(1)假设一个长度为50的数组(数组元素的下标从0到49)作为栈的存储空间,栈底指针bottom指向栈底元素,栈顶指针top指向栈顶元素,如果bottom=49,top=30(数组下标),则栈中具有 【1】 个元素。
(2)软件测试可分为白盒测试和黑盒测试。基本路径测试属于 【2】 测试。
(3)符合结构化原则的三种基本控制结构是:选择结构、循环结构和 【3】 。
(4)数据库系统的核心是 【4】
(5)在E-R图中,图形包括矩形框、菱形框、椭圆框。其中表示实体联系的是 【5 】框。
(6)所谓自由表就是那些不属于若任何【6】的表。
(7)常量{^2009-10-01,15:30:00}的数据类型是【7】 。
(8)利用SQL语句的定义功能建立一个课程表,并且为课程号建立主索引,语句格式为:
CREATE TABLE 课程表(课程号 C(5) 【8】 ,课程名 C(30))
(9)在Visual FoxPro中,程序文件的扩展名是【9】 。
(10)在Visual FoxPro中,SEELCT 语句能够实现投影、选择和【10】三种专门的关系运算。
(11)在Visual FoxPro中,LOCATE ALL 命令按条件对某个表中的记录进行查找,若查找不到满足条件的记录,函数EOF()的返回值应是【11】 。
(12)在Visual FoxPro中,设有一个学生表STUDENT,其中有学号、姓名、年龄、性别等字段,用户可以用命令“ 【12】 年龄 WITH 年龄+1”将表中所有学生的年龄增加一岁。
(13)在Visual FoxPro中,有如下程序:
*程序名:TEST.PRG
SET TALK OFF
PRIVATE X,Y
X= "数据库"
Y= "管理系统"
DO sub1
X+Y
RETURN
*子程序:sub1
LOCAL X
X= "应用"
Y= "系统"
X= X+Y
RETURN
执行命令DO TEST后,屏幕显示的结果应是【13】 。
(14)使用SQL语言的SELECT语句进行分组查询时,如果希望去掉不满足条件的分组,应当在GROUP BY 中使用【14】子句。
(15)设有SC(学号,课程号,成绩)表,下面 SQL的SELECT语句检索成绩高于或等于平均成绩的学生的学号。
SELECT 学号 FROM sc;
WHERE 成绩>=(SELECT 【15】 FROM sc)
2009年4月二级VFP参考答案
一、选择题
1-5 DDCDC
6-10 ABAAC
11-15 ADBBC
16-20 DABBC
21-25 BBADB
26-30 AAACD
31-35 CAACD
二、填空题
1、20
2、白盒
3、顺序结构
4、数据库管理系统
5、菱形
6、数据库
7、日期时间型
8、primary key
9、.prg
10、联接
11、.T.
12、Replace all
13、数据库系统
14、Having
15、avg(成绩)
求计算机二级考试真题
2011年计算机二级考试C语言十套上机题
1.填空题
请补充函数fun(),该函数的功能是:把从主函数中输入的字符串str2接在字符串str1的后面。
例如:str1=“How do”,str2=“ you do”,结果输出:How do you do
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。
试题程序:
#include
#include
#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后面的功能。
1.填空题
请补充函数fun(),该函数的功能是求一维数组x[N]的平均值,并对所得结果进行四舍五入(保留两位小数)。
例如:当x[10]={15.6,19.9,16.7,15.2,18.3,12.1,15.5,11.0,
10.0,16.0},结果为:avg=15.030000。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。
试题程序:
#include
#include
double fun(double x[10])
{
int i;
long t;
double avg=0.0;
double sum=0.0;
for(i=0;i<10;i++)
【1】;
avg=sum/10;
avg=【2】;
t=【3】;
avg=(double)t/100;
return avg;
}
main()
{
double avg,x[10]={15.6,19.9,16.7,15.2,
18.3,12.1,15.5,11.0,10.0,16.0};
int i;
clrscr();
printf("\nThe original data is :\n");
for(i=0;i<10;i++)
printf("%6.1f",x[i]);
printf("\n\n");
avg=fun(x);
printf("average=%f\n\n",avg);
}
答案及评析:
【1】sum+=x[i] 【2】avg*1000 【3】(avg+5)/10
【解析】填空1:通过for循环求出10个数的累加和,存于变量sum中。填空2:为了实现四舍五入保留两位小数的功能,应将平均值先扩大1000倍。填空3:将平均值加上5,再除以10,实现四舍五入的功能。
1.填空题
请补充函数fun(),该函数的功能是:从‘a’到‘z’统计一个字符串中所有字母字符各自出现的次数,结果保存在数组alf中。注意:不区分大小写,不能使用字符串库函数。
例如,输入:“A=abc+5*c”,结果为:a=2,b=1,c=2。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。
试题程序:
#include
#include
#define N 100
void fun(char *tt,int alf[])
{
int i;
char *p=tt;
for(i=0;i<26;i++)
【1】;
while(*p)
{
if(*p>='A'&&*p<='Z')
【2】;
if(*p>='a'&&*p<='z')
alf[*p-'a']++;
【3】;
}
}
main()
{
char str[N];
char a='a';
int alf[26],k;
clrscr();
printf("\nPlease enter a char string:");
scanf("%s",str);
printf("\n**The original string**\n");
puts(str);
fun(str,alf);
printf("\n**The number of letter**\n");
for(k=0;k<26;k++)
{
if(k%5==0)
printf("\n");
printf("%c=%d ",a+k,alf[k]);
}
printf("\n");
}
答案及评析:
【1】alf[i]=0 【2】*p+=32 【3】p++
【解析】填空1:数组alf[26]用来存放字母字符出现的次数,在使用之前需要清零。填空2:题目要求不区分大小写,所以可以先将所有的大写字母都转换为对应的小写字母,然后一并记录出现的次数。将大写字母转换为对应的小写字母,只需将ASCII码加上32就可以了。填空3:指针p指向字符串tt,通过p自加1来移动指针,访问字符串中的所有字符。
1.填空题
请补充函数fun(),该函数的功能是:分类统计一个字符串中元音字母和其他字符的个数(不区分大小写)。
例如,输入aeiouAOUpqrt,结果为A:2 E:1 I:1 O:2 U:2 other:4。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。
试题程序:
#include
#include
#define N 100
void fun(char *str,int bb[])
{
char *p=str;
int i=0;
for(i=0;i<6;i++)
【1】;
while(*p)
{
switch(*p)
{
case 'A':
case 'a':bb[0]++;break;
case 'E':
case 'e':bb[1]++;break;
case 'I':
case 'i':bb[2]++;break;
case 'O':
case 'o':bb[3]++;break;
case 'U':
case 'u':bb[4]++;break;
default:【2】;
}
【3】
}
}
main()
{
char str[N],ss[6]="AEIOU";
int i;
int bb[6];
clrscr();
printf("Input a string: \n");
gets(str);
printf("the string is: \n");
puts(str);
fun(str,bb);
for(i=0;i<5;i++)
printf("\n%c:%d",ss[i],bb[i]);
printf("\nother:%d",bb[i]);
}
答案及评析:
【1】bb[i]=0 【2】bb[5]++ 【3】p++;
【解析】填空1:数组bb[6] 用来存放5个元音字母和其他字符的个数,在使用之前需要清零。
填空2:数组元素bb[5] 用来存放其他字符的个数,当指针p所指的字符不是元音字母时,则认为是其他字符,bb[5]加1。填空3:指针p指向字符串str,通过p自加1来移动指针,访问字符串中的所有字符。
1.填空题
str是全部由小写字母字符和空格字符组成的字符串,由num传入字符串的长度。请补充函数fun(),该函数的功能是:统计字符串str中的单词个数,结果由变量num传回。每个单词之间都由空格隔开,并且字符串str开始不存在空格。
例如:str=“how do you do”,结果为:num=4。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。
试题程序:
#include<stdio.h>
#define N 80
void fun(char *s,int *num)
{
int i,n=0;
for(i=0;【1】;i++)
{
if(s[i]>=’a’&&s[i]<=’z’&&(s[i+1]==
’ ’||s[i+1]==’\0’))
【2】;
}
【3】;
}
main()
{
char str[N];
int num=0;
printf("Enter a string:\n");
gets(str);
while(str[num])
num++;
fun(str,&num);
printf("The number of word is :
%d\n\n",num);
}
答案及评析:【1】i<*num 【2】n++ 【3】*num=n
【解析】填空1:*num传入字符串的长度,所以for循环中变量i的变化范围是从0到*num-1。填空2:如果当前判断的字符是小写字母,并且它的下一个字符是空格或者是字符串结束标记符,则表示当前字符是一个单词的最后一个字母,统计单词数的变量n要加上1。填空3:题目要求结果由变量num传回,所以要将n的值赋给指针num所指的单元。
1.填空题
str是一个由数字和字母字符组成的字符串,由变量num传入字符串长度。请补充函数fun(),该函数的功能是:把字符串str中的数字字符转换成数字并存放到整型数组bb中,函数返回数组bb的长度。
例如:str=“Bcd123e456hui890”,结果为:123456890。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。
试题程序:
#include<stdio.h>
#define N 80
int bb[N];
int fun(char s[],int bb[],int num)
{
int i,n=0;
for(i=0;i<num;i++)
{
if(【1】)
{
bb[n]=【2】;
n++;
}
}
return 【3】;
}
main()
{
char str[N];
int num=0,n,i;
printf("Enter a string:\n");
gets(str);
while(str[num])
num++;
n=fun(str,bb,num);
printf("\nbb= ");
for(i=0;i<n;i++)
printf("%d",bb[i]);}
答案及评析:【1】s[i]>= ′0′ &&s[i]<= ′9′ 【2】s[i]- ′0′ 【3】n
【解析】填空1:如果当前字符的ASCII码大于字符′0′的ASCII码,而小于字符′9′的ASCII码,则说明当前字符是数字字符。填空2:将数字字符转换为数字的方法是,用当前数字字符的ASCII码减去字符′0′的ASCII码。填空3:题目要求函数返回数组bb的长度,而变量n记录了数字字符的个数,也就是数组bb的长度,所以函数应该返回n。
1.填空题
从键盘输入一组无符号整数并保存在数组xx[N]中,以整数0结束输入,要求这些数的最大位数不超过4位,其元素的个数通过变量num传入函数fun()。请补充函数fun(),该函数的功能是:从数组xx中找出个位和十位的数字之和大于5的所有无符号整数,结果保存在数组yy中,其个数由函数fun()返回。
例如:当xx[8]={123,11,25,222,42,333,14,5451}时,
bb[4]={25,42,333,5451}。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。
试题程序:
#include
#define N 1000
int fun(int xx[],int bb[],int num)
{
int i, n=0;
int g, s;
for(i=0;i
{
g=【1】;
s=xx[i]/10 ;
if((g+s)>5)
【2】;
}
return【3】;
}
main()
{int xx[N];
int yy[N];
int num=0,n=0,i=0;
printf("Input number :\n");
do
{
scanf("%u",&xx[num]);
}
while(xx[num++]!=0);
n=fun(xx,yy,num);
printf("\nyy=");
for(i=0;i
printf("%u ",yy[i]);
}答案及评析:【1】xx[i] 【2】bb[n++]=xx[i] 【3】n
【解析】填空1:将一个整数对10取余,则得到这个整数的个位数,将一个整数除以10再对10取余,则得到这个整数的十位数。由程序可以看出,变量s保存了整数的十位数,所以应该将整数的个位数保存于变量g中。填空2:当整数的个位与十位的数字之和大于5时,则将这个整数存于数组bb中,同时,变量n记录了满足条件的无符号整数的个数。填空3:题目要求满足条件的无符号整数的个数由fun函数返回,所以函数返回n。
1.填空题
请补充函数fun(),该函数的功能是判断一个数的个位数字和百位数字之和是否等于其十位上的数字,是则返回“yes!”,否则返回“no!”。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。
试题程序:
#include <stdio.h>
#include <conio.h>
char *fun(int n)
{
int g,s,b;
g=n%10;
s=n/10%10;
b=【1】;
if((g+b)==s)
return【2】;
else
return【3】;
}
main()
{
int num=0;
clrscr();
printf("******Input data *******\n");
scanf("%d",&num);
printf("\n\n\n");
printf("****** The result *******\n");
printf("\n\n\n%s",fun(num));
}
答案及评析:【1】n/100%10 【2】″yes!″ 【3】″no!″
【解析】填空1:由程序可以知道,变量g保存了整数的个位数,变量s保存了整数的十位数,所以变量b应该保存整数的百位数。将整数除以100再对10取余,则得到这个整数的百位数。填空2:当个位数字和百位数字之和等于十位数字时,则返回″yes!″。填空3:当个位数字和百位数字之和不等于十位数字时,则返回″no!″。
1.填空题
请补充main函数,该函数的功能是:从一个字符串中截取前面若干个给定长度的子字符串。其中,str1指向原字符串,截取后的字符存放在str2所指的字符数组中,n中存放需截取的字符个数。
例如:当str1=“cdefghij”,然后输入4,则str2=“cdef”。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。
试题程序:
#include <stdio.h>
#include<conio.h>
#define LEN 80
main()
{
char str1[LEN],str2[LEN];
int n,i;
clrscr();
printf("Enter the string:\n");
gets(str1);
printf("Enter the position of the string
deleted:");
scanf(【1】);
for(i=0;i<n;i++)
【2】
str2[i]=’\0’;
printf("The new string is:%s\n",【3】);
}
答案及评析:【1】″%d″,&n 【2】str2[i]=str1[i]; 【3】str2
【解析】填空1:本题考查对标准输入函数scanf()的调用格式,由后面的程序可以知道,变量n保存了要截取的字符数,注意在n前面不要忘了取址符‘ &’。填空2:截取前n个字符,就是将字符串str1的前n个字符依次赋给字符串str2的前n个字符。填空3:本题考查对标准输出函数printf()的调用格式,根据题意,应输出截取后的字符串,即字符串str2。
1.填空题
请补充main函数,该函数的功能是:从键盘输入一个字符串并保存在字符str1中,把字符串str1中下标为偶数的字符保存在字符串str2中并输出。例如,当str1=“cdefghij”,则str2=“cegi”。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。
试题程序:
#include<stdio.h>
#include<conio.h>
#define LEN 80
main()
{
char str1[LEN],str2[LEN];
char *p1=str1,*p2=str2;
int i=0,j=0;
clrscr();
printf("Enter the string:\n");
scanf(【1】);
printf("***the origial string***\n");
while(*(p1+j))
{
printf("【2】",*(p1+j));
j++;
}
for(i=0;i<j;i+=2)
*p2++=*(str1+i);
*p2=’\0’;
printf("\nThe new string is:%s\n",【3】);
}
答案及评析:【1】″%s″,str1 【2】%c 【3】str2
【解析】填空1:本题考查对标准输入函数scanf()的调用格式,当输入字符串时,格式控制字符串为″%s″,题目要求输入的字符串保存在str1中,所以地址表列应为字符串的首地址,即为str1。填空2:本题考查对标准输出函数printf()的调用格式,当输出为字符型变量时,格式控制字符串为″%c″。填空3:题目要求将str1中下标为偶数的字符保存在字符串str2中并输出,所以printf()函数的输出表列是str2