大学MOOC 计算机程序设计基础(中南大学)1206796810 最新慕课完整章节测试答案
专题10字符串处理
专题10单元测验
1、单选题:
有字符数组定义:char array[5]={'a','b','c','','d'};则调用strlen(array)函数的结果是()。
选项:
A: 3
B: 4
C: 5
D: 6
答案: 【 3】
2、单选题:
下列数组不是字符串的是()。
选项:
A: char b[]="hi";
B: char b[5]="a";
C: char b[6]={'C','h','i','n','a',''};
D: char b[5]={'C','h','i','n','a'}
答案: 【 char b[5]={'C','h','i','n','a'}】
3、单选题:
有如下定义:char name[3][8]={"Lihao","Zhangye","Wangyan"};则引用字符串“Lihao”的正确方式是()。
选项:
A: name[0][0]
B: name[0]
C: name[1]
D: name
答案: 【 name[0]】
4、单选题:
下面程序的运行结果是()。#include <stdio.h>
int main()
{
char *s="abcde";
s+=2;
printf("%sn", s);
return 0;
}
选项:
A: 字符'c'的地址
B: 字符'c'
C: cde
D: abc
答案: 【 cde】
5、单选题:
以下不能正确进行字符串赋初值的语句是()。
选项:
A: char str[5]="good!";
B: char *str="good!";
C: char str[]="good!";
D: char str[5]={ 'g','o','o','d'};
答案: 【 char str[5]="good!";】
6、单选题:
有定义语句:char s[]="it is an example.", *t="it is an example.";则以下不正确的叙述()。
选项:
A: s表示的是第一个字符i的地址,s+1表示的是第二个字符t的地址
B: t指向另外的字符串时,字符串的长度不受限制
C: t变量中存放的地址值可以改变
D: s中只能存放17个字符
答案: 【 s中只能存放17个字符】
7、单选题:
若一个字符数组中有多个“”字符,则在判断字符串是否结束时,()。
选项:
A: 以最后一个“”字符为标准
B: 以第一个“”字符为标准
C: 程序错误
D: 不作为字符串
答案: 【 以第一个“”字符为标准】
8、单选题:
有如下语句:char a[]="student",*sp;sp=a;则以下叙述不正确的是()。
选项:
A: a和sp都指向字符串的首地址。
B: printf("%s",a)与printf("%s",sp)效果相同。
C: a与sp的作用完全相同。
D: a代表一个地址常量,sp代表一个地址变量。
答案: 【 a与sp的作用完全相同。】
9、多选题:
有如下程序段:char s[]="girl", *t;t=s;则下列叙述错误的是()。
选项:
A: s和t完全相同
B: 数组s中的内容和指针变量t中的内容相等
C: s数组长度和t所指向的字符串长度相等
D: t[0]与s[0]的值相等
答案: 【 s和t完全相同;
数组s中的内容和指针变量t中的内容相等;
s数组长度和t所指向的字符串长度相等】
10、多选题:
以下有错误的程序段是()。
选项:
A: char s[20]; scanf("%s", &s);
B: char *s;scanf("%s", s);
C: char s[20]; scanf("%s",&s[2]);
D: char s[20], *t=s;scanf("%s", t[2]);
答案: 【 char s[20]; scanf("%s", &s); ;
char *s;scanf("%s", s);;
char s[20], *t=s;scanf("%s", t[2]);】
11、判断题:
使用scanf()函数和“%s”格式符输入字符串时,当遇到空格、回车和制表符,即判断字符串输入结束。
选项:
A: 正确
B: 错误
答案: 【 正确】
12、判断题:
使用gets()函数进行字符串输入时,一次可以输入一行字符,但不能包含空格符。
选项:
A: 正确
B: 错误
答案: 【 错误】
13、判断题:
调用strcat()函数时,其第一个参数不能为字符串常量。
选项:
A: 正确
B: 错误
答案: 【 正确】
14、判断题:
strupr()函数可以将字符串常量中的小写字母变成大写字母。
选项:
A: 正确
B: 错误
答案: 【 错误】
随堂测验
1、单选题:
下列程序执行后的输出结果是()。#include <stdio.h>
#include <string.h>
int main()
{
char arr[2][4];
strcpy(arr[0],"you");
strcpy(arr[1],"me");
strcat(arr[0],arr[1]);
printf("%sn", arr[0]);
return 0;
}
选项:
A: you
B: me
C: youme
D: 无确定的输出结果
答案: 【 youme】
2、单选题:
下面程序的功能是从输入的十个字符串中找出最长的那个串。请在空白处处填空。#include <stdio.h>
#include <string.h>
#define N 10
int main()
{
char s[N][81], *t;
int j;
for (j=0;j<N;j++)
gets(s[j]);
t= *s;
for (j=1;j<N;j++)
if(strlen(t)<strlen(s[j])) ________; //填空
printf("the max length of ten strings is: %d, %sn", strlen(t), t);
return 0;
}
选项:
A: t=s[j]
B: t=&s[j]
C: t=s++
D: t=s[j][0]
答案: 【 t=s[j]】
专题11构造数据类型
专题11单元测验不计入总分
1、单选题:
设有下面的定义:struct student{ int id; char *name; int math;}stud1;关于结构体变量赋值正确的是()。
选项:
A: stud1.id=1001; stud1.name="Jasmine";
B: id=1001; *stud1.name="Jasmine";
C: stud1.id=1001; stud1.*name="Jasmine";
D: stud1.id=1001; *stud1.name="Jasmine";
答案: 【 stud1.id=1001; stud1.name="Jasmine";】
2、单选题:
根据下面的定义,能输出“Mary”的语句是()。#include <stdio.h>struct person{ char name[9]; int age;};struct person class[10]={"John",17,"Paul",19,"Mary",18,"Adam",16};
选项:
A: printf("%sn",class[3].name);
B: printf("%sn",class[1].name[1]);
C: printf("%sn",class[2].name);
D: printf("%sn",class[0].name);
答案: 【 printf("%sn",class[2].name);】
3、单选题:
下列程序的输出结果是()。#include <stdio.h>
int x[]={10,20,30,40,50};
struct
{
int a,*b;
}t={50,x};
int main()
{
printf("%dn",*(++t.b));
return 0;
}
选项:
A: 10
B: 20
C: 30
D: 40
答案: 【 20】
4、单选题:
下列程序的输出结果是()。#include <stdio.h>
struct c
{ int x;
int y;
}s[]={1,3,2,7};
int main()
{
printf("%dn",s->x*s[1].x);
return 0;
}
选项:
A: 14
B: 6
C: 2
D: 21
答案: 【 2】
5、单选题:
以下程序的输出结果是()。#include <stdio.h>
struct country
{ int num;
char name[10];
}x[5]={1,"China",2,"USA",3,"France",4,"England",5,"Spanish"};
int main()
{
struct country *p;
p=x+2;
printf("%d,%cn",p->num,(*p).name[2]);
return 0;
}
选项:
A: 3,a
B: 4,g
C: 2,U
D: 5,S
答案: 【 3,a】
6、单选题:
以下对C语言中共用体类型数据的叙述,正确的是()。
选项:
A: 可以对共用体变量名直接赋值
B: 共用体类型定义中不能出现结构体类型的成员
C: 一个共用体变量中可以同时存放其所有成员
D: 一个共用体变量中不可能同时存放其所有成员
答案: 【 一个共用体变量中不可能同时存放其所有成员】
7、单选题:
以下对枚举类型名的定义中正确的是()。
选项:
A: enum a={one,two,three};
B: enum a {one=9,two=-1,three};
C: enum a={"one","two","three"};
D: enum a {"one","two","three"};
答案: 【 enum a {one=9,two=-1,three};】
8、单选题:
以下程序的输出结果是()。#include <stdio.h>
int main()
{
enum team {my,your=4,his,her=his+10};
printf("%d %d %d %dn",my,your,his,her);
return 0;
}
选项:
A: 0 1 2 3
B: 0 4 0 10
C: 0 4 5 15
D: 1 4 5 15
答案: 【 0 4 5 15】
9、单选题:
以下程序的输出结果是()。#include <stdio.h>
enum WeekDay {Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday};
int main()
{
enum WeekDay day;
for(day=Monday;day<Sunday;day++);
printf("Day=%dn",day);
return 0;
}
选项:
A: Day=0
B: Day=5
C: Day=6
D: Day=7
答案: 【 Day=6】
10、单选题:
以下程序的输出结果是()。#include <stdio.h>
# include <stdlib.h>
union data
{ int b;
char c;
}*p;
int main()
{
int i;
char ch1='a',ch2='A';
p=(union data *)malloc(3*sizeof(union data));
for(i=0;i<3;i++)
{
p->b=++ch1;
p->c=ch2++;
printf("%c,%cn",p->b,p->c);
p++;
}
return 0;
}
选项:
A: b,Ac,Bd,C
B: B,AC,BD,C
C: a,Ab,Bc,C
D: A,AB,BC,C
答案: 【 A,AB,BC,C】
11、多选题:
设有以下说明语句:typedef struct stu{ int a; float b;} stutype;则下面叙述中正确的是()。
选项:
A: struct是结构类型的关键字
B: struct stu是用户定义的结构类型
C: a和b都是结构成员名
D: stutype是用户定义的结构体变量名
答案: 【 struct是结构类型的关键字;
struct stu是用户定义的结构类型;
a和b都是结构成员名】
12、多选题:
若有以下定义和语句:struct student
{
int age,num ;
};
struct student stu[3]={{1001,20},{1002,19},{1003,21}};
int main()
{
struct student *p=stu;
…
}则以下正确的引用是()。
选项:
A: (p++)->num
B: ++p->num
C: (*p).num
D: p->num
答案: 【 (p++)->num;
++p->num;
(*p).num;
p->num】
13、判断题:
在程序中只能定义一种结构体类型。
选项:
A: 正确
B: 错误
答案: 【 错误】
14、判断题:
定义结构体类型时可以给成员变量设定初值,例如下列定义是合法的。struct data{ int x,y=10;};
选项:
A: 正确
B: 错误
答案: 【 错误】
随堂测验
1、单选题:
有以下结构体和变量的定义,且如图所示,指针p指向变量a,指针q指向变量b,则不能把结点b连接到结点a之后的语句是()。
struct node
{
char data;
struct node *next;
}a,b,*p=&a,*q=&b;
![]()
选项:
A: a.next=q;
B: p.next=&b;
C: p->next=&b;
D: (*p).next=q;
答案: 【 p.next=&b;】
2、单选题:
若已建立如图所示的单向链表结构,在该链表结构中,指针p、s分别指向图中所示结点,则不能将s所指的结点插入到链表末尾仍构成单向链表的语句组是()。
![]()
选项:
A: p =p->next;s->next=p;p->next=s;
B: p =p->next;s->next=p->next;p->next=s;
C: s->next=NULL;p=p->next;p->next=s;
D: p=(*p).next;(*s).next=(*p).next;(*p).next=s;
答案: 【 p =p->next;s->next=p;p->next=s;】
3、单选题:
若有以下定义,且变量a和b之间已有如图所示的链表结构,指针p指向变量a,q指向变量c,则能够把c插入到a和b之间并形成新的链表的语句组是()。
struct link
{
int data;
struck link *next;
}a,b,c,*p,*q;![]()
选项:
A: a.next=c; c.next=b;
B: p.next=q;q.next=p.next;
C: p->next=&c; q->next=p->next;
D: (*p).next=q;(*q).next=&b;
答案: 【 (*p).next=q;(*q).next=&b;】
4、多选题:
设有以下定义:
struct ss
{
int data;
struct ss *link;
}x,y,z;
且已建立如图所示链表结构,则删除点y的赋值语句是()。![]()
选项:
A: x.link=&z;
B: y.link=x.link;
C: y.link=&z;
D: x.link=y.link;
答案: 【 x.link=&z;;
x.link=y.link;】
专题12文件操作
专题12单元测验不计入总分
1、单选题:
以下描述中,()不是文件操作的优势。
选项:
A: 使用文件,可以很方便地实现大量数据的输入/输出
B: 使用文件,可以长期保存输出数据
C: 使用文件输入/输出,可以防止数据泄露
D: 使用文件输入/输出可以实现数据与程序分离
答案: 【 使用文件输入/输出,可以防止数据泄露】
2、单选题:
系统的标准输入/输出文件是指()。
选项:
A: 外部设备
B: 闪存盘
C: 硬盘
D: 键盘和显示器
答案: 【 键盘和显示器】
3、单选题:
文件读操作指的是()。
选项:
A: 将程序内存区的数据读取出来,写到文件
B: 将文件中的数据读入到内存
C: 将缓冲区的数据读入到程序区
D: 将硬盘的数据读取到显示器上
答案: 【 将文件中的数据读入到内存】
4、单选题:
利用 fopen()函数实现的操作,若打开文件成功,函数返回()。
选项:
A: 文件名
B: 文件结构体类型内存空间首地址
C: 文件位置指针
D: 文件路径和文件名
答案: 【 文件结构体类型内存空间首地址】
5、单选题:
要对某二进制文件追加数据,则正确的操作方式是()。
选项:
A: "ab"
B: "rb"
C: "wb"
D: 以上都不对
答案: 【 "ab"】
6、单选题:
当需要对一个已经存在的文件进行读写时,正确的操作方式是()。
选项:
A: "a+"
B: "r+"
C: "w+"
D: 以上都不对
答案: 【 "r+"】
7、单选题:
当对一个或多个含格式的数据进行读写时,应该选择的读写函数是()。
选项:
A: fgetc()和fputc()
B: fgets()和fputs()
C: fscanf()和fprintf()
D: fread()和fwrite()
答案: 【 fscanf()和fprintf()】
8、判断题:
文件结构体类型名为File。
选项:
A: 正确
B: 错误
答案: 【 错误】
9、判断题:
文件类型指针和文件读写位置指针都由系统自动设置。
选项:
A: 正确
B: 错误
答案: 【 错误】
10、判断题:
文件随机读写是通过对文件读写位置指针进行定位来完成的。
选项:
A: 正确
B: 错误
答案: 【 正确】
随堂测验
1、单选题:
关于文件读写位置指针,下列说法错误的是()。
选项:
A: 文件读写位置指针由系统自动设置
B: 文件读写位置指针与文件类型指针是同一概念
C: 文件读写位置指针是可以移动的
D: 文件打开时,文件读写位置指针指向第一个字节
答案: 【 文件读写位置指针与文件类型指针是同一概念】
2、单选题:
若文件的打开方式为“w+”,写完之后,要从头重新读,则需要调用()函数将读写位置指针移动到文件开头。
选项:
A: rewind()
B: fseek()
C: ftell()
D: feof()
答案: 【 rewind()】
3、单选题:
函数调用语句fseek(fp,20L,0)的含义是()。
选项:
A: 将文件读写位置指针移到距离文件头20个字节处
B: 将文件读写位置指针移到距离文件尾20个字节处
C: 将文件读写位置指针从当前位置向后移20个字节
D: 将文件读写位置指针从当前位置向前移20个字节
答案: 【 将文件读写位置指针移到距离文件头20个字节处】
4、单选题:
对于随机读写,以下说法不正确的是()。
选项:
A: 随机读写就是在文件内随机选择位置进行读写
B: 在随机读写时,文件读写位置指针指向当前的读写位置
C: 随机读写是通过计算字节数来进行定位的
D: 随机读写更适用于二进制文件的读写
答案: 【 随机读写就是在文件内随机选择位置进行读写】
5、单选题:
有以下定义:struct std{ char num[6]; char name[8]; float mark[4];}a[30];FILE *fp;;设文件中以二进制形式存有10个班的学生数据,且已正确打开,文件指针定位于文件开头。若要从文件中读出30个学生的数据放入a数组中,则以下不能实现此功能的语句是()。
选项:
A: for(i=0; i<30; i++) fread(&a[i], sizeof(struct std), 1L, fp);
B: for(i=0; i<30; i++) fread(a+i, sizeof(struct std), 1L, fp);
C: fread(a, sizeof(struct std), 30L,fp);
D: for(i=0; i<30; i++) fread(a[i], sizeof(struct std), 1L, fp);
答案: 【 for(i=0; i<30; i++) fread(a[i], sizeof(struct std), 1L, fp);】
专题1程序设计概述
专题1单元测验
1、单选题:
编写求100个数之和的程序,其基本思路是()。
选项:
A: 将实现输入和累加操作的语句重复书写100次
B: 用无条件转移语句控制重复执行输入和累加操作
C: 用循环结构控制输入和累加操作重复执行100次
D: 先用便携计算器计算结果,再编写程序输出最后结果
答案: 【 用循环结构控制输入和累加操作重复执行100次】
2、单选题:
关于程序,有一个著名的公式,它是()。
选项:
A: 数据结构+数据模型=程序
B: N-S图+算法=程序
C: 一般流程图+算法=程序
D: 数据结构+算法=程序
答案: 【 数据结构+算法=程序】
3、单选题:
计算机解决问题的方法和步骤,称为()。
选项:
A: 编程
B: 算法
C: 数学模型
D: 语言工具
答案: 【 算法】
4、单选题:
以下叙述不正确的是()。
选项:
A: C/C++程序的一行内只能写一个语句
B: main函数后面有一对花括号,花括号内的部分称为函数体
C: 在C/C++程序中,一个语句可以分成几行写
D: C/C++规定,函数内的每个语句以分号结束
答案: 【 C/C++程序的一行内只能写一个语句】
5、单选题:
下列算法流程图的功能是
