一个有用的网站O(∩_∩)O

智慧树知到《程序设计基础(C语言)入门篇》章节测试答案

智慧树知到《程序设计基础(C语言)入门篇》章节测试答案


第一章

1、下列哪一个不是C语言的的主要特点(        )。

A:语言简洁、紧凑、方便、灵活

B:运算符丰富

C:数据类型丰富

D:能完成任何功能

答案: 能完成任何功能

2、一个C语言程序总是从(       )函数开始。

A:printf

B:scanf

C:main

D:max

答案: main

3、计算机高级语言程序的运行方法有编译执行和解释执行两种,下列叙述中正确的是(       )。

A:C语言程序仅可以编译执行

B:C语言程序仅可以解释执行

C:C语言程序既可以编译执行又可以解释执行

答案: C语言程序仅可以编译执行

4、下列叙述中正确的是(       )。

A:C语言程序的只有一个函数

B:C语言程序中每一行只能写一条语句

C:每个C语句必须以分号结束  

D:C语句必须在一行内写完

答案: 每个C语句必须以分号结束  

5、程序是一组计算机能识别和执行的指令集合。

A:对

B:错

答案: 对

6、计算机语言是一种只有计算机才能识别的语言。

A:对

B:错

答案: 错

7、一个C语言程序是由一个或多个函数组成的,其中必须包含一个函数,函数名是main。

A:对

B:错

答案: 对

8、C语句是以()表示结束

A:逗号

B:分号

C:句号

D:回车

答案: 分号

9、C语言区分大小写。

A:对

B:错

答案: 对

10、C语言只有一个标准。

A:对

B:错

答案: 对

第二章

1、算法的特点不包括(       )。

A:有穷性

B:确定性

C:可行性

D:多个输入

答案: 多个输入

2、算法的有穷性是指(       )。

A:算法的程序运行时间是有限的

B:算法的程序所处理的数据量是有限的

C:算法包含的操作步骤是有限的

D:算法只能被有限的用户使用

答案: 算法包含的操作步骤是有限的

3、在计算机中,算法是指(       )。

A:加工方法

B:解答方案的准确而完整的描述

C:排序方法

D:查询方法

答案: 解答方案的准确而完整的描述

4、算法的特点包括穷性、确定性、可行性、有一个或多个输入和有一个或多个输出。

A:对

B:错

答案: 错

5、在程序设计中,符合结构化原则的三种基本控制结构是顺序结构、选择结构、循环结构。

A:对

B:错

答案: 对

6、传统的流程图只有一个入口,多个出口。

A:对

B:错

答案: 错

7、所谓算法的有穷性是指算法要在合理有限的时间内结束。

A:对

B:错

答案: 对

8、算法是程序的具体实现。

A:对

B:错

答案: 错

9、算法分为数值算法和非数值算法两大类。

A:对

B:错

答案: 对

10、算法是为解决一个问题而采取的方法和步骤,是程序的灵魂。

A:对

B:错

答案: 对

第三章

1、表达式25/3%3的值为2.

A:对

B:错

答案:

2、若有定义:int y=2; 则计算表达式y+=y后的y值是2()

A:对

B:错

答案:

3、下列不正确的叙述是(       )。

A:在C语言程序中,%运算符的优先级高于/ 运算符。

B:在C语言程序中,SUM和sum是两个不同的变量。

C:在C语言程序中,进行赋值运算时,先将右侧表达式的值转化左侧变量的类型再赋给变量。

D:若a和b类型相同,在计算了赋值表达式a=b后b中的值将复制到a中,而b中的值不变。

答案:

4、在C语言中,要求运算对象必须是整型的运算符是(       )。

A:/

B:*

C:-

D:%

答案:

5、下列选项中正确的定义语句是(       )。

A:double a ; b;

B:double a=b=7;  

C:double a=7,b=7;              

D:double , a , b;

答案:

6、输入一个3位正整数n,分别输出n的个位a、十位b、百位c。下面程序的语句填空应为:()

#include <stdio.h>

int main( )

{

int n,a,b,c;

scanf(“%d”,&n);

a=____;;

b=n/10%10;

c=n/100;

printf(“a=%d  b=%d  c=%d”,a,b,c);

return 0;

}

A:b/10

B:n/10

C:n%10

D:a%10

答案:

7、有下列程序,程序运行后的输出结果是(       )。

#include <stdio.h>

int main()

{

int a=1,b=0;

printf(“%d,”,b=a+b);

printf(“%dn”,a=2*b);

return 0;

}

A:0,0

B:1,0

C:3,2

D:1,2

答案:

8、数据在计算机中是以二进制的形式存储的。()

A:对

B:错

答案:

9、变量定义后,如果没有赋值,那变量多表示的存储单元是空的。

A:对

B:错

答案:

10、定义符号常量的名字用命令#define。

A:对

B:错

答案:

第四章

1、有下列程序,已知字母A的ASCII码为65,程序运行后的输出结果是(       )。

#include <stdio.h>

int main()

{

char c1,c2;

c1=’A’+’8’-’4’;

c2=’A’+’8’-’5’;

printf(“%c,%dn”,c1,c2);

return 0;

}

A:E,68

B:D,69

C:E,D

D:输出无定值

答案:

2、有下列程序,程序运行后的输出结果是(       )。

#include <stdio.h>

int  main()

{

int a=14,b=12;

a=a+b;

b=a-b;

a=a-b;

printf(“a=%d,b=%d”,a,b);

return 0;

}

A:a=14,b=12

B:a=12,b=14      

C:a=26,b=26      

D:a=14,b=14

答案:

3、若变量已正确定义为int型,要给a、b、c输入数据,正确的输入语句是(       )。

A:read(a,b,c)

B:scanf(“%D%D%D”,&a,&b,&c);

C:scanf(“%d%d%d”,&a,&b,&c);

D:scanf(“%d%d%d”,a,b,c);

答案:

4、编写程序,输入3个整数a、b、c,输出时:a的值是b,b的值是c,c的值是a。

下面程序可以正确实现题目要求:

#include <stdio.h>

int main()

{

int a,b,c,t

scanf(“%d%d%d”,&a,&b,&c);

t=a;a=b;b=c;c=t;      // 顺序交换a、b、c

printf(“a=%d,b=%d,c=%d”,a,b,c);

return 0;

}

A:对

B:错

答案:

5、已知银行一年定期存款利率r是2.25%,若存款本金是c元,编程计算一年期满是本金之和d(保留两位小数)。

下面程序可以正确实现题目要求:

#include <stdio.h>

int main( )

{

double  r=0.0255,c,d;

scanf(“%f”,&c);

d=c+c*r;

printf(“x=%.2lf”,d);

return 0;

}

A:对

B:错

答案:

6、用getchar()从键盘上输入一个字符,用putchar()打印出来!

参考程序1与参考程序2都可以实现题目要求。

#include <stdio.h>

int main()

{

char a;

a=getchar();

putchar(a);

return 0;

}

参考程序2:

#include <stdio.h>

int main()

{

char ch;

scanf(“%c”,&ch);

printf(“%cn”,ch);

return 0;

}

A:对

B:错

答案:

7、下列程序运行结果为:

#include<stdio.h>

int  main()

{

char a,b,c;

a = ‘r’; b = ‘e’;c = ‘d’;

putchar(a);putchar(b);putchar(c);putchar(‘n’);

return 0;

A:red

B:‘r’’e’’d’  

C:redn  

D:‘r’’e’’d’’n’

答案:

8、如果要求按照12:31:12格式输入数据,那么下面哪个输入语句是正确的:()

A:scanf(“%d%d%d”, &num1, &num2,&num3);

B:scanf(“%d,%d,%d”, &num1, &num2,&num3);

C:scanf(“%d:%d:%d”, &num1, &num2,&num3);

答案:

9、在格式化输入scanf函数中,如何%后面跟有*,表示抑制符,输入的数据不会赋值给相应的变量。()

A:对

B:错

答案:

10、putchar()函数属于无参函数。()

A:对

B:错

答案:

第五章

1、在C语言中,逻辑运算符“&&”比“||”的优先级高(       )。

A:对

B:错

答案:

2、将数学式:a=b或a<c ,写为C语言的表达式为a=b||a<c(       )。

A:对

B:错

答案:

3、已知字母’A’的ASCll码值为 65,若变量c为char 型,下列不能正确判断出c为大写字母的表达式是(       )。

A:c>=’A’&& c<=’Z’

B:!(c>=’A’||c<=’Z’)  

C:(c+32)>=’a’&&(c+32)<=’z’   

D:(c>=65)&&(c<=91)

答案:

4、有下列程序,程序运行后的输出结果是(       )。

#include <stdio.h>

int main()

{

int x=1,y=0;

if (!x) y++;

else if (x==0)

if (x) y+=2;

else y+=3;

printf(“%d”,y);

return 0;

}

A:3

B:2

C:1

D:0

答案:

5、有下列程序,程序运行后的输出结果是(       )。

int a=3,b;

if (a>0) b=1;

else b=-1;

b++;

printf(“%d”,b);

A:1

B:2

C:-1

D:0

答案:

6、有下列程序,程序运行后的输出结果是(       )。

#include <stdio.h>

int main()

{

int x=0,y=2, z=3;

switch(x)

{

case 0: switch(y==2)

{

case 1: printf(“”); break;

case 2: printf(“%”); break;

}

case 1: switch(z)

{

case 1: printf(“$”);

case 2: printf(“”); break;

default: printf(“#”);

}

}

}

A:%

B:#

C:*$

D:**

答案:

7、C语言中条件表达式结果为0表示假,为1表示真。

A:对

B:错

答案:

8、除了最后一个分支,switch语句要求每一个分支后加上一个break语句。

A:对

B:错

答案:

9、C可保证复杂的逻辑表达式是从左至右计算的。

A:对

B:错

答案:

10、有下列程序,程序运行后的输出结果是(       )。

int  a=3,b=5,c=7;

if (a>b) a=b; c=a;

if (c!=a) c=b;

printf(“%d,%d,%dn”,a,b,c);

A:程序段有语法错

B:3,5,3

C:3,5,5

D:3,5,7

答案:

第六章

1、有下列程序段,程序段运行后的输出结果##2##3##4##5(    )。

int k;

for (k=2;k<6;k++,k++)

printf(“##%d”,k);

A:对

B:错

答案:

2、在循环结构中break是终止循环,跳出循环体。

A:对

B:错

答案:

3、以下不构成无限循环的语句组是(       )。

A:int n=0

do

{++n;}

while (n<=0);

B:int n=0;  

while (1)

n++;

C:int n=10;

while (n);

n–;

D:int n=0,i;

for (n=0,i=1;  ;i++)

n+=i;

答案:

4、在C语言中有关for循环,下列正确的说法是(       )。

A:for循环只能用于循环次数已经确定的情况。

B:for循环是先执行循环体语句,后判断表达式。

C:在 for循环中,不能用break跳出循环体。

D:for循环的循环体语句中,可以包含多条语句,但必须用花括号写成复合语句。

答案:

5、有下列程序,程序运行后的输出结果是(       )。

#include  <stdio.h>

int main()

{

int  i,sum;

for (i=1;i<6;i++) sum+=sum;

printf(“%d”,sum);

return 0;

}

A:不确定

B:15

C:14

D:0

答案:

6、有下列程序,程序运行后的输出结果是(       )。

#include <stdio.h>

int main( )

{

int i,j,a=0;

for (i=0;i<2;i++)

{

for (j=0;j<4;j++)

{

if (j%2) break;

a++;

}

a++;

}

printf(“%d”,a);

return 0;

}

A:4

B:5

C:6

D:7

答案:

7、while与do-while在任何时候都可以互换。

A:对

B:错

答案:

8、下面程序可以正确求出1+2+3+。。。+n的和。()

#include <stdio.h>

int main( )

{

int i = 1,sum = 0,n;

scanf(“%d”,&n);

while (i <= n)

sum = sum + i;

++i;

printf(“sum=%d”,sum);

return 0;

}

A:对

B:错

答案:

9、以下程序中的变量已正确定义,程序段的输出结果是(       )。

for(i=0;i<4;i++,i++)

for(k=1;k<3;k++); printf(“”);

A:**

B:**

C:

D:

答案:

10、有下列程序,程序运行后的输出结果是(       )。

#include <stdio.h>

int main()

{

int i,j;

for (i=3;i>=1;i–)

{

for (j=1;j<=2;j++)

printf(” %d”,i+j);

printf(“n”);

}

return 0;

}

A:2 3 4

3 4 5

B:4 3 2

5 4 3

C:2 3

3 4

4 5

D:4 5

3 4

2 3

答案:

第七章

1、在C语言中,数组元素的最小下标是1 。

A:对

B:错

答案:

2、在C语言中,数组名代表首地址。

A:对

B:错

答案:

3、在C语言中,数组一般针对批量数据的处理,这些数据必须具有相同的类型()。

A:对

B:错

答案:

4、假设有一定义语句int a[][3]={1,2,3,4,5,6};那么数组的行数是不确定的。

A:对

B:错

答案:

5、有下列程序,程序运行后的输出结果是0(       )。

#include <stdio.h>

int main( )

{

int a[5]={1,2,3};

printf(“%dn”,a[3]);

return 0;

}

A:对

B:错

答案:

6、若有说明:int a[10]; 则对a 数组元素的正确引用是(       )。

A:a[10-10]

B:a[3.5]

C:a(5)

D:a[10]

答案:

7、有下列程序段,运行后的输出结果是(       )。

int i;

int x[3][3]={1,2,3,4,5,6,7,8,9};

for (i=0;i<3;i++)

printf(“%d “,x[2-i]);

A:1  5  9

B:1  4  7

C:3  5  7

D:3  6  9

答案:

8、有下列程序,运行后的输出结果是(       )。

#include  <stdio.h>

int main()

{

int  a[4][4]=1,3,5},{2,4,6},{3,5,7;

printf(“%d%d%d%dn”,a[0][3],a[1][2],a[2][1],a[3][0]);

return 0;

}

A:0650

B:1470

C:5430

D:输出值

答案:

9、有下列程序,运行后的输出结果是(       )。

#include  <stdio.h>

int main()

{

int  s[12]={1,2,3,4,4,3,2,1,1,1,2,3},c[5]={0},i;

for (i=0;i<12;i++)

c[s]++;

for (i=1;i<5;i++)

printf(”  %d”,c);

printf(” n”);

return 0;

}

A:1 2 3 4

B:2 3 4 4

C:4 3 3 2

D:1 1 2 3

答案:

10、若有定义:int b[3][4]={0};则下述正确的是(       )。

A:b[0][0]的值是0,其他元素值未知

B:没有元素能得初值0

C:数组b中各元素均为0

D:不正确的定义

答案:

第八章

1、有如下函数调用语句:

fun(r1,r2+r3,(r4,r5));

该函数调用语句中,含有的实参个数是3个。

A:对

B:错

答案:

2、函数可以嵌套定义,但不能嵌套调用。

A:对

B:错

答案:

3、mian函数可以自己调用自己。

A:对

B:错

答案:

4、以下正确的函数定义是(       )。

A:double fun(int x,int y)

{ z=x+y; return z; }

B:fun(int x,y)

  { int z; return int z; }

C:fun(x,y)

{int x,y;  z=x+y; retun z;}

D:double fun(int x,int y)

{ double z;z=x+y;return z; }

答案:

5、在C语言函数中,下面说法正确的是(       )。

A:一个return语句可以返回多个值。

B:一个函数中只能有一个return语句。

C:一个函数中可以有多个return语句,但是最多执行其中一个return语句。

D:一个函数中可以有多个return语句,可能多个return语句全部执行

答案:

6、在C语言函数中,以下说法正确的是(       )。

A:定义函数时,形参的类型说明可以放在函数体内。

B:return后边的值不能为表达式

C:如果函数值的类型与return返回值类型不一致,以函数值类型为准

D:如果形参与实参的类型不一致以实参类型为准

答案:

7、在C语言程序中,以下正确的描述是(       )。

A:函数的定义不可嵌套,但函数的调用可以嵌套

B:函数的定义可以嵌套,但函数的调用不可以嵌套

C:函数的定义和函数的调用均不可以嵌套

D:函数的定义和调用均可以嵌套

答案:

8、有下列程序,程序运行后的输出结果是(       )。

#include <stdio.h>

int f(int a)

{

int b=0,c=3;

b++;c++;

return(a+b+c);

}

int main( )

{

int a=2,i;

for (i=0;i<3;i++)

printf(“%4d”,f(a));

return 0;

}

A:7 7 7

B:7 10 13

C:7 8 9

D:7 9 11

答案:

9、有下列程序,程序运行后的输出结果是(       )。

#include <stdio.h>

int func(int a,int b);

int main()

{

int k=4,m=1,p;

p=func(k,m);

printf(“%d “,p);

p=func(k,m);

printf(“%dn”,p);

return 0;

}

int func(int a,int b)

{

int m=0,i=2;

i+=m+1;

m=i+a+b;

return(m);

}

{

int m=0,i=2;

i+=m+1;

m=i+a+b;

return(m);

}

A:8 17

B:8 16

C:8 20

D:8  8

答案:

10、有下列程序,程序运行后的输出结果是(       )。

#include <stdio.h>

int fun (int x,int y);

int main()

{

int a=4,b=5,c=6;

printf(“%dn”,fun(2*a,fun(b,c)));

return 0;

}

int fun (int x,int y)

{

if  (x!=y) return ((x+y)/2);

else return (x);

}

A:3

B:6

C:8

D:12

答案:

第九章

1、若有下列语句:

int a[4]={1,2,3,4},p;

p=&a[2];

则p的值是3

A:对

B:错

答案:

2、int p;此时是一个运算符号,表示间接访问p所指向的变量。

A:对

B:错

答案:

3、有下列程序段,程序段运行后的输出结果是10(       )。

int p,n;

n=10; p=&n; n=p+10;

printf(“%dn”, *p);

A:对

B:错

答案:

4、若有说明:int a=2,p=&a,q=p;,则以下非法的赋值语句是(       )。

A:p=q

B:p=q

C:a=*q

D:q=a

答案:

5、变量的指针是指该变量的(       )。

A:值

B:首地址

C:名

D:别名

答案:

6、若已定义int a=5; 下列对(1)、(2)两个语句的正确解释是(       )

(1) int p=&a;                  (2)p=a;

A:语句(1)和语句(2)中的*p含义相同,都表示给指针变量p赋值。

B:语句(1)和语句(2)语句都是把变量a的地址值赋给指针变量p。

C:语句(1)是对p进行说明的同时进行初始化,使p指向a;语句(2)是将a的值赋给指针变量p。

D:语句(1)是对p进行说明的同时进行初始化,使p指向a;语句(2)是将a的值赋给p指的空间。

答案:

7、下列程序中,主函数调用findmax函数返回数组中的最大值。在下划线处应填入的是(       )。

#include <stdio.h>

findmax( int a, int n)

{

int p, s;

for (p=a, s=a; p-a<n; p++)

if(__) s=p;

return (s);

}

int main()

{

int x[5]={12,21,13,6,18};

printf(“%dn”, findmax(x,5));

return 0;

}

A:p>s

B:p>s            

C:a[p]>a[s]

D:p-a>p-s   

答案:

8、有下列程序,程序运行后的输出结果是(       )。

#include <stdio.h>

void fun( int x,inty);

int main()

{

int x=1,y=2;

fun(&y,&x);

printf(“%d  %d”,x,y);

return 0;

}

void fun( int x,inty)

{

printf(“%d%d”,x,y);

x=3;y=4;

}

A:214  3

B:121  2

C:123  4

D:211  2

答案:

9、有下列程序段,程序段运行后的输出结果是(       )。

int t[]={0,1,2,3,4,5,6,7,8,9}, p;

p=t;

printf(“%dn”, p+9);

A:0

B:1

C:9

D:10

答案:

10、若有下列语句:

int a[4]={1,2,3,4},p;

p=a;

则p的值是3。

A:对

B:错

答案:

第十章

1、若给出下列定义:

char x[]=”abcdefg”;

char y[]={‘a’,’b’,’c’,’d’,’e’,’f’,’g’};

则正确的叙述为(       )。

A:数组y的定义是错的

B:数组x和数组y的长度相同

C:数组x的长度大于数组y 的长度

D:数组x的长度小于数组y的长度

答案:

2、有下列程序,程序运行后的输出结果是(       )。

#include  <stdio.h>

int main()

{

char  ch[7]={ “65ab21”};

int  i,s=0;

for (i=0;ch>= ‘0’&&ch<=’9′;i+=2)

s=10*s+ch- ‘0’;

printf(“%dn”,s);

return 0;

}

A:6

B:6521

C:12ba56

D:62

答案:

3、设有如下的程序段:

char s[]=”girl”, t; t=s;则下列叙述正确的是(       )。

A:t指向s数组首元素

B:数组s中的内容和指针变量t中的内容相等

C:s数组长度和t长度相等

D:t与 &s[0]相等

答案:

4、有下列程序段,程序段运行后的输出结果是(       )。

char b1[8]=”abcdefg”, b2[8], *pb=b1+3;

while( –pb>=b1) strcpy(b2, pb);

printf(“%d”, strlen(b2));

A:8

B:3

C:1

D:7

答案:

5、有下列程序,程序运行后的输出结果是(       )。

#include <stdio.h>

char cchar(char ch)

{

if (ch>=’A’ && ch<‘Z’)

ch=ch-‘A’+’a’;

return  ch;

}

int main()

{

char s[]=”ABC+abc=defDEF”, p=s;

while (p)

{ p=cchar(p);   p++; }

puts(s);

return 0;

}

A:abc+ABC=DEFdef         

B:abcaABCDEFdef

C:abc+abc=defdef

D:abcabcdefdef

答案:

6、从存储机制上看,字符串是以“”为结束标志的字符串数组。()

A:对

B:错

答案:

7、语句printf(“This is a string!”)会把双引号输出。

A:对

B:错

答案:

8、下面程序的运行结果是:We,s()。

#include <stdio.h>

int main()

{

printf (“%s, %c n”,  “We”, *”students”);

return 0;

}

A:对

B:错

答案:

9、下面程序段是正确的。()

char  str[20];

str=“I love China!”

A:对

B:错

答案:

10、可以用函数strcat将两个字符串连接,也可以用+将两个字符串连接。

A:对

B:错

答案:

老友网www.andlaou.com免费为你分享