(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹)
1. 以下选项中可用作 C 语言合法用户标识符的是(c)
A. 2a
B. -abc
C. void
D. _123
解析:c语言合法标识符规则是
1.标识符的第一个字符必须是字母(a~z或A~Z)或下划线(_);
2、后面跟的字符是由任意字母、下划线(_)、数字组成;
3、标识符中的大小写字母是有区别的,代表不同含义;
4、标识符不能是关键字。
2.运算符--, %, !=中优先级由高到低排序正确的是( A )
A. --, %, !=
B. %, !=, --
C. !=, --, %
D. --, != ,%解析:
3. 以下程序的输出结果是:(A)
void main() { int x=10,y=10; printf("%d %d\n",x - -, - - y); }
A. 10 9
B. 10 10
C. 9 9
D. 9 10
解析:--后置表示为先-后显示,--前置表示先显示后--
4.以下程序中,while循环的循环次数是(A)
void main( ){ int i=0; while(i<10){ if(i<1) continue; if(i==5) break; i++; } .....
A. 死循环,不能确定次数
B. 10
C. 1
D. 6
解析: 在C语言中,continue的用法是:if中为真就执行continue,跳出此处循环,进行下一次循环,如果那点换成是break就直接退出循环了,即使没有循环完,也是不再循环,直接退出循环结构。
在本题中i=0,经过continue循环后一直在while中循环,且i一直为0
5. 以下能对一维数组a进行初始化的语句是(A)
A. int a[5]={0,1,2};
B. int a{5}={10*1};
C. int a[5]=(0,1,2,3,4);
D. int a[5]={};
解析:数组内部用{}表示
6. 设有定义: int x[2][3];则以下关于二维数组x的叙述错误的是(C)
A. 元素x[0]可看作是由3个整型元素组成的一维数组
B. x[0]和x[1]是数组名,分别代表一个地址常量
C. 可以用x[0]=0的形式为数组所有元素赋初值0
D. 数组x可以看作是由x[0]和x[1]两个元素组成的一维数组
解析: 在二维数组中,不能用x[0]=0这样的赋值语句,x[0]代表一个一维数组
7. 若有说明:int i, j=2,*p=&i;,则能完成i=j赋值功能的语句是:(A)
A. *p=*&j;
B. i=*p;
C. i=&j;
D. i=**p;
解析:在声明中 int i, j=2, *p=&i; 定义了i,j 两个整数型变量,并且j的值为2。后面又定义了一个整数型指针p。只有声明变量里面的*才表示p是一个指针,与后面的*不一样。所以这里的p是一个指针,后面的&i表示取i的地址。于是p就得到了i的地址。p指向i,所以若要把j赋值给i,有两种方法。一种是直接赋值,另一种是用指向i的p间接赋值
A选项:右边的*&j表示先取j的地址,再根据j的地址去到j的内容,等价于j本身
B选项:*p是取p的内容,也就是取到了i的值。然而i并没有赋值。没有初始化的i里面的内存可能是其他程序使用过的,里面的东西是随机的。而且把i赋值给i也不对。
C选项:把j的地址赋值给i也是不对的。一是类型不匹配,指针不能直接赋值给整数型变量。所以编译会产生未强制类型转换就赋值的警告。二是不符合把j赋值给i的题意。运行后i得到了j的地址,但以整数的格式解读出来,得到的数字是看不出来有什么意义的。
D选项:i=**p; 语法错误,编译无法通过。*p先取到了p的内容,即得到了类型为整数型的i的内容。而*只能对指针操作取出指向指针。*p已经是整数型无法再解引用了(解引用就是取内容)。
8. 以下程序的运行后输出的结果是_____D____.
#include<stdio.h> void main() { int x=0,a=0,b=0; switch(x) { case 0: b+a; case 1: ++a; case 2: a--;b--; } printf("a=%d,b=%d\n",a,b); }
A. a=0,b=1
B. a=-1,b=-1
C. a=-1,b=0
D. a=0,b=-1
9. 下面程序的输出结果是______C____.
#include<stdio.h> void main( ) { int a[3][3]={1,2,3,4,5,6,7,8,9}; int i; for(i=0; i<3; i++) { printf("%d ",a[2-i][i]); } }
A. 5 9 1
B. 3 5 7
C. 7 5 3
D. 1 5 9
解析:
:int arr[3][3]={1,2,3
4,5,6
7,8,9}
第一次打印a[2][0],第二次a[1][1],a[0][2],对应的二维数组方便为7,5,3
10. 以下程序执行时,给变量x输入10,程序的输出结果是__C_____.
int fun(int n) { if(n==1) return 1; else return (n+fun(n-1)); } void mainJ() { int x; scanf("%d",&x); x=fun(x); printf("%d\n",x); }
A. 65
B. 45
C. 55
D. 54
解析:10+9+8+7+6+5+4+3+2+1=55