首页 > 其他分享 >C基础练习

C基础练习

时间:2024-09-02 20:53:43浏览次数:11  
标签:ch int 练习 基础 ++ num && 表达式

c基础练习题

  • 设有说明:char w; int x; double y; 则表达式w*x-y 值的数据类型为( )。

A. float    B. char     C. int     D. double

答案:D

解析:在C语言中,当不同类型的数据进行算术运算时,较低类型的数据会被提升(或称为转换)到较高类型的数据。此处类型最高的是double

  • 若有以下类型说明:(    )    char w;     int x;     float y, z;  则表达式w*x+z-y的结果为____类型。

A.float         B.char          C.int            D.double

答案:A

解析:在C语言中,当不同类型的数据进行算术运算时,较低类型的数据会被提升(或称为转换)到较高类型的数据。此处会提升为float类型。

  • 假定下列 x 和 y 均为 int 型变量,则不正确的赋值为( );

A. x+=y++                 B. ++x=++y

C. x=++y                   D. x++=y++

解析:在C/C++(以及大多数类似的语言)中,前缀递增运算符++返回递增后的值,但赋值运算符的左侧不能有递增或递减运算符的结果。

  • 以下程序运行后输出的结果是______。

#include <stdio.h>

int main()

{

int k = 011;      

printf("%d\n", k++);

    return 0;

}

输出的结果是:9

分析:011代表的是八进制结果换算成十进制是9。

  • 请正确填写输出结果。

int main()

{

    int a = 15;

    int b = 20;

    int c;

    a && b = ? (1)

    a & b = ? (2)

    a || b ? (3)

    a | b = ? (4)

    a >> 2 = ? (5)

}

(1)____1____(2)___4______(3)___1_____(4)___31_____(5)___3_____

分析:

(1)由于&&操作是逻辑与,非零为真,所有真与真结果为真就是1。

(2)由于&操作是按位与操作,15变为二进制是0000 1111而20是00010100,进行与操作结果是0000 0100。再转换成十进制为4。

(3) a || b 评估为真(因为a或b中至少有一个非零),在条件运算符中这同样被视为1。

(4) a | b 执行按位或操作,结果为31(二进制0001 1111)。

(5) a >> 2 执行位右移操作,结果为3(二进制0000 0011)。

  • 为了表示“a和b都不等于0”应使用( )。(山东丁一)

A. (a!=0) || (b!=0)                   B. allb

C. !((a==0)&&(b==0))              D. a&&b

答案:D

分析:A:a不等于0或上b不等于0,明显不符合题目要求。

B:a或b为真,那么a或b其中一个为真就为真。

C:非上一个a等于0并且b等于0,相当于A

D:a与b为真,满足题目要求

  • 设 a=3,b=4,c=4,则表达式 a+b>c&&b==c&&allb+c&&b==c 的值为(  1  )。(易购软件)

分析:观察优先级,算出最后结果为真

  • 已知 a = 13, a << 2的十进制数值为 (  52  )。(易购软件)

答案:52

分析a=13(0000 1101)<<2=(00110100)=52

  • int x = 2, y = 3, z = 4; 则表达式 x + (y > !z)的值为( 3 )。(易购软件)

分析:优先级最高的是!z,非真为假,y>0为真就是1,所以结果为2+1等于3

  • 能正确表示a和b同时为正或同时为负的逻辑表达式是:( ) (宇视科技,紫光云数,新华三,石峰)

A. (a >= 0 ll b >= 0) && (a < 0 ll b < 0)

B. (a>=0 && b>=0) && ( a < 0 && b < 0)

C. (a + b > 0) && (a + b <= 0)

D. a * b > 0

答案:D

分析:A. (a >= 0 ll b >= 0) && (a < 0 ll b < 0):这里的逻辑运算符应该是逻辑与(&&),而不是逻辑或(||),并且逻辑表达式应该是互斥的,即a和b要么都大于等于0,要么都小于0,而不是同时满足。

B. (a>=0 && b>=0) && ( a < 0 && b < 0):这个表达式同样使用了逻辑与(&&),意味着两个条件都必须同时为真,这是不可能的,因为a和b不能同时大于等于0和小于0。

C. (a + b > 0) && (a + b <= 0):这个表达式同样逻辑上是错误的,因为a和b的和不能同时大于0和小于等于0。

D. a * b > 0:这个表达式是正确的,因为如果a和b都是正数,它们的乘积是正数;如果a和b都是负数,它们的乘积也是正数。如果a和b一个是正数一个是负数,它们的乘积将是负数,这个表达式就不成立。

  • int a=1, b=2, c=3, d=4, m=2, n=2; 执行 (m=a>b) && (n=c>d) 后,n=____0____(杭州快越科技)

答案:0

分析:c>d为假

  • 语句 printf("%d \n", 12 & 012); 的输出结果是:( ) (紫光云数,新华三,石峰)

A. 12       B. 8                   C. 6                   D. 012

答案:B

分析:转换为二进制后进行按位与

  • 有如下代码char cTwoLength = 153;那么 print("\r\n %d", cTwoLength >> 4)打印的值为 __-7______ (紫光云数)

128

64

32

16

8

4

2

1

1

0

0

1

1

0

0

1

右移补1

1

1

1

1

1

0

0

1

反码

1

1

1

1

1

0

0

0

原码

1

0

0

0

0

1

1

1

提示:char是有符号字符型,取值范围[-128 , +127],153属于最大值越界,结果是-103,然后对-103进行右移4位的计算输出。右移规则:

- 对于无符号整数,左侧补0。

- 对于有符号整数,如果原数是正数,则在左侧补0;如果原数是负数,则在左侧补1。

提示到这里,你试试计算一下吧,一定要理解清楚原理啊

  • 以下所列的C语言常量中,错误的是: (华三外协,紫光云数,新华三,石峰)
  1. 0.1f                     B. 1.0e0.1       

C. 'z'                          D. '\110'

  1. sizeof(float)是( )。(山东丁一)

A. 一个双精度型表法式      B. 一个整型表达式

C. 一个函数调用            D. 一个不合法的表达式

  • 一个32位的机器,一个 char 代表的范围是?一个 int 代表的范围是?(广域科技)

char范围是1个字节 int范围是4个字节

  • 下面的代码输出是什么,为什么? (信雅达)

void foo(void)

{

    unsigned int a = 6;

    int b = -20;

    (a+b > 6) ? puts(">6") : puts("<=6");

}

答案:>6 因为无符号数跟有符号数在一个表达式中会发生类型转换,有符号数会变成无符号数。

  • 按位或运算符(|) (深圳元征信息科技)  0x10 | 0x01 = ? 十六进制的结果是多少?

0x11

  • 按位与运算符(&) (深圳元征信息科技)  0x10 & 0x01 = ? 十六进制的结果是多少?

0x00

分析:进行按位与和按位或运算即可

  • 关于条件的书写

判断year是不是闰年  

if(                     )

判断num是偶数

if(                     )

判断num是一个三位数

if(                     )

判断字符ch是大写字母

if(                     )

判断字符ch是偶数数字字符

if(                     )

答案:

  1. 判断year是不是闰年:

    if (!(year % 4 == 0 && year % 100 != 0) || year % 400 == 0)

    这个条件检查年份是否能够被4整除且不能被100整除,或者能够被400整除,满足这些条件之一的年份是闰年。

  2. 判断num是偶数:

    if (num % 2 == 0)

    如果num除以2的余数为0,则num是偶数。

  3. 判断num是一个三位数:

    if (num >= 100 && num <= 999)

    这个条件检查num是否在100到999之间,如果是,那么它是一个三位数。

  4. 判断字符ch是大写字母:

    if (ch >= 'A' && ch <= 'Z')

    这个条件检查ch是否在大写字母的ASCII码范围内。

  5. 判断字符ch是偶数数字字符:

    if ((ch >= '0' && ch <= '9') && ((ch - '0') % 2 == 0))

    这个条件首先检查ch是否是数字字符(0到9),然后检查该数字是否是偶数(0, 2, 4, 6, 8)。这里(ch - '0')将字符转换为其对应的整数值。

标签:ch,int,练习,基础,++,num,&&,表达式
From: https://blog.csdn.net/qq_53841892/article/details/141829532

相关文章

  • Mysql基础练习题 610.判断三角形 (力扣)
    题目:对每三个线段报告它们是否可以形成一个三角形题目连接:https://leetcode.cn/problems/triangle-judgement/description/建表插入数据:CreatetableIfNotExistsTriangle(xint,yint,zint)TruncatetableTriangleinsertintoTriangle(x,y,z)values('13'......
  • 专项练习-数据库SQL-177题(上)
    ※食用指南:文章内容为牛客网《专项练习-数据库SQL》167道选择题(上),重点笔记,用于重复思考错题,加深印象练习传送门:专项练习-数据库SQL-177题目录:1、查询出每门课都大于80分的学生姓名2、选取数据插入到另一张表3、运算符把NULL的值对应的记录排除掉4、删除重复记录,保留......
  • JAVA基础:对象流
    目录前言序列化和反序列化对象流的创建前言之前的流我们都是使用他们读取一些字节或者字符的数据,但是在实际的应用中数据的类型除了基本数据类型之外,还有引用数据类型,对象流就是能读取引用数据类型的流序列化和反序列化对象流的本质是一个字节流,也是过程流对象流的......
  • 【Java 基础】类和对象(构造&this&封装&static&代码块)
    ✨                           风起于青萍之末,浪成于微澜之间    ......
  • 算法练习题09:滑动窗口最大值(队列、双端队列)
    classSolution{publicint[]maxSlidingWindow(int[]nums,intk){if(nums==null||nums.length==0){returnnewint[0];}intn=nums.length;int[]result=newint[n-k+1];Deque<Integer&......
  • 【Java】—— Java面向对象进阶:Java中的账户管理-基础账户与可透支账户的实现与测试
    目录1.基础账户类(Account)2.测试基础账户类3.可透支账户类(CheckAccount)4.测试可透支账户类运行结果1.基础账户类(Account)        写一个名为Account的类模拟账户。该类的属性和方法如下图所示。该类包括的属性:账号id,余额balance,年利率annualInterestRate;......
  • 高级java每日一道面试题-2024年9月02日-基础篇-什么是脏读、不可重复读和幻读?
    如果有遗漏,评论区告诉我进行补充面试官:什么是脏读、不可重复读和幻读?我回答:在数据库事务的并发控制中,脏读(DirtyRead)、不可重复读(Non-repeatableRead)和幻读(PhantomRead)是三种常见的并发问题,它们主要涉及到事务的隔离级别和一致性。了解这些问题有助于我们设计更健......
  • 高级java每日一道面试题-2024年9月02日-基础篇-如何处理嵌套事务?
    如果有遗漏,评论区告诉我进行补充面试官:如何处理嵌套事务?我回答:处理嵌套事务(NestedTransactions)是Java开发中一个常见的问题,特别是在涉及多个数据库操作时。嵌套事务指的是在一个事务中又开始了另一个事务,形成了事务的层次结构。处理嵌套事务需要特别注意事务的边界......
  • 【编程基础】黑色星期五(friday)
    题目描述13号又是星期五是一个不寻常的日子吗?13号在星期五比在其他日少吗?为了回答这个问题,写一个程序来计算在n年里13日落在星期一,星期二......星期日的次数.这个测试从1900年1月1日到1900+n-1年12月31日.n是一个非负数且不大于400.这里有一些你要知道的:1900年1月1......
  • 动手学深度学习8.1. 序列模型-笔记&练习(PyTorch)
    本节课程地址:序列模型_哔哩哔哩_bilibili本节教材地址:8.1.序列模型—动手学深度学习2.0.0documentation(d2l.ai)本节开源代码:...>d2l-zh>pytorch>chapter_multilayer-perceptrons>sequence.ipynb序列模型想象一下有人正在看网飞(Netflix,一个国外的视频网站)上的电影。......