《C君带你玩编程》
《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/4void main( ) {int i;for(i=1;iprintf ("%d", i);}
选项:
答案: 请关注公众号【渝开搜题】查看答案
问题 60: 10. 以下程序运行后输出的结果是 。 #include #define f(x) x*x*xmain() {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. 通过二级指针间接访问最终对象时,使用间接运算符*即可。( )
选项:
答案: 请关注公众号【渝开搜题】查看答案
微信扫码添加好友
如二维码无法识别,可拨打 13662661040 咨询。