c语言基础选择题10道

  (创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹)

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

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小周不摆烂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值