百年教育职业培训中心 百年教育学习服务平台
国开搜题

中国大学MOOC《C君带你玩编程》作业答案

来源: 更新时间:

《C君带你玩编程》学校:无问题1:1.在一个C源程序文件中所定义的全局变量,其作用域为()。选项:•A.由具体定义位置和extern说明来决定范围•B.所在程序的全部范围&bull

《C君带你玩编程》

学校: 无

问题 1: 1. 在一个C源程序文件中所定义的全局变量,其作用域为( )。

选项:

A. 由具体定义位置和extern说明来决定范围

B. 所在程序的全部范围

C. 所在函数的全部范围

D. 所在文件的全部范围

答案: 由具体定义位置和extern说明来决定范围

问题 2: 2. 在C语言中,若定义静态存储变量没有初始化,则系统赋初值为( )。

选项:

A. -1

B. 0

C. 1

D. 2

答案: 0

问题 3: 3. 设有如下函数定义:
#include
int fun(int k)
{ if(k<1) return 0;
else if(k==1) return 1;
else return fun(k-1)+1;
}
若执行调用语句n=fun(3);,则函数fun总共被调用的次数是( )。

选项:

A. 2

B. 3

C. 4

D. 5

答案: 3

问题 4: 4. 有以下程序:
#include
int fun( )
{ static int x=1;
x*=2;
return x;
}
main( )
{ int i,s=1;
for(i=1;i<=3;i++)
s*=fun( );
printf("%d\n",s);
}
程序的运行结果是( )。

选项:

A. 10

B. 30

C. 0

D. 64

答案: 64

问题 5: 5. 下列程序的输出结果是( )。
#include
int a=3,b=4;
void swap(int x,int y)
{ b=x;
x=y;
y=b ;
}
main( )
{ int m=1,n=2;
swap(m,n);
swap(a,b);
printf("%d,%d,%d,%d",m,n,a,b);
}

选项:

A. 1,2,3,3

B. 2,1,3,4

C. 1,2,3,4

D. 3,4,1,2

答案: 1,2,3,3

问题 6: 6. 以下关于函数的叙述中不正确的是( )。

选项:

A. 在C语言程序中,函数的调用可以嵌套

B. 在C语言程序中,函数的定义不能嵌套

C. 在C语言程序中,被调用的函数必须在main函数中定义

D. C程序是函数的集合,包括标准库函数和用户自定义函数

答案: 在C语言程序中,被调用的函数必须在main函数中定义

问题 7: 7. 以下关于实参和形参的叙述中不正确的是( )。

选项:

A. 在参数传递时,实参与形参的类型须一致

B. 在参数传递时,实参与形参的个数须一致

C. 形参可以是常量、变量、表达式、函数等

D. 实参可以是常量、变量、表达式、函数等

答案: 请关注公众号【渝开搜题】查看答案

问题 8: 8. 根据变量的作用域,可以将变量分为局部变量和____变量。

选项:

答案: 请关注公众号【渝开搜题】查看答案

问题 9: 9. 递归调用分为直接递归和____递归两种方式。

选项:

答案: 请关注公众号【渝开搜题】查看答案

问题 10: 10. 变量的存储类型主要有四种,分别是:auto、____ 、extern和register。

选项:

答案: 请关注公众号【渝开搜题】查看答案

问题 11: 11. 函数的递归调用是指直接或间接地调用该函数本身。( )

选项:

答案: 请关注公众号【渝开搜题】查看答案

问题 12: 12. 根据函数的使用范围,可以将函数分为内部函数和外部函数。( )

选项:

答案: 请关注公众号【渝开搜题】查看答案

问题 13: 1. 若有说明:int a[ ][4] = {3,8,7,0,5,4,9,1,2},则数组第一维的大小为( )。

选项:

A. 2

B. 3

C. 4

D. 不确定的值

答案: 请关注公众号【渝开搜题】查看答案

问题 14: 2. 若定义int a[2][2]={8,9,6,7};则a数组的各数组元素分别为( )。

选项:

A. a[0][0]=8 , a[0][1]=9 , a[1][0]=6 , a[1][1]=7

B. a[0][0]=9 , a[0][1]=8 , a[1][0]=7 , a[1][1]=6

C. a[0][0]=6 , a[0][1]=7 , a[1][0]=8 , a[1][1]=9

D. a[0][0]=6 , a[0][1]=7 , a[1][0]=9 , a[1][1]=8

答案: 请关注公众号【渝开搜题】查看答案

问题 15: 3. 在定义int b[ ][3]={1,2,3,4,5,6};,则b[1][0]的值是( )。

选项:

A. 1

B. 2

C. 4

D. 5

答案: 请关注公众号【渝开搜题】查看答案

问题 16: 4. 有以下程序:
#include
main( )
{ int i,t[ ][3]={9,8,7,6,5,4,3,2,1};
for(i=0;i<3;i++)
printf("%d",t[2-i][i]);
}
程序的运行结果是( )。

选项:

A. 357

B. 753

C. 369

D. 751

答案: 请关注公众号【渝开搜题】查看答案

问题 17: 5. 下列定义数组的语句中错误的是( )。

选项:

A. int x[2][3]={l,2,3,4,5,6};

B. int x[ ][3]={0};

C. int x[ ][3]={{l,2,3},{4,5,6}};

D. int x[2][3]={{l,2},{3,4},{5,6}};

答案: 请关注公众号【渝开搜题】查看答案

问题 18: 6. 下列定义数组的语句中错误的是( )。

选项:

A. int num[ ][3]={{l,2},3,4,5,6};

B. int num[2][4] = {{l,2},{3,4},{5,6}};

C. int num[ ]={l,2,3,4,5,6};

D. int num[ ][4]={l,2,3,4,5,6};

答案: 请关注公众号【渝开搜题】查看答案

问题 19: 7. 以下程序的输出结果是____。
#include
main( )
{ int a[2][2]= {3,2,1,0};
int i,j,num;
for (i=0;i<2;i++)
for (j=0;j<2;j++)
a[i][j]*=2;
num=a[0][0];
for (i=0;i<2;i++)
for (j=0;j<2;j++)
if (a[i][j]>num)
{num=a[i][j];}
printf("%d\n",num);
}

选项:

答案: 请关注公众号【渝开搜题】查看答案

问题 20: 8. 二维数组带有两个下标,第一个下标是行下标,第二个下标是列下标。( )

选项:

答案: 请关注公众号【渝开搜题】查看答案

问题 21: 9. 二维数组初始化时,不能省略第一维的长度,可以省略第二维的长度。( )

选项:

答案: 请关注公众号【渝开搜题】查看答案

问题 22: 10. 二维数组中,每个数组元素的类型可以不同。( )

选项:

答案: 请关注公众号【渝开搜题】查看答案

问题 23: 1. 调用字符串处理函数时,#include命令行中应包含的头文件名是( )。

选项:

A. math.h

B. string.h

C. stdlib.h

D. stdio.h

答案: 请关注公众号【渝开搜题】查看答案

问题 24: 2. 若有定义语句:char s[10]="1234567\0\0";,则strlen(s)的值是( )。

选项:

A. 7

B. 8

C. 9

D. 10

答案: 请关注公众号【渝开搜题】查看答案

问题 25: 3. 有以下程序:
#include
main( )
{ char s[ ]={"012xy"};
int i,n=0;
for(i=0;s[i]!=0;i++)
if(s[i]>='a'&&s[i]<='z')
n++;
printf("%d\n",n);
}
程序的运行结果是( )。

选项:

A. 0

B. 2

C. 3

D. 5

答案: 请关注公众号【渝开搜题】查看答案

问题 26: 4. 有以下程序:
#include
main( )
{ char s[ ]="abcde";
s+=2;
printf("%d\n",s[0]);
}
程序的运行结果是( )。

选项:

A. 输出字符c的ASCII码

B. 程序出错

C. 输出字符c

D. 输出字符a的ASCII码

答案: 请关注公众号【渝开搜题】查看答案

问题 27: 5. 若要求从键盘读入含有空格字符的字符串,应使用函数( )。

选项:

A. getchar( )

B. puts( )

C. gets( )

D. scanf( )

答案: 请关注公众号【渝开搜题】查看答案

问题 28: 6. 下列选项中,能够满足“只要字符串s1等于字符串s2,则执行ST”要求的是( )。

选项:

A. if(s1-s2==0) ST;

B. if(strcpy(s1,s2) ==1) ST;

C. if(s1==s2) ST;

D. if(strcmp(s2,s1)==0) ST;

答案: 请关注公众号【渝开搜题】查看答案

问题 29: 7. 若有定义:char c="hello!";,则以下说法正确的是( )。

选项:

A. c占用7字节内存

B. c是一个字符串变量

C. 定义中有语法错误

D. c的有效字符个数是6

答案: 请关注公众号【渝开搜题】查看答案

问题 30: 8. 若有定义;char s1[100]="is",s2[50]="red",s3[80]="it",要将它们连接成新串:"itisred",正确的函数调用语句是( )。

选项:

A. strcat(strcat(sl,s2),s3);

B. strcat(s3,strcat(sl,s2));

C. strcat(s3,strcat(s2,sl));

D. strcat(strcat(s2,s1),s3);

答案: 请关注公众号【渝开搜题】查看答案

问题 31: 9. 执行下列程序,输出结果是( )。
#include
#include
main( )
{ char s1[30]="fly", s2[30]="ing";
printf("%s\n",strcpy(s1,s2));
}

选项:

A. fly

B. ing

C. flying

D. 出错

答案: 请关注公众号【渝开搜题】查看答案

问题 32: 10. 执行下列程序,输出结果是( )。
#include
#include
main( )
{ char str[30]={'n','u','m','\0','b','e','r','\0'};
printf("%s\n", str);
}

选项:

A. num

B. ber

C. number

D. 出错

答案: 请关注公众号【渝开搜题】查看答案

问题 33: 11. 若有定义: char x[ ]="abc";,则数组x所占的存储空间为____个字节。

选项:

答案: 请关注公众号【渝开搜题】查看答案

问题 34: 12. 若有定义: char y[ ]={'a','b','c'};,则数组y所占的存储空间为____个字节。

选项:

答案: 请关注公众号【渝开搜题】查看答案

问题 35: 13. 在C语言中,可以用关系运算符比较两个字符串。( )

选项:

答案: 请关注公众号【渝开搜题】查看答案

问题 36: 14. strlen函数可以计算字符串长度,字符串结束标志‘\0’不计入字符串的实际长度。( )

选项:

答案: 请关注公众号【渝开搜题】查看答案

问题 37: 15. 字符数组除了可以存放字符型数据,还可以存放字符串。( )

选项:

答案: 请关注公众号【渝开搜题】查看答案

问题 38: 1. 设已有定义float x;,则下列对指针变量p进行定义且赋初值的语句正确的是( )。

选项:

A. int *p=(float)x;

B. float *p=&x;

C. float p=&x;

D. float *p=1024;

答案: 请关注公众号【渝开搜题】查看答案

问题 39: 2. 若有定义语句double a,*p=&a;,下列叙述中错误的是( )。

选项:

A. 定义语句中的*号是一个间址运算符

B. 定义语句中的*号是一个说明符

C. 定义语句中的p只能存放double类型变量的地址

D. 定义语句中,*p=&a把变量a的地址作为初值赋给指针变量p

答案: 请关注公众号【渝开搜题】查看答案

问题 40: 3. 若有定义语句double a,b,*pa=&a,*pb;以下赋值语句会出现错误的是( )。

选项:

A. a=b=10;

B. pb=&b;

C. pa=pb;

D. pb=pa;

答案: 请关注公众号【渝开搜题】查看答案

问题 41: 4. 若有定义语句double x,y,*px,*py;,执行了px=&x;py=&y;之后,正确的输入语句是( )。

选项:

A. scanf(“%lf%lf”,px,py);

B. scanf(“%f%f”,&x,&y);

C. scanf(”%f%f”,x,y);

D. scanf(”%lf%lf”,x,y);

答案: 请关注公众号【渝开搜题】查看答案

问题 42: 5. 若有定义:int b=10, *pb=&b;*pb-=10,则语句printf("%d\n",b);的输出结果是( )。

选项:

A. 10

B. 0

C. b的地址

D. pb的地址

答案: 请关注公众号【渝开搜题】查看答案

问题 43: 6. 下列程序段中完全正确的是( )。

选项:

A. int *p;scanf(”%d”,&p);

B. int *p;scanf(”%d”,p);

C. int k,*p=&k;scanf(”%d”,p);

D. int k,*p;*p=&k;scanf(”%d”,p);

答案: 请关注公众号【渝开搜题】查看答案

问题 44: 7. 运行以下程序的输出结果是( )。
#include
main( )
{
int a=1,b=3,c=5;
int *pl=&a,*p2=&b,*p=&c;*p=*pl*(*p2);
printf(”%d\n”,c) ;
}

选项:

A. 1

B. 2

C. 3

D. 4

答案: 请关注公众号【渝开搜题】查看答案

问题 45: 8. 以下叙述中正确的是( )。

选项:

A. 无论指针变量p具有何种基类型,表达式p=p+1都代表指针p移动一个字节

B. 指针变量具有基类型,基类型不同的指针变量不能直接相互赋值

C. 指针变量的赋值操作p=0;是非法的

D. 通过指针变量存取某个变量值的方式称为“直接存取”方式

答案: 请关注公众号【渝开搜题】查看答案

问题 46: 9. 以下关于指针的说法错误的是( )。

选项:

A. 可以向指针中写入任意数据

B. 可以向指针所指内存单元中写入数据

C. 指针可以指向与其基类型相同的普通变量

D. 可以通过加法运算,使指针指向下一个内存单元

答案: 请关注公众号【渝开搜题】查看答案

问题 47: 10. 同一数据类型的变量在内存中所对应的存储单元长度是相同的。( )

选项:

答案: 请关注公众号【渝开搜题】查看答案

问题 48: 11. C语言中*号即可以定义指针,也可以作为间接访问运算符。( )

选项:

答案: 请关注公众号【渝开搜题】查看答案

问题 49: 12. 若有指针变量px,则px=0表示px指向地址为0的存储单元。( )

选项:

答案: 请关注公众号【渝开搜题】查看答案

问题 50: 13. 间接访问运算符*的运算对象只能是指针变量或者地址。( )

选项:

答案: 请关注公众号【渝开搜题】查看答案

问题 51: 1. 下列叙述中正确的是( )。

选项:

A. 在C语言中,预处理命令行都以“#”开头

B. 预处理命令行必须位于C源程序的起始位置

C. #include必须放在C程序的开头

D. C语言的预处理不能实现宏定义和条件编译的功能

答案: 请关注公众号【渝开搜题】查看答案

问题 52: 2. 下列关于宏的叙述中正确的是( )。

选项:

A. 宏替换没有数据类型限制

B. 宏定义必须位于源程序中所有语句之前

C. 宏名必须用大写字母表示

D. 宏调用比函数调用耗费时间

答案: 请关注公众号【渝开搜题】查看答案

问题 53: 3. 下列叙述中错误的是( )。

选项:

A. C程序对预处理命令行的处理是在程序执行过程中进行的

B. 预处理命令行的最后不能以分号表示结束

C. #define MAX 100是合法的宏定义命令行

D. 在程序中,凡是以“#”开始的语句行都是预处理命令行

答案: 请关注公众号【渝开搜题】查看答案

问题 54: 4. 下面关于编译预处理的命令行中,正确的是( )。

选项:

A. #define int INT

B. ##define eps 0.001

C. ##DEFINE TRUE

D. #define E 2.88

答案: 请关注公众号【渝开搜题】查看答案

问题 55: 5. 若程序中有宏定义行:#define N 100,则下列叙述中正确的是( )。

选项:

A. 宏定义行中定义了标识符N的值为整数100

B. 在编译程序对C源程序进行预处理时用100替换标识符N

C. 上述宏定义行实现将100赋给标识符N

D. 在运行时用100替换标识符N

答案: 请关注公众号【渝开搜题】查看答案

问题 56: 6. 以下程序运行后输出结果是( )。
#include
#define Pf 3.5
#define S(x) Pf*x*x
main()
{
int a=1,b=2;
printf("%f\n",S(a+b));
}

选项:

A. 7.5

B. 31.5

C. 程序有错无输出结果

D. 14.0

答案: 请关注公众号【渝开搜题】查看答案

问题 57: 7. 以下程序运行后输出结果是( )。
#include
#define S(x) 4*(x)*x+1
main()
{
int k=5,j=2;
printf("%d\n",S(k+j));
}

选项:

A. 33

B. 197

C. 143

D. 28

答案: 请关注公众号【渝开搜题】查看答案

问题 58: 8. 以下程序运行后输出结果是( )。
#include
#define SUB(a) (a)-(a)
main()
{
int a=2,b=3,c=5,d ;
d=SUB(a+b)*c ;
printf("%d\n",d);
}

选项:

A. O

B. -12

C. -20

D. 10

答案: 请关注公众号【渝开搜题】查看答案

问题 59: 9. 以下程序运行后输出的结果是 。
#include
#define N 1
#define M (N+1)
#define NUM (M+2)*M/4
void main( )
{
int i;
for(i=1;i
printf ("%d", i);
}

选项:

答案: 请关注公众号【渝开搜题】查看答案

问题 60: 10. 以下程序运行后输出的结果是 。
#include
#define f(x) x*x*x
main()
{
int a=2,b,c;
b=f(a+1);
c=f((a+1));
printf ("%d,%d\n", b,c );
}

选项:

答案: 请关注公众号【渝开搜题】查看答案

问题 61: 11. 下面程序是利用宏计算圆的面积,填空完成程序。
#include
#define PI 3.14
#define area(r)
main()
{
printf ("%f\n", area(3));
}

选项:

答案: 请关注公众号【渝开搜题】查看答案

问题 62: 12. 下面程序是实现字符串的拷贝和比较,填空完成程序。
#include
#include< >
main ()
{
char a[10];
int m;
strcpy(a,"student");
puts(a);
m=strcmp("abcd","abaa");
printf ("%d\n", m);
}

选项:

答案: 请关注公众号【渝开搜题】查看答案

问题 63: 13. 编译预处理的作用域是从出现点到所在源程序的末尾。( )

选项:

答案: 请关注公众号【渝开搜题】查看答案

问题 64: 14. 凡是以“#”开头的命令行都称为编译预处理命令。( )

选项:

答案: 请关注公众号【渝开搜题】查看答案

问题 65: 15. C语言中只能进行简单的宏定义,不能定义带参数的宏。( )

选项:

答案: 请关注公众号【渝开搜题】查看答案

问题 66: 16. 编译预处理的文件包含命令中包含的文件名只能用尖括号,不能用其他符号。( )

选项:

答案: 请关注公众号【渝开搜题】查看答案

问题 67: 17. 带参宏定义中,参数不必指明数据类型。( )

选项:

答案: 请关注公众号【渝开搜题】查看答案

问题 68: 18. 一个#include命令可以包含多个头文件。( )

选项:

答案: 请关注公众号【渝开搜题】查看答案

问题 69: 19. C语言中宏定义必须写在函数之外。( )

选项:

答案: 请关注公众号【渝开搜题】查看答案

问题 70: 1. 以下叙述中错误的是( )。

选项:

A. 通过指针变量存取某个变量值的方式称为“直接存取”方式

B. 在程序的开头包含头文件stdio.h后,可以给指针变量赋NULL值

C. 将一个指针变量中的值赋给另一个指针变量,则这两个指针指向同一地址

D. C语言中函数返回值的类型可以是简单的数据类型,也可以是指针类型

答案: 请关注公众号【渝开搜题】查看答案

问题 71: 2. 己定义以下函数int fun(int *p) return *p; fun函数的返回值是( )。

选项:

A. 一个整数

B. 不确定的值

C. 形参p中存放的值

D. 形参p的地址值

答案: 请关注公众号【渝开搜题】查看答案

问题 72: 3. 以下叙述中正确的是( )。

选项:

A. int *p();,p是一个函数名,该函数返回值为指向整型数据的指针

B. 函数指针p指向一个同类型的函数f时,必须写成:p=&f;

C. 指针p指向一个数组f时,必须写成:p=&f;

D. 一个指针变量p可以指向自身

答案: 请关注公众号【渝开搜题】查看答案

问题 73: 4. 执行以下程序的输出结果是( )。
#include
void f(int *p,int *q);
main()
{
int m=1 ,n=2, *r=&m; f(r,&n);
printf("%d,%d",m,n);
}
void f(int *p,int *q)
{
p=p+1;
*q=*q+1;
}

选项:

A. 23

B. l,3

C. l,4

D. l,2

答案: 请关注公众号【渝开搜题】查看答案

问题 74: 5. 下列函数的功能是( )。

void fun( char *a, char *b)
{while(*b=*a)!='\0'){a++;b++};}

选项:

A. 将a所指字符串赋给b所指空间

B. 使指针b指向a所指字符串

C. 将a所指字符串和b所指字符串进行比较

D. 检查a和b所指字符串中是否有'\0'

答案: 请关注公众号【渝开搜题】查看答案

问题 75: 6. 执行以下程序的输出结果是( )。
#include
int show(char *str )
{
while( *str)
{
putchar( *str+1 );
str++;
}
return *str+1;
}
main( )

{printf("%d\n",show("ABCD"));}

选项:

A. ABCD0

B. BCDE0

C. BCDE1

D. ABCD1

答案: 请关注公众号【渝开搜题】查看答案

问题 76: 7. 当指针变量作为函数参数时,数据传递方式是地址传递。( )

选项:

答案: 请关注公众号【渝开搜题】查看答案

问题 77: 8. 数组名作为函数形参时,其对应的实参只能是数组名。( )

选项:

答案: 请关注公众号【渝开搜题】查看答案

问题 78: 1. 若有定义,int a=3 ,*p=&a, **q=&p;,则以下叙述中错误的是( )。

选项:

A. q是指针变量,*q就是变量a

B. p是指针变量,p指向变量a

C. q指向变量p,所以*q指向变量a

D. *P与**q都代表变量a

答案: 请关注公众号【渝开搜题】查看答案

问题 79: 2. 设有定义:int a=0,*p=&a,**q=&p;则以下选项中,错误的赋值语句是( )。

选项:

A. a=1;

B. *p=1;

C. *q=1;

D. **q=1;

答案: 请关注公众号【渝开搜题】查看答案

问题 80: 3. 以下程序运行后输出的结果是( )。
#include
main( )
{
int **q,*p,b=100;
p=&b;q=&p;
*p+=5;**q-=5;
printf("%d\n",b);
}

选项:

A. 运行出错

B. 100

C. 105

D. 95

答案: 请关注公众号【渝开搜题】查看答案

问题 81: 4. 指向指针的指针也称为二级指针,存放的是一级指针的地址。( )

选项:

答案: 请关注公众号【渝开搜题】查看答案

问题 82: 5. 通过二级指针间接访问最终对象时,使用间接运算符*即可。( )

选项:

答案: 请关注公众号【渝开搜题】查看答案

电话咨询