首页 › 答案 › 题库 › 知到智慧树 › 未分类

智慧树知到《程序设计语言基础(校内)》章节测试答案

智慧树知到《程序设计语言基础(校内)》章节测试答案
绪论单元测试
1、计算机能够直接识别的语言是()。
A.汇编语言
B.机器语言
C.高级语言
正确答案:机器语言
第二章单元测试
1、若x和y代表整型数,以下表达式中不能正确表示数学关系|x-y|<;10的是
A.x-y>;-10 &;&; x-y<;10
B.(x-y)*(x-y)<;100
C.(x-y)<;-10||!(y-x)>;10
D.fabs(x-y)<;10
正确答案:(x-y)<;-10||!(y-x)>;10
2、以下程序运行后的输出结果是()#include <;stdio.h>;int main(){int a=5,b=4,c=3,d;d=(a>;b>;c);printf(";%d\n";,d);return 0;}
A.0
B.5
C.3
D.1
正确答案:0
3、执行以下程序后的输出结果为()#include;<;stdio.h>;int;main(){;int;a=1,b=0;;switch;(a);{;;case;1:;switch;(b);{;;case;0:printf(";**0**";);break;;case;1:printf(";**1**";);break;;}break;;case;2:printf(";**2**";);break;;};return;0;}
A.**0**
B.有语法错误
C.**0****2**
D.**0****1****2**
正确答案:**0**
4、下面程序代码的功能是判断输入的整数能否被5或7整除,如果能够整除,则输出该整数。请将划线处代码填写完整#include;<;stdio.h>;int;main(){;int;m;;printf(";Input;m:";);;scanf(";%d";,&;m);;if;((););//能够被5或7整除;{;printf(";%d";,m);;};;return;0;}
A.m/5==0 &;&; m/7==0
B.m%5==1 &;&; m%7==1
C.m/5==0 || m/7==0
D.m%5==0 || m%7==0
正确答案:m%5==0 || m%7==0
5、计算1-1/2+1/3-1/4+.....+1/99-1/100+......直到最后一项的绝对值小于1e-4为止。代码如下,按要求在划线处填写适当的表达式或语句,使程序完整并符合题目要求。#include;<;stdio.h>;#include;<;math.h>;int;main(){;int;n;=;1;;float;term;=;1,sum;=;0;()(1)();;;while;(fabs(term);>;=;1e-4);//判末项大小;{;term;=;sign;/;n;//求出累加项;sum;=;sum;+;term;//累加()(2)();//改变项的符号;n++;//分母加1;};printf(";sum;=;%f";,sum);;return;0;}
A.(1):float sign=1
(2):sign = -sign
B.(1):float sign= -1(2):sign = -sign
C.(1):float sign= -1(2):term =;-term
D.(1):float sign=1(2):term =;-term
正确答案:(1):float sign=1
(2):sign = -sign
6、以下程序运行后的输出结果是
#include;<;stdio.h>;int;main(){;int;a,b,c;;a=10;;b=20;;c=(a%b<;1)||(a/b>;1);;printf(";%d,%d,%d";,a%b,a/b,c);;return;0;}
A.10,0,0
B.10,1,0
C.10,1,1
D.10,0,1
正确答案:10,0,0
7、从键盘输入三角形的三边长为a,b,c,按下面公式计算并输出三角形的面积。

程序代码如下,但程序运行后输出结果不正确,请找出有问题的语句。
#include;<;stdio.h>;#include;<;math.h>;int;main(){;float;a,b,c;;float;s,area;;printf(";Input;a,b,C.";);;scanf(";%f,%f,%f";,&;a,&;b,&;c);// 第1处;if;(a+b>;c;&;&;b+c>;a;&;&;a+c>;b); // 第2处;{;s;=;1/2;*;(a;+;b;+;c); // 第3处;area;=;sqrt(s;*;(s;-;a);*;(s;-;b);*;(s;-;c));// 第4处;printf(";area=%.2f";,area);;};else;{;printf(";It;is;not;a;triangle";);;};return;0;}A.第1处B.第2处C.第3处D.第4处正确答案:第3处
8、以下程序的输出结果是()#include;<;stdio.h>;int;main(){;int;a=1234;;printf(";%2d";,a);;return;0;}
A.程序出错,无结果
B.34
C.1234
D.12
正确答案:1234
9、以下程序的输出结果是()
#include <;stdio.h>;int main(){; int a, b; for(a=1, b=1; a<;=100; a++); {; if(b>;=10) break; if (b%3==1); {; b+=3; continue; }; }; printf(";%d";,a); return 0;}
A.1
B.2
C.3
D.4
正确答案:4
10、#include;<;stdio.h>;int;main(){;;int;s=0,a=1,n;;scanf(";%d";,&;n);;do;{;;s+=1;;a=a-2;;};while(a!=n);;printf(";%d";,s);;return;0;}以上代码,如果从键盘给n输入的值是-5,则程序的输出结果是()
A.1
B.2
C.3
D.4
正确答案:3
第三章单元测试
1、C语言中函数返回值的类型是由()决定的。
A.return语句中的表达式类型
B.调用该函数的主调函数的类型
C.调用函数时临时决定
D.定义函数时所指定的函数类型
正确答案:定义函数时所指定的函数类型
2、对于C语言的函数,下列叙述中正确的是()。
A.函数的定义不能嵌套,但函数调用可以嵌套
B.函数的定义可以嵌套,但函数调用不能嵌套
C.函数的定义和调用都不能嵌套
D.函数的定义和调用都可以嵌套
正确答案:函数的定义不能嵌套,但函数调用可以嵌套
3、下列函数中,能够从键盘上获得一个字符数据的函数是()。
A.puts()
B.putchar()
C.getchar()
D.gets()
正确答案:getchar()
4、以下叙述中不正确的是()。
A.在不同的函数中可以使用相同名字的变量
B.函数中的形式参数是局部变量
C.在一个函数内定义的变量只在本函数范围内有效
D.在一个函数内的复合语句中定义的变量在本函数范围内有效
正确答案:在一个函数内的复合语句中定义的变量在本函数范围内有效
5、C语言中,函数值类型的定义可以缺省,此时函数值的隐含类型是()。
A.void
B.int
C.float
D.double
正确答案:int
6、下列程序的输出结果是()。#include <;stdio.h>;int MyFuntion(int n);int main(){; int entry = 12345; printf(";%5d";, MyFuntion(entry)); return 0;}int MyFuntion(int Par) {; int result; result = 0; do {; result = result * 10 + Par % 10; Par /= 10; } while (Par); return result;}
A.54321
B.543
C.5432
D.12345
正确答案:54321
7、下列程序的输出结果是()。#include <;stdio.h>;int x1 = 30, x2 = 40;sub(int x, int y) {; x1 = x; x = y; y = x1;}
int main(){; int x3 = 10, x4 = 20; sub(x3, x4); sub(x2, x1); printf(";%d,%d,%d,%d";, x3, x4, x1, x2); return 0;}
A.10,20,40,40
B.10,20,30,40
C.10,20,40,30
D.20,10,30,40
正确答案:10,20,40,40
8、有以下程序#include <;stdio.h>;int fun(int x){ printf(";x=%d";,++x);};int main(){; fun(12+5); return 0;}
A.x=12
B.x=13
C.x=17
D.x=18
正确答案:x=18
9、以下程序运行后的输出结果是()int f(int n){;if(n==1) return 1; else return f(n-1)+1;}int main(){;int i,j=0; for(i=1;i<;3;i++); j+=f(i);printf(";%d";,j);return 0;}
A.3
B.4
C.5
D.有语法错
正确答案:3
10、以下()不是正确的函数原型?
A.int f()
B.int f(int i)
C.int f(int)
D.int f() {}
正确答案:int f() {}
第四章单元测试
1、在int a[ ][3] = { {1,4}, {3,2}, {4,5,6}, {0} };中,a[2][1]的值是()。
A.5
B.0
C.6
D.2
正确答案:5
2、以下数组定义中错误的是()。
A.int x[2][3]={0}
B.int x[2][3]={{1,2},{3,4},{5,6)}
C.int x[][3]={{1,2,3},{4,5,6}}
D.int x[2][3]={1,2,3,4,5,6}
正确答案:int x[2][3]={{1,2},{3,4},{5,6)}
3、以下能正确定义二维数组的是()。
A.int a[][3]
B.int a[][3]={2*3}
C.int a[3][]={}
D.int a[2][3]={{1},{2},{3,4}}
正确答案:int a[][3]={2*3}
4、有如下程序 #include <;stdio.h>;int main(){;int n[5]={0,0,0},i,k=2;for(i=0;i<;k;i++);n[i]=n[i]+1;printf(";%d";,n[k]);return 0;}该程序的输出结果是()。
A.2
B.1
C.0
D.不确定的值
正确答案:0
5、对一个含有100个元素的有序数组,用二分法查找某指定元素,最多需要比较()次?
A.5
B.6
C.7
D.8
正确答案:7
6、以下程序中函数Fun的功能是对b所指数组中的第m至第n个数据取累加和,按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。#include <;stdio.h>;int Fun((),int m,int n){; int ;i,s=0; for(();i<;n;i++) ; s=s+b[i]; return();}int main(){; int ;x,a[]={1,2,3,4,5,6,7,8,9}; x=Fun(a,3,7); printf(";%d";,x); return 0;}
A.第2行:;int b
第5行:;i=0
第7行:;s
B.第2行:;int b[]
第5行:;i=m-1
第7行:;s
C.第2行:;int b[]
第5行:;i=1
第7行:;i
D.第2行:;int b[]
第5行:;i=n-1
第7行:;b[i]
正确答案:第2行:;int b[]
第5行:;i=m-1
第7行:;s
7、以下程序中函数Sort的功能是对a所指数组中的数据进行由大到小的排序,按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。#include <;stdio.h>;void Sort(int a[],int n){; int i,j,t; for(i=0();i++); for(();j<;n;j++); if(a[i]<;a[j]); {; t=a[i](); a[j]=t; }};int main(){; int aa[10]={1,2,30,4,5,6,7,8,9,10},i(); for(i=0;i<;10;i++); printf(";%d,";,aa[i]); printf(";";); return 0;}
A.第5行:;i<;n-1
第6行:;j=i+1
第10行:;a[i]=a[j]
第18行:;Sort(aa,10)
B.第5行:;i<;=n
j第6行:;=i
第10行:;a[i]=a[j]
第18行:;Sort(10,aa)
C.第5行:;i<;n-1
第6行:;j=i
第10行:;a[i]=a[j]
第18行:;Sort(aa[],10)
D.第5行:;i<;n
第6行:;j=i+1
第10行:;a[j]=a[i]
第18行:;Sort(aa,10)
正确答案:第5行:;i<;n-1
第6行:;j=i+1
第10行:;a[i]=a[j]
第18行:;Sort(aa,10)
8、以下程序中函数Reverse的功能是对数组a中的前一半元素逆序、后一半元素逆序,再将逆序后的前、后两部分数据位置交换。按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。例如:主程序中数组b中的元素为{16,22,13,41,50,62,27,18,9,10},调用函数Reverse后,数组b中元素变为{10,9,18,27,62,50,41,13,22,16}。#include <;stdio.h>;void Reverse(int a[],int n){ ; int i,t; for(i=0();i++);{;t=a[i]();a[n-i]=t; }};int main(){ ; int b[10]={16,22,13,41,50,62,27,18,9,10}; int i,s=0(); for(i=0;i<;10;i++); {;printf(";%4d";,b[i]); }; return 0;}
A.第5行:;i<;=n/2
第8行:;a[i]=a[n-i]
第17行:;Reverse(b,9)
B.第5行:;i<;=n/2
第8行:;a[n]=a[i]
第17行:;Reverse(9,b)
C.第5行:;i<;=n/2
第8行:;a[i]=a[n]
第17行:;Reverse(b,9)
D.第5行:;i<;=n
第8行:;a[n-i]=a[i]
第17行:;Reverse(b,9)
正确答案:第5行:;i<;=n/2
第8行:;a[i]=a[n-i]
第17行:;Reverse(b,9)
9、假定double类型变量占用8个字节,且数组定义如下,则数组length在内存中所占字节数是()。double ;length [10]。
A.0
B.10
C.80
D.160
正确答案:80
10、以下程序的输出结果是()。#include<;stdio.h>;void swap1(int c[]){; int t; t=c[0]; c[0]=c[1]; c[1]=t;};void swap2(int c0,int c1){; int t; t=c0; c0=c1; c1=t;};int main(){; int a[2]={3,5},b[2]={3,5}; swap1(a); swap2(b[0],b[1]); printf(";%d %d %d %d";,a[0],a[1],b[0],b[1]); return 0;}
A.3 5 3 5
B.5 3 3 5
C.5 3 5 3
D.3 5 5 3
正确答案:5 3 3 5
第五章单元测试
1、对于如下说明,语法和语义都正确的赋值是()。int;c,*s,a[]={1,3,5};
A.c=*s
B.s[0]=a[0]
C.s=&;a[1]
D.c=a
正确答案:s=&;a[1]
2、假设有下面定义语句:float a[10];float *p=a;则p++相当于是加上()个字节
A.sizeof(float*)
B.sizeof(a)
C.sizeof(float)
D.1
正确答案:sizeof(float)
3、以下哪个定义中的p不是指针,请选择恰当的选项:
A.char **p;
char **p;
char **p;
char **p
B.char (*p)[10]
C.char *p[6]
D.给出的三项中,p都是指针
正确答案:char *p[6]
4、以下程序的执行结果是()。int main(){int a, b, k = 4, m = 6, * p1 = &;k, * p2= &;m;a = p1 == &;m;b = (-*p1)/(*p2) + 7;printf(";%d, %d";, a, b);return 0;}
A.-1, 7
-1, 7
B.1, 5
C.0, 7
D.0, 5
正确答案:0, 7
5、下面程序的运行结果是()。
#include<;stdio.h>;int main(void)
{ ; int x[5] = { 2, 4, 6, 8, 10 }, *p, **pp; p = x; pp = &;p; printf(“%d ”, *(p++)); printf(”%d”, **pp); return 0;}
A.4 4
B.2 4
C.2 2
2 2
D.4 6
正确答案:2 4
6、已有如下代码:
char a[5],*p=a;则下面选项中正确的赋值语句是()
A.p=“abcd”
B.a=“abcd”
C.*p=“abcd”
D.*a=“abcd”
正确答案:p=“abcd”
7、以下程序的运行结果是()#include;<;stdio.h>;sub;(int;x,int;y,int *z)
{*z=y-x;};int;main()
{; int a,b; sub(10,5,&;a); sub(7,a,&;b); printf(";%d,%d";,a,b); return;0;}
A.5, 2
B.-5,-2
C.-5, -12
D.5, -2
正确答案:-5, -12
8、如果有定义:int m, n = 5, *p = &;m; 与m = n 等价的语句是()。
A.m = *p;
m = *p;
m = *p;
m = *p;
m = *p
B.*p = *&;n
C.m = &;n
D.m = **p
正确答案:*p = *&;n
9、若有定义:int *p[3]; 则以下叙述中正确的是()。
A.定义了一个基类型为int的指针变量p,该变量具有三个指针
B.定义了一个指针数组p,该数组含有三个元素,每个元素都是基类型为int的指针
C.定义了一个名为*p的整型数组,该数组含有三个int类型元素
D.定义了一个可指向一维数组的指针变量p,所指一维数组应具有三个int类型元素
正确答案:定义了一个指针数组p,该数组含有三个元素,每个元素都是基类型为int的指针
10、若已定义int num[10];,则下面表达式中不表示num[1]的地址的是()
A.num+1
B.num++
C.&;num[0]+1
D.&;num[1]
正确答案:num++
第六章单元测试
1、有以下说明和定义语句,下面各输入语句中错误的是()
#include;<;stdio.h>;
int;main()
{
;struct;student
;{
;int;age;
;char;sex;
;char;name[8];
;};
;
;struct;student;std;
; struct;student;*p=&;std;
;.......;return 0;
}
A.scanf(";%s";,&;std.name)
B.scanf(";%c";,&;(p->;sex))
C.scanf(";%c";,&;std[0].sex)
D.scanf(";%d";,&;(*p).age)
正确答案:scanf(";%d";,&;(*p).age)
2、定义以下结构体数组struct c{;int x; int y;}s[2]={1,3,2,7};语句 printf(";%d";,s[0].x*s[1].x);的输出结果是()
A.14
B.6
C.2
D.21
正确答案:2
3、以下程序执行后的输出结果是
#include;<;stdio.h>;struct;STU{;char;name[10];;int;num;};;void;Fun1(struct;STU;c){;struct;STU;b={";LiGuo";,2042};;c=b;};;void;Fun2(struct;STU;*c){;struct;STU;b={";SunDan";,2044};;*c=b;};;int;main(){;struct;STU;a={";YangHan";,2041},b={";WangYi";,2043};;Fun1(a);;Fun2(&;b);;printf(";%d;%d";,a.num,b.num);;return;0;}A.2041 2043B.2041 2044C.2042 2043D.2042 2044正确答案:2041 2044
4、若能使程序运行后的输出结果如下:201501则空白处填写的表达式或语句应该是
#include;<;stdio.h>;struct;student;{;;int;age;;char;num[8];;};;int;main(){;struct;student;stu[3]={{20,";201501";},{21,";201502";},{19,";201503";}};;struct;student;*p=stu;;();;return;0;}A.printf(";%s";,(*p).num)B.printf(";%s";,stu[1]->;num)C.printf(";%s";,(++p)->;num)D.printf(";%d";,p.age)正确答案:printf(";%s";,(*p).num)
5、当定义一个结构体类型的变量时,系统为它分配的内存空间是()
A.结构中一个成员所需的内存容量
B.结构中第一个成员所需的内存容量
C.结构中各成员所需的内存容量综合
D.结构体中占内存容量最大的成员所需的容量
正确答案:结构中各成员所需的内存容量综合
第七章单元测试
1、如果二进制文件a.dat已经存在,现在要求写入全新数据,应以()方式打开。
A.";w"
B.";wb";
C.";w+"
D.";wb+"
正确答案:";wb";
2、若fopen()函数打开文件失败,其返回值是()。
A.1
B.-1
C.NULL
D.ERROR
正确答案:NULL
3、若读文件还未读到文件末尾, feof()函数的返回值是()。
A.-1
B.0
C.1
D.非0
正确答案:0
4、fputc(ch,fp) 把一个字符ch写到fp所指示的磁盘文件中,若写文件失败则函数的返回值为()。
A.0
B.1
C.EOF
D.非0
正确答案:EOF
5、阅读以下程序,对程序功能的描述中正确的是
#icnlude;<;stdio.h>;int;main(){;FILE;*in,*out;;char;ch,infile[10],outfile[10];;printf(";Enter;the;infile;namE.";);;scanf(";%s";,infile);;printf(";Enter;the;outfile;namE.";);;scanf(";%s";,outfile);;if;((in;=;fopen(infile,";r";));==;NULL);{;printf(";cannot;open;infile.";);;exit(0);;};;if;((out;=;fopen(outfile,";w";));==;NULL);{;printf(";cannot;open;outfile.";);;exit(0);;};;while;(!feof(in));{;fputc(fgetc(in),out);;};fclose(in);;fclose(out);;return;0;}A.程序完成将一个磁盘文件中的信息复制到另一个磁盘文件中的功能B.程序完成将两个磁盘文件合并并在屏幕上输出的功能C.程序完成将两个磁盘文件合二为一的功能。D.程序完成将磁盘文件的信息在屏幕上显示的功能。正确答案:程序完成将一个磁盘文件中的信息复制到另一个磁盘文件中的功能
第八章单元测试
1、若x=2,y=3,则x&;y的结果是
A.0
B.2
C.3
D.5
正确答案:2
2、设x=061,y=016,则z=x|y的值是
A.00001111
B.11111111
C.00111111
D.11000000
正确答案:00111111
3、执行以下代码将输出()。#include<;stdio.h>;void main(){; char a=3,b=1;; char c=a^b<;<;2;; printf(";%d";,c);}
A.1
B.7
C.3
D.2
正确答案:7
4、以下程序中c的二进制值是()。char a=2,b=4,c;c=a^b>;>;2
A.00000011
B.00010100
C.00011100
D.00011000
正确答案:00000011
5、若x=3,y=5,则x^y的结果是
A.2
B.4
C.6
D.8
正确答案:6
第九章单元测试
1、在一个以 h 为头的单向链表中,p 指针指向链尾的条件是()。
A.p->;next=h
B.p->;next=NULL
C.p->;next->;next=h
D.p->;.data=-1
正确答案:p->;next=NULL
2、在单链表指针为p的结点之后插入指针为s的结点,正确的操作是()。
A.p->;next=s;s->;next=p->;next
B.s->;next=p->;next;p->;next=s
C.p->;next=s;p->;next=s->;next
D.p->;next=s->;next;p->;next=s
正确答案:s->;next=p->;next;p->;next=s
3、在一个单链表head中,若要在指针p所指结点后插入一个q指针所指结点,则执行()。
A.p->;next=q->;next; q->;next=p
B.q->;next=p->;next; p=q
C.p->;next=q->;next; p->;next=q
D.q->;next=p->;next; p->;next=q
正确答案:q->;next=p->;next; p->;next=q
4、在一个单链表head中,若要删除指针p所指结点的后继结点,则执行()。
A.p=p->;next;free(p)
B.p->;next=p->;next->;next; free(p)
C.q= p->;next q->;next=p->;next; free(q)
D.q=p->;next; p->;next=q->;next; free(q)
正确答案:q=p->;next; p->;next=q->;next; free(q)
5、若已建立下面的链表结构,指针p、q分别指向图中所示结点,则不能将q所指结点插入到链表末尾的语句是()。(1分)

A.q->;next=NULL; p=p->;next; p->;next=q
B.p=p->;next; q->;next=p->;next; p->;next=q
C.p=p->;next; q->;next=p; p->;next=q
D.p=(*p).next; (*q).next=(*p).next; (*p).next=q;
正确答案:p=p->;next; q->;next=p; p->;next=q