c语言基础题讲解——每日基础题

今天是2023年最后一天,在这里我祝愿大家愿你们今年所有留下遗憾,都是来年惊喜铺垫。

本文章与爱学习你们一同带着遨游于2024年知识海洋。本文中题大多数来自于网络。这些都是我认为好一点基础题,有一些是题目是我考试遇见的希望这些题目能够帮助你们度过2024年c语言基础考试,在这里祝愿大家遇到都会,考到都对。

让我们来看看第一道题吧


以下程序段输出结果是()
char arr[]="\\141\141abc\t"
printf("%d\n",strlen(arr));
A 9          c 13

B 12         D 14



解:我们仔细看这道题感觉啊,对于基础扎实简单,基础不怎么好的人有点友好了,我们来分析一下这个字符数组吧,\\这结合是一个转义字符表示\,   1算是一个字符 ,4算是一个字符,1算是一个字符,

\141算是一个转义字符,a算是一个字符,b算是一个字符,c算是一个字符,\t算是一个转义字符。然后相加可以知道答案了

第2题
判断一下这段代码输出结果是()
int main()
{
    int i =1;
    sancf(i++);
    printf("%d\n",i);
    return 0;
}

A 1        B 4
C 2        D 8

解:这道题考验你对scanf的认识,我们c语言中scanf表示操作符,不是函数,其实里面i是不会进行加的操作,虽然这里用的是后置++,但是i的值不会发生改变,所有还是保持1;这里提到后置++,我这里分想一下我是怎么区分的  比如 i++  我们把i想象成赋值,这样子就是先赋值然后在++,同理后置++i,可以想象成先++在赋值。

第三题
c语言中 假设a =3,b=4;执行语句printf("%d,%d",(a,b)(b,a));输出结果是()

A 3,4        B (3,4)(4,3)
C 4.3        D不确定

解:这道题考查是逗号表达式理解,逗号表达式计算时候是从左往右顺序计算,但是输出结果只输出最右边结果。所以说不难看出来选择那个;

第4题

已有定义x=13,y=15,则执行这个表达式z=x||(x-=y)后,变量y的值和z的值()

A 15,1        B13,15
C 13.1        D15,13

解:这道题考验你对c语言中或操作符的理解,在c语言中表示左边为1的真值,这种情况下会默认最右边不管是真还是假统一是1;但是遇见最左边为假,这个就会以右边的真假为结果x 的值为 13,非零,因此不执行 x -= yx 的值保持为 13。又因为 z 的值为 x || (x -= y) 的结果,即 1,因此 z 的值为 1

第5题

在一个循环语句while(!x);中表达式!x等价于()

A X!=0          BX!=1
C X==0          DX==1

解:这道题比较简单ix 我们假设x==1,!x这个表达式不为假(0)跳出循环,所以说x==0,才符合这道题表达式。

第6题
下面程序运行结果是()
int mian()
{
    int count =0;
    while(count <=2)
    {
        count++;
        printf("%d\n",count);
    }

    return 0;
}

解:count = 0 ,1 ,2时候进入循环体,先执行count++ ,为1,2,3。当count=3表达式为假退出循环;

所以输出结果1,2,3;

第7题
判断一下这段代码输出结果
int main()
{
    int x =1;
    int y =2;
    int v =3;
    if(x==1 && (++y ==3)||(v++==3))
        printf("%d %d %d\n",x,y,v);

    return 0;

}

解:这道题考验你对 || 和 &&这两个操作符理解,我们上面题已经介绍或操作符,这里我就直接讲述这两个操作符简单描述    A||B :假设A为真,那么B不管真假都不会执行,假设A为假,就会以B的结果为表达式结果。 A&&B :假设A为真,B为假,那么表达式为假,假设A为真,B为真,表达式为真。总结两边都为真表达式为真,反之两边其中一个为假,表达式为假。我们来分析一下这个代码x==1为真,所有右边也必须其中一个为真,++y这个先+在赋值y==3为真,那么后面默认为真不执行,输出结果为x=1,y=3,v=3。

第8题
已经知a的AScll十进制97,下面输出结果为
char = "a";
a--;
printf("%d,%c\n",a+"2"-"0",a+"3"-"0");

解:第一行的操作是进行变量的初始化的操作,把变量a的值初始化成字符a,也就是'a',第二行的操作是对变量a进行减1的操作,不管是前置--还是后置--,这一行执行完毕之后,变量a的ascii码值都进行了减1的操作,但是第三方在进行输出的操作的时候,先给变量a的ascii码值进行+2的操作,同时以%d的格式进行初始,那么最终的到的结果就是98,以%c的格式输出,+3得到的结果就是98,c

第9题
设定一个数组定义,char arr[]="chian"则这个数组arr所占的内存空间多大____

解:给数组赋值时,可以用一个字符串作为初值,这种方法直观,方便而且符合人们的习惯。数组array的长度不是5,而是6,这点必须要注意,因为字符串常量的最后由系统加上一个’\0’,因此,上面的初始化与下面的等价:char array[]={‘C’,’h’,’i’,’n’,’a’,’\0’};

第10题
在c语言中有int arr[5]={12,45,67,89,56},*p=a;则*p++==13,这个是否正确?

解:*p++相当于*(p++),因为p++先返回p的值然后再自加,所以*p++相当于*p,所以本题中*p++的值为12,而不是13;

第11题
假如你要声明一个指针,它始终指向同一个整数变量,但是它的变量值可以改变,你应该选择那个()
A int *p         B const int*p
C int *const p   D const int *const p
  • const int *p:p可变,p指向的内容不可变

  • int * const p:p不可变,p指向的内容可变

  • const int * const p:p和p指向的内容都不可变

好了我就分享一下这几个题目,这些题目是我们新手时期高频出现错误。我拿出来与大家分享一下,同时你们要是发现我哪里讲的不对欢迎你们指出来。我这里在祝福大家顺遂安康。

  • 16
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

落花也难周

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

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

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

打赏作者

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

抵扣说明:

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

余额充值