大学MOOC 计算机程序设计基础Ⅰ(青岛理工大学琴岛学院)1452334199 最新慕课完整章节测试答案
1 程序设计与C语言简介
文章目录
计算机可以处理哪些问题?
1、判断题:
计算机只能处理由人们编写的、解决某些问题的、事先存储在计算机存储器中的二进制指令序列。
选项:
A: 正确
B: 错误
答案: 【 正确】
11 指针一
指针单元测验
1、单选题:
如有下面的语句说明, 则表达式 *(p+3) 的值是 ( )。 int a[]={2,3,4,5,6,7}; int *p=a;
选项:
A: 3
B: 4
C: 5
D: 6
答案: 【 5】
2、单选题:
如有下面的语句说明, 则执行语句for(i=0;*s++;i++); 后变量i的值是 ( )。 int i; char *s="an46b";
选项:
A: 5
B: 6
C: 7
D: 8
答案: 【 5】
3、单选题:
如有下面的语句说明, 则正确的赋值语句是 ( )。char a[10], *p=a;
选项:
A: a[10]=”VC++”;
B: a=”VC++”;
C: p=”VC++”;
D: *p=”VC++”;
答案: 【 p=”VC++”;】
4、单选题:
如有下面的语句说明, 则下面赋值表达式非法的是 ( )。 int i=0, j=0, *p=NULL,*q=NULL;
选项:
A: p=&i
B: *q=&j
C: i=*p++ + *q
D: i=(int) p
答案: 【 *q=&j 】
5、单选题:
若有以下语句,则&a[2]-p的值是( )。int a[3],*p=a;
选项:
A: 2
B: 3
C: 1
D: 不确定
答案: 【 2】
6、单选题:
若有程序段 int b[4],*p,*q; p=&b[1]; q=&b[3]; 则q-p表示的意义是( )。
选项:
A: 表达式错误
B: p与q之间数据个数
C: p占据的字节数
D: p与q之间的字节数
答案: 【 p与q之间数据个数】
7、单选题:
若有定义: float *p,m; , 则以下正确的表达式是( )。
选项:
A: p=&m
B: p=m
C: *p=&m
D: *p=*m
答案: 【 p=&m 】
8、判断题:
地址运算符”&”可作用于变量和数组元素,分别获得变量和数组元素的地址。
选项:
A: 正确
B: 错误
答案: 【 正确】
9、判断题:
只可以通过求地址运算”&”获得地址值。
选项:
A: 正确
B: 错误
答案: 【 错误】
10、判断题:
空指针p是指向地址为0的存贮单元的指针。
选项:
A: 正确
B: 错误
答案: 【 错误】
11、判断题:
如有变量的定义char *p=”abc”; 语句 *p=’X’;是合法的。
选项:
A: 正确
B: 错误
答案: 【 错误】
12、判断题:
如有变量的定义char s[]=”abc”; 语句char *p=s; 是合法的。
选项:
A: 正确
B: 错误
答案: 【 正确】
13、判断题:
如有变量的定义int *r; double x; 则语句 r=&x; 是合法的。
选项:
A: 正确
B: 错误
答案: 【 错误】
14、填空题:
若有定义:char ch;使指针p指向变量ch的定义语句是_______。
答案: 【 char *p=&ch;】
15、填空题:
若已定义char *p;,使指针p指向变量ch的赋值语句是______ 。
答案: 【 p=&ch;】
16、填空题:
若有定义:char ch,*p=&ch;通过指针p给变量ch读入字符的scanf调用语句是______。
答案: 【 scanf("%c",p);】
17、填空题:
若有定义:char ch,*p=&ch;通过指针p给变量ch赋字符'a'的语句是______。
答案: 【 *p='a';】
18、填空题:
若有定义:char ch,*p=&ch;通过指针p用格式输出函数输出ch中字符的语句是______。
答案: 【 printf("%c",*p);】
19、填空题:
如有变量的定义int i, *p=&i; 则表达式 p==&i的值是 。
答案: 【 1】
20、填空题:
将字符数组s1中的字符串拷贝到字符数组s2中,并输出s2,请完善程序。#include <stdio.h>int main( ){char s1[80],s2[80],*p1,*p2; gets(s1); p1=s1; p2=s2; while(*p2++=*p1++); printf("s2=%s",________); return 0; }
答案: 【 s2】
21、填空题:
将输入的字符串按逆序输出,例如输入abcd,则按dcba顺序输出出来,请完善程序。#include <stdio.h>#include <string.h>int main( ){ char *str, s[20]; int n; str=s; scanf("%s",str); n=strlen(str); while(--n>=0) { str=&s[____]; printf("%c",*str); } return 0;}
答案: 【 n】
22、填空题:
删除字符串的所有前导空格,请完善程序。#include <stdio.h>void f1(char *s){char *t; t=________; while(*s==' ') s++; while(*t++=*s++); }int main( ) {char str[80]; gets(str); f1(str); puts(str); return 0;}
答案: 【 s】
13 结构与共用体
结构体单元测验
1、单选题:
下面结构体的定义语句中,错误的是()。
选项:
A: struct ord {int x; int y; int z;}struct ord a;
B: struct ord {int x; int y; int z;}; struct ord a;
C: struct ord {int x; int y; int z;}a;
D: struct {int x; int y; int z;}a;
答案: 【 struct ord {int x; int y; int z;}struct ord a; 】
2、单选题:
有以下的结构体变量定义语句:struct student { int num; charname[9];} stu;则下列叙述中错误的是( )。
选项:
A: 结构体类型名为stu
B: num是结构体成员名
C: struct是C的关键字
D: 结构体名为student
答案: 【 结构体类型名为stu】
3、单选题:
设有定义:struct complex{ int real, unreal;} data1={1,8},data2;则以下赋值语句中错误的是()。
选项:
A: data2=(2,6);
B: data2.real=data1.unreal;
C: data2=data1;
D: data2.real=data1.real;
答案: 【 data2=(2,6);】
4、单选题:
设有定义:struct {char mark[12]; int num1; double num2;} t1,t2;若变量均已正确赋初值,则以下语句中错误的是()。
选项:
A: t2.mark=t1.mark;
B: t2.num2=t1.num2;
C: t2.num1=t1.num1;
D: t1=t2;
答案: 【 t2.mark=t1.mark;】
5、单选题:
有以下定义语句:struct student {int num; char name[9];};则不能正确定义结构体数组并赋初始值的是( )。
选项:
A: struct student stu[2]={1, "zhangsan",2,"li si"};
B: struct student stu[2]={{1,"zhangsan"},{2,"li si"}};
C: struct student stu[]={{1,"zhangsan"},{2,"li si"}};
D: struct stu[]={{1,"zhangsan"},{2,"li si"}};
答案: 【 struct stu[]={{1,"zhangsan"},{2,"li si"}};】
6、单选题:
有以下程序:#include<stdio.h>struct S{ int a,b;}data[2]={10,100,20,200};int main(){struct S p=data[1]; printf("%dn",++(p.a));return 0;}程序运行后的输出结果是()。
选项:
A: 11
B: 20
C: 10
D: 21
答案: 【 21】
7、单选题:
以下程序的输出结果是( )。#include <stdio.h>int main(){ struct cmplx { int x; int y; }cnum[2]={1,3,2,7}; printf("%dn",cnum[0].y/cnum[0].x*cnum[1].x); return 0;}
选项:
A: 3
B: 1
C: 6
D: 0
答案: 【 6】
8、单选题:
有以下程序: #include <stdio.h> struct ord { int x,y; } dt[2]={1,2,3,4}; int main() { struct ord *p=dt; printf("%d,",++p->x); printf("%dn",++p->y); return 0; }程序的运行结果是()。
选项:
A: 2,3
B: 1,2
C: 4,1
D: 3,4
答案: 【 2,3】
9、单选题:
若有以下定义:struct date{int y,m,d;};struct student{ int num;char name[9]; structdate bir;} stu,*p=&stu;则以下对结构体变量stu成员的引用中错误的是( )。
选项:
A: p->bir->y
B: stu.bir.y
C: stu.name
D: p->bir.y
答案: 【 p->bir->y】
10、单选题:
若有以下说明和定义union dt{ int a; char b; double c;}data;以下叙述中错误的是()。
选项:
A: data的每个成员起始地址都相同
B: 程序段:data.a=5;printf("%fn",data.c);输出结果为5.000000
C: 变量data所占内存字节数与成员c所占字节数相等
D: data可以作为函数的实参
答案: 【 程序段:data.a=5;printf("%fn",data.c);输出结果为5.000000 】
11、判断题:
设有定义:struct student{ int ID; char name[12]; }s,*p=&s; 语句:p.ID=20161001;是否正确?
选项:
A: 正确
B: 错误
答案: 【 错误】
12、判断题:
使几个不同类型的变量共占同一段内存的结构称为共用体。
选项:
A: 正确
B: 错误
答案: 【 正确】
13、判断题:
在定义一个共用体变量时,系统分配给它的存储空间是该共用体变量中占用存储单元最长的成员的长度。
选项:
A: 正确
B: 错误
答案: 【 正确】
14、判断题:
结构体变量可以在函数间传递,传递方式有值传递和地址传递两种。
选项:
A: 正确
B: 错误
答案: 【 正确】
15、填空题:
结构体是不同数据类型的数据集合,作为数据类型, 必须先定义结构体______,再定义结构体变量。
答案: 【 类型】
16、填空题:
设有定义:struct person{ int ID; char name[12]; }pa;请将scanf("%s",______);语句补充完整,使其能够为结构体变量pa的成员name正确读入数据。
答案: 【 pa.name】
17、填空题:
以下程序运行后的输出结果是 ______。 #include<stdio.h>struct NODE{ int k; char s[20];};int main(){ struct NODE m[3]; int i; for(i=0;i<3;i++) m[i].k=i+1; for(i=0;i<3;i++) printf("%d ",m[i].k); return 0;}
答案: 【 1 2 3】
18、填空题:
设有以下语句: struct st {int n; struct st *next; }; static struct st a[3]={5, &a[1], 6,&a[2], 9, ''}, *p; p=&a[0]; 则表达式++p->n的值是______。
答案: 【 6】
19、填空题:
程序运行的结果是______。#include <stdio.h>int main(){ union example { int a; int b; }e; e.a=1;e.b=2; printf("%dn",e.a); return 0;}
答案: 【 2】
14 文件
文件单元测验
1、单选题:
在C语言中,文件存取的基本单位是:
选项:
A: 字
B: 字节
C: 位
D: 回车符
答案: 【 字节】
2、单选题:
在C语言中,从文件中将数据读到内存中称为:
选项:
A: 输入操作
B: 输出操作
C: 修改
D: 删除
答案: 【 输入操作】
3、单选题:
定义fp为文件型指针变量,以读写方式打开一个已存在的文本文件test.dat,下面fopen函数正确的调用方式是:
选项:
A: FILE *fp; fp=fopen("test.dat", "rb");
B: FILE*fp; fp=fopen("test.dat", "r+");
C: FILE *fp; fp=fopen("test.dat", "r");
D: FILE *fp; fp=fopen("test.dat", "rb+");
答案: 【 FILE*fp; fp=fopen("test.dat", "r+");】
4、单选题:
若FILE *fp; 关闭文件的语句是:
选项:
A: close(fp);
B: fclose( );
C: fclose(fp);
D: close( );
答案: 【 fclose(fp); 】
5、单选题:
FILE *fp; 有两个整型变量a和b, 若要从文件把数据读到其中, 正确的形式是:
选项:
A: fscanf(fp,"%d%d",a ,b);
B: fscanf(fp,"%d%d",&a ,&b);
C: fscanf("%d%d",&a ,&b, fp);
D: fprintf(fp,"%d",a ,b);
答案: 【 fscanf(fp,"%d%d",&a ,&b);】
6、单选题:
定义fp为文件型指针变量,使用fopen只读方式打开一个已存在的二进制文件,以下正确的调用形式为:
选项:
A: fp=fopen("my.dat", "r");
B: fp=fopen("my.dat", "rb+");
C: fp=fopen("my.dat", "rb");
D: fp=fopen("my.dat", "r+");
答案: 【 fp=fopen("my.dat", "rb");】
7、单选题:
若fp已正确定义并指向某个文件,当未遇到该文件结束标志时函数feof(fp)的值为:
选项:
A: -1
B: 1
C: 0
D: 非零
答案: 【 0】
8、单选题:
下列关于C语言数据文件的叙述中正确的是:
选项:
A: 文件由数据流形式组成,可分为二进制文件和ASCII码字符序列组成的文本文件。C语言可以读/写文本文件和二进制文件。
B: 文件是由ASCII码字符序列组成的, C语言只能读/写文本文件。
C: 文件是由二进制数据序列组成, C语言只能读/写二进制文件。
D: C语言只能按格式化的方式读/写文件 。
答案: 【 文件由数据流形式组成,可分为二进制文件和ASCII码字符序列组成的文本文件。C语言可以读/写文本文件和二进制文件。】
9、单选题:
若执行fopen函数时发生错误,则函数的返回值是:
选项:
A: EOF
B: 1
C: 地址值
D: NULL
答案: 【 NULL】
10、单选题:
若要用fopen函数打开一个新的二进制文件,该文件要既能读也能写,则文件方式字符串应是:
选项:
A: rb
B: wb
C: wb+
D: ab
答案: 【 wb+】
11、判断题:
“文件”一般指存储在外部介质上的数据集合。
选项:
A: 正确
B: 错误
答案: 【 正确】
12、判断题:
C语言中,文件的存取方式可以是随机存取,也可以是顺序存取。
选项:
A: 正确
B: 错误
答案: 【 正确】
13、判断题:
feof(fp)函数用来判断fp所指向的文件是否结束,若遇到文件结束符,函数feof()的返回值是假(0),否则是真(非0),
选项:
A: 正确
B: 错误
答案: 【 错误】
14、判断题:
对文件进行读/写操作之前必须打开文件。
选项:
A: 正确
B: 错误
答案: 【 正确】
15、判断题:
C语言中在打开文件时,必须说明文件的使用方式, "r+"用于打开一个不存在的文件。
选项:
A: 正确
B: 错误
答案: 【 错误】
16、判断题:
对文件读写操作之后,程序结束之前必须关闭文件。
选项:
A: 正确
B: 错误
答案: 【 正确】
17、判断题:
C语言中文件的使用方式"w" 用于文本文件,若文件存在则文件内容被清除,若文件不存在则新建一个文本文件,然后进行写操作。
选项:
A: 正确
B: 错误
答案: 【 正确】
18、判断题:
C语言中文件的使用方式 "wb" 用于二进制文件,若文件存在则文件内容被清除,若文件不存在则新建一个二进制文件,然后进行写操作。
选项:
A: 正确
B: 错误
答案: 【 正确】
19、判断题:
C语言中,fprintf是一个向文件格式化写数据(输出)的函数。
选项:
A: 正确
B: 错误
答案: 【 正确】
20、判断题:
在C语言中,当顺利地执行了关闭文件操作后,文件关闭函数返回值为0。
选项:
A: 正确
B: 错误
答案: 【 正确】
21、填空题:
//下面程序用来统计文件中字符的个数。#include <stdlib.h>#include <stdio.h> int main() { FILE *fp; int num=0; if((fp=fopen("test.dat", "r"))==NULL) { printf("Can't Open File!n"); exit(0); } while ( ) { fgetc(fp); num++; } printf("num=%dn", num-1); fclose(fp) ; return 0; }
答案: 【 feof(fp)==0##%_YZPRLFH_%##!feof(fp)】
22、填空题:
在C语言中,根据要处理的文件存储的编码形式,可以把文件分为ASCII文件和 文件.
答案: 【 二进制】
23、填空题:
调用 fopen 函数打开一文本文件,在"使用方式"这一项中, 向已存在的文本文件尾增加数据需填入 。
答案: 【 "a"##%_YZPRLFH_%##a】
24、填空题:
函数fgetc(FILE *fp)读到文件尾结束符时,返回一个文件结束标志EOF,其值为:
答案: 【 -1】
25、填空题:
//下面程序是把从键盘输入的字符依次存放到文件中,用“#”作为结束输入的标志。 #include <stdlib.h> #include <stdio.h> int main() { FILE *fp; char ch, if((fp=fopen("test.txt","w"))==NULL) { printf("Can't Open Filen"); exit(0); } printf("Enter datan"); while((ch=getchar())!='#') fputc( , fp); fclose(fp); return 0; }
答案: 【 ch】
2 变量及表达式
C语言基础知识单元测验
1、单选题:
关于变量定义,下面说法错误的是()。
选项:
A: 变量的类型确定了变量占据的存储单元的大小
B: 确定了变量的名字
C: 确定了变量中的内容
D: 确定了变量的表数范围
答案: 【 确定了变量中的内容】
2、单选题:
sizeof(float)的执行结果是()。
选项:
A: 一种函数调用
B: 一个浮点表达式
C: 一个不合法的表达式
D: 一个整型表达式
答案: 【 一个整型表达式】
3、单选题:
若有 float x=2,y=5.6;则表达式 (int)x%(int)y将完成( )。
选项:
A: 将x和y的类型转换为整型
B: 将x和y的的表达式的类型转换为整型,完成求余运算
C: 不能进行求余运算
D: 将x的值的类型转换为整型
答案: 【 将x和y的的表达式的类型转换为整型,完成求余运算】
4、单选题:
下列叙述正确的是( )。
选项:
A: C语言中的数据的类型不同,在内存中占据相同长度的存储单元
B: C语言中的数据的类型不同,在内存中占据不同长度的存储单元
C: C语言中的常量是没有类型的
D: C语言中的数据的类型不同,但取值范围都是相同的
答案: 【 C语言中的数据的类型不同,在内存中占据不同长度的存储单元】
5、单选题:
下列关于C语言用户标识符的叙述中正确的是( )。
选项:
A: 用户标识符中可以出现下划线和中划线(减号)
B: 用户标识符中不可以出现中划线,但可以出现下划线
C: 用户标识符中可以出现下划线,但不可放在标识符开头
D: 用户标识符中可以出现下划线和数字,它们都可放在用户标识符的开头
答案: 【 用户标识符中不可以出现中划线,但可以出现下划线】
6、单选题:
下列转义字符中,错误的是( )。
选项:
A: ' xa5'
B: ' 31'
C: ' b'
D: ' "'
答案: 【 ' xa5'】
7、单选题:
字符串 "\\abcd\\n"在内存中占用的字节数是( )。
选项:
A: 14
B: 9
C: 10
D: 11
答案: 【 10】
8、单选题:
已知梯形的上底为a,下底为b,高为h,用C语言书写的正确的面积公式是( )。
选项:
A: 1/2*(a+b)*h
B: 1.0/2*(a+b)*h
C: 1.0/2.0(a+b)h
D: 1.02*a+b*h
答案: 【 1.0/2*(a+b)*h】
9、单选题:
与k=n++完全等价的表达式是( )。
选项:
A: n=n+1, k=n
B: k+=n+1
C: k
