C语言刷题笔记 day001 2021.7.8

C语言基础题 输入2个整数(空格区分),输出最大公约数和最小公倍数(,逗号区分) #include <iostream> #include<math.h> using namespace std; int main() { int m,n,max=1,min=1; cin>>m>>n; if(m%n!=0&&n%m!=0) ... 阅读详情

1.若有以下程序,则程序的输出结果是?

#include<stdio.h>
main(){
    int c;
    c=10^5;
    printf("%d\n",c);
}
  • 5
  • 15
  • 10000
  • 105

解析:

运算符^是位运算符异或,也就是当二进制表示形式

相同为0,不同为1

10的二进制 0000 1010

5的二进制 0000 0101

结果二进制 0000 1111 也就是15


位运算符作用于位,并逐位执行操作。
&
按位与操作,按二进制位进行"与"运算。运算规则:

0&0=0;
0&1=0;
1&0=0;
1&1=1; (A & B) 将得到 12,即为 0000 1100

|
按位或运算符,按二进制位进行"或"运算。运算规则:

0|0=0;
0|1=1;
1|0=1;
1|1=1; (A | B) 将得到 61,即为 0011 1101

^
异或运算符,按二进制位进行"异或"运算。运算规则:

0^0=0;
0^1=1;
1^0=1;
1^1=0; (A ^ B) 将得到 49,即为 0011 0001

~
取反运算符,按二进制位进行"取反"运算。运算规则:

~1=-2;
~0=-1; (~A ) 将得到 -61,即为 1100 0011,一个有符号二进制数的补码形式。

<< 二进制左移运算符。将一个运算对象的各二进制位全部左移若干位(左边的二进制位丢弃,右边补0)。 A << 2 将得到 240,即为 1111 0000

右移相反

2.指针就是地址,因此一个变量的指针就是该变量的地址。请问这句话的说法是正确的吗?

错误

解析:指针与指针变量是两个概念

指针是变量的地址,不同的操作系统,机器结构指针都会不同

32位 地址是32位的,64位地址是64位的

指针变量是存储指针的变量

变量的值是指针,变量的地址是存储指针的变量位置

类似于Java的引用

3.C 语言的当型循环是先执行循环后判断条件。请问这句话的说法是正确的吗?

错误

解析:循环分为当型(while)和直到型(do…while)

当型是先判断后循环

直到型先循环后判断

4.具有很多C语言的功能,又称过滤器的是?

  • Csh
  • tcsh
  • awk
  • sed

解析:

5.若有以下程序,则程序的输出结果是?

#include < stdio.h >
main( )
{
    char a[5][10] ={ "one", "two", "three", "four", "five"};
    int i,j;
    char t; 
    for ( i=0;i<2;i++)
       for ( j=i+1;j<5;j++ )
            if ( a[i][0] >a [j][0] )
            {
                 t =a[i][0];
                 a[i][0] =a[j][0];
                 a[j][0] =t;
            }
  puts(a[1]);
}
  • owo
  • fwo
  • two
  • fix

解析:

二维数组初始化

char a[5][10] ={ “one”, “two”, “three”, “four”, “five”}其实就是

char a[5][10] ={ {one\0}, {two\0}, {three\0}, {four\0}, {five\0}};

所以在双层循环中就是对首字母进行比较,最小的字母排最前。

6.能把函数处理结果的二个数据返回给主调函数,在下面的方法中不正确的是()

  • return这两个数
  • 形参用数组
  • 形参用两个指针
  • 用两个全局变量

解析:

return返回的是返回值,在函数中可以有多个return语句,但是每次调用函数只能有一个返回值。return是提前结束函数的唯一办法,函数中遇到return语句立即返回,后面不在执行。

由于全局变量的作用域是从定义变量开始直到程序结束,而对于编写有多个返回值的C语言函数,我们可以考虑把要返回的多个值定义成全局变量。当函数被调用时,全局变量被更改,我们再把更改后的全局变量值应用于主调函数中。函数被调用后被更改后的全局变量值即为函数的数个返回值。

数组与指针在这个问题上是相似的都是进行函数参数的地址传递,地址传递由于传递过程中从实参传递过来的是地址,所以被调函数中形参值的更改会直接导致实参值的更改。


全局变量 局部变量

  • 局部变量 :定义在函数体内部的变量,作用域仅限于函数体内部。离开函数体就会无效。再调用就是出错。

  • 全局变量 :所有的函数外部定义的变量,它的作用域是整个程序,也就是所有的源文件,包括.c和.h文件。


7.有时为了避免某些未识别的异常抛给更高的上层应用,在某些接口实现中我们通常需要捕获编译运行期所有的异常, catch 下述哪个类的实例才能达到目的:()

  • Error
  • Exception
  • RuntimeException
  • Throwable

在这里插入图片描述

8.假设函数原型和变量说明如下,下面哪一个调用是非法的?

void f3(int(*p)[4]);
int a[4]={1,2,3,4},
int b[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
  • f3(&a);
  • f3(b[1]);
  • f3(&bb[1]);
  • f3(b);

解析:

f3传递的参数是指针数组,而f3(b[1])传递的是值,

9.以下代码的执行结果是()***(有必要再看)

int main(){
   int i=-2147483648;
   return printf("%d,%d,%d,%d",~i,-i,1-i,-1-i);
}
  • 0,2147483648,2147483649,2147483647
  • 0,-2147483648,-2147483647,2147483647
  • 2147483647,2147483648,2147483649,2147483647
  • 2147483647,-2147483648,-2147483647,2147483647

解析:

首先,-2147483648这个数为32位int所能表示的最小负整数,而如果原码为 1000 0000 0000 0000 0000 0000 0000 0000(表示-0) ,其反码应为数值位取反,符号位不变,即1111 1111 1111 1111 1111 1111 1111 1111,
补码为反码+1 即为0 000 0000 0000 0000 0000 0000 0000 0000 (最高位溢出,舍去),
而+0 的原码、反码、补码均为 0 000 0000 0000 0000 0000 0000 0000 0000,
如果用 1000 0000 0000 0000 0000 0000 0000 0000作为 -2147483648的原码,则会导致 -2147483648和0的补码表示一样,因此,计算机中规定用 1000 0000 0000 0000 0000 0000 0000 0000来作为 -2147483648的补码,以确保-2147483648~2147483647都有唯一的补码表示;
总结以上内容:正数的原码、反码、补码形式一致,负数的反码为原码的数值位取反,补码为反码+1也即是原码的数值位取反再+1,计算机中以补码表示数据和运算,而32位最小负整数的补码为 1000 0000 0000 0000 0000 0000 0000 0000。
然后回到本道题目的解答:

首先,求 ~i , i的补码为1000 0000 0000 0000 0000 0000 0000 0000,取反0111 1111 1111 1111 1111 1111 1111 1111,此为补码,符号位为0,表示正数,正数原码补码一致,因而该数即表示231-1,即2147483647 。

然后,求 -i ,要对一个数值执行单目运算符 - 表示的是对该数取反然后再+1,也即是我们常说的求补运算,注意这里取反+1与原码求补码的区别!也就是求补运算与求补码是不一样的!例子(4位有符号整数):x=-4 1100(补码) -x=~x+1 也即是 0011+0001=0100(4),而1100再求补码应是先数值位取反,即1011,然后+1,变成1100!注意这两者(求补与求补码)之间的区别。
题目中 i的补码为 1000 0000 0000 0000 0000 0000 0000 0000,取反+1,仍为 1000 0000 0000 0000 0000 0000 0000 0000,即 -2147483648

求 1-i 我们已经求出-i的补码为1000 0000 0000 0000 0000 0000 0000 0000 加上1的补码即为 1000 0000 0000 0000 0000 0000 0000 0001
该补码表示的原码为1 111 1111 1111 1111 1111 1111 1111 1111,即为- 2147483647

最后求-1-i -1的补码为1 111 1111 1111 1111 1111 1111 1111 1111,加上-i补码 1000 0000 0000 0000 0000 0000 0000 0000,
得 0111 1111 1111 1111 1111 1111 1111 1111,即 2147483647

另外补充一点,计算机中有符号数和无符号数的机器码(补码)是一样的,同一个二进制码按照有无符号输出结果不一样,例如本题中四个答案如果按照无符号整数输出,那么答案就是C

10.下面代码在64位Linux系统编译执行,输出结果是____。

#include <stdint.h> 
#include <stdio.h> 
void print_size(int32_t array[10]){ 
 printf("%d\n", sizeof(array)); 
} 
int main () { 
 int32_t myArray[10]; 
 printf("%d ", sizeof(myArray)); 
 print_size(myArray); 
} 

解析:

40 8

sizeof()是一个运算符号,用来获取数据在内存中所占用的存储空间

不同数据类型在内存中分配大小不同,不同的编译器也会给相同的数据类型分配不同的内存空间。

int不管32还是64位在内存中占 4字节

10*4=40

而在函数中以数组为参数,传递的是数组的第一个元素的地址

地址的大小与操作系统有关,64位操作系统地址是64位的,也就是8个字节。

C语言程序设计题库 第七章:数组 本章内容:数组,格式受限,已绑定PDF资源。 阅读详情

相关推荐

Gartner DSG数据安全治理 架构及解读

目录背景:架构图: 解释:英文解释:(自上而下)平衡业务与风险、威胁、合规之间的关系(5个维度之间的平衡)优先处理数据集制定安全策略实施安全工具策略配置同步从上到下,从需求调研开始实施数据安全治理。千万不要跨过数据摸底、治理优先级分析、制定治理整体策略,而直接从技术工具开始对数据安全进行治理。 先明确选择需要治理的对象,优先选择重要数据进行数据安全治理工作。可以通过数据梳理、分类分级等手段,完成数据资产盘点和筛选,在纷杂的数据中理清头绪。

锦慈的技术博客 7217

报时助手(C语言)

给定当前的时间,请用英文的读法将它读出来。 时间用时h和分m表示,在英文的读法中,读一个时间的方法是: 如果m为0,则将时读出来,然后加上“o’clock”,如3:00读作“three o’clock”。 如果m不为0,则将时读出来,然后将分读出来,如5:30读作“five thirty”。 时和分的读法使用的是英文数字的读法,其中0~20读作: 0:zero, 1: one, 2:tw...

matchless_QYW的博客 1211

FEniCS学习笔记01:centos7下通过conda安装FEniCSx0.7

2023年版本的Fenicsx0.7,官网推荐使用conda命令安装集成好的Python包,因此我们的安装思路是先安装Anaconda,再按照官网步骤安装Fenics。

huahua_xiao的博客 5056

c++面试题(五)

题目一: (1)typedef已存在的类型使用一个新的名字。(2)typedef改变原类型名称后,可以使用原类型名。(3)typedef说明新类型名时。格式为: typedef  原类型  新类型题目二:有以下程序:#include &lt;stdio.h&gt;main(){    char a[5][10] = {"one", "two", "three", "four", "five"}

咖啡的博客 560

【论文+CAD图纸】光储充一体化微电网设计

近些年来,我国的经济发展迅速,对能源的需求不断增长,也加重了对环境的破坏,违背了我国的可持续发展战略。所以迫切需要寻找新型能源。由于太阳能在使用时不会产生污染,所以太阳能逐渐受到人们的重视。我国的太阳能资源丰富,具有的开发利用潜力。特别是近些年“光储充”一体化充电站为高科技绿色充电模式,“以光养桩”使光伏、储能、智能充电协同,智能微电网与公共电网互动,本设计对探索清洁可再生能源在民用场合的应用,有着重大的理论和工程价值。本文综述国内外相关光伏发电的成果和发展现状;

weixin_761237174的博客 925

从牛顿冷却定律到热传导方程:一维热传导方程的物理直觉与数学推导

本文从牛顿冷却定律出发,结合傅里叶热传导定律和能量守恒原理,系统推导了一维热传导方程的数学形式。通过微元分析和物理直觉,揭示了温度随时间变化与空间二阶导数之间的关系,并阐释了热扩散率α的物理意义。文章还探讨了方程的边界条件、数值解法及其在材料科学和工程中的应用,为理解热量传递提供了清晰的物理图像和数学框架。

palm99的专栏 838

用程序生成一个长度至少为10^5的字符串

刷小白书时的实验题,用rand函数来实现随机,但并不是0-255的全部ASCII码。顺便用了clock()函数来计时。 #include #include #include #include #define MAXN 100000+10 char s[MAXN]; int main(void) { srand((unsigned)time(NULL)); int t,tot=0,

狼迹天涯 966

浮栅晶体管原理深度解析:热电子注入与FN隧穿如何实现1/0存储

本文深入解析了浮栅晶体管的工作原理,重点探讨了热电子注入与FN隧穿机制如何实现1/0存储。作为现代闪存芯片的核心技术,浮栅晶体管通过独特的结构设计实现非易失性存储,文章详细分析了其编程与擦除的物理过程,并对比了两种机制的优缺点,为闪存性能优化提供了理论基础。

weixin_30363285的博客 373

c语言基础知识回顾2

今天回顾了c语言知识里的循环程序设计和数组,对于循环和数组的学习我觉得需要注意以下方面 1.对于循环我们需要注意while循环语句和do while循环语句的区别    while循环语句用于实现“当型”循环结构,其特点是先判断表达式,后执行语句。       在进行程序设计时一定要注意如果条件表达式开始就为0,则循环体一次都不执行,反之如果条件表达式恒不为0,则循环体会一直循环下去,这样会

Mormont的博客 565

BSD盲区检测系统性能要求及试验方法

盲区监测系统BSD通过安装在车辆后方的两颗毫米波雷达实时监测驾驶员视野盲区,当发现视野盲区内出现其它道路使用者时,通过左右后视镜上的警示灯向驾驶员发出报警。

未知艺术家的博客 2359

手把手教你用RMII接口配置以太网PHY芯片(附YT8512实战代码)

本文详细介绍了如何使用RMII接口配置以太网PHY芯片,以国产YT8512为例,提供从硬件设计到软件驱动的全流程实战指南。内容包括RMII接口技术解析、YT8512硬件设计要点、驱动开发实战代码及常见问题排查,帮助开发者快速实现以太网通信功能。

mac99的博客 996

C语言经典算法100道实战题

C语言经典算法100道实战题

C/C++编程指南 2万+

三步实现Java分布式追踪:像“开灯”一样简单

摘要: 本文通过三步实现Java分布式追踪: 引入依赖:配置Spring Cloud Sleuth+Zipkin,自动埋点无需代码侵入; 启动服务:REST接口自动生成Trace/Span ID,日志可验证; 可视化分析:通过Zipkin UI查看调用链耗时和拓扑关系。 亮点:AOP自动埋点、零业务代码修改、支持多服务链路追踪,助力快速定位性能瓶颈。适用于微服务诊断,生产环境可调整采样率平衡性能。(150字)

墨夶的博客 2711

进击的小白Day026——LeetCode刷题笔记001:两数之和(static、return的用法)

题目来自从LeetCode。 题目描述: 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。 示例: 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以...

刚学编程的小小白 435

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

day001:一起认识 Go语言

1.1、历史背景介绍:了解过Google公司的文化的你,想必也知道20%工作时间里所创造出的互联网产品,例如:谷歌新闻(Google News)、谷歌地图(Google Map)、语音服务(Google Now)等等。然而,我们要学习的Go语言,其实也是Google工程师们,利用他们20%的工作时间所开发的一门新型语言,并且是2007年诞生的。经过10多年的发展,在云计算或区块链方面,有着显著的优势,并在2016年被评为年度最佳语言,比如你所知道的Docker和Kubernetes都是由Go语言开发。

BlackSpirit_0618的博客 1178

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

C语言入门 Day_5 四则运算

图为世界上第一台通用计算机ENIAC,于1946年2月14日在美国宾夕法尼亚大学诞生。发明人是美国人莫克利(JohnW.Mauchly)和艾克特(J.PresperEckert)。

fantastic_little的博客 3068

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Day001——概要

文房四宝: 笔 笔记本 U盘 基础书(Linux,C,C++) 目录: 不用中文 不要太长 不要有空格 第一阶段: 1.Linux OS(4天) 2.C(10天) 3.Linux+C(8天) 4.Project day01 1.安装vmware6.5虚拟机 2.安装Linux操作系统(.iso镜像文件) password:wepull 3.了解Linux系统 red

加勒比の海贼王 482

001、【C语言编程题目】猴子吃桃问题

C语言编程题目:猴子吃桃,涉及知识点:变量、控制语句、递归函数用法。

如是牛 1564

《C语言假期作业学习笔记》—Day12

请乘理想之马 挥鞭从此起程 路上春色正好 天上太阳正晴 ——希望疫情早日结束,所有美好如约而至! Day12 一、选择题 1、请阅读以下程序,其运行结果是( ) A: YES B: NO C: YESNO D: 语句错误 2、假设编译器规定 int 和 short 类型长度分别为32位和16位,若有下列C语言语句,则...

m0_57859086的博客 823

C 语言学习笔记

B站up Micro_Frank C语言大师系列课程笔记

g_c_m_g的博客 1224

C语言基础练习——Day12

接着是输出,因为当前二维数组每一行存储的是一个单词,只要是有字母的位置就不会停止读取,那么对初始化全部为0的数组来说,只需要反向输出即可,但是输出时需要注意是使用%c还是%s,如果用。的特点,在读取字符串时会跳过空白字符,而本题中题目说明了构成单词的字符只有大小写字母,所以在输入时需要限制输入的字符集合在a-z以及A-Z,即。,而因为scanf的返回值是实际成功读取到的字符的个数,故当其返回值非0时,说明此时输入了单词,输入完一个单词后换到二维数组的下一行即可。的值按1、2、0循环,可推算出。

小何代码咖啡馆 1162

C语言—每日选择题—Day48

1. 已知宏定义: #define M y*y+3*y , 则表达式 s=3*M+4*M+y*M 预处理阶段后的结果是。

2302_76941579的博客 696

Docker学习笔记---day001

Docker的核心三要素概念解读

weixin_46625488的博客 1323

DAY001

DAY001 视觉组python入门 逻辑运算符 and 与 全真则真 一假则假 or 或 全假则假 一真则真 not 非 否定 字符串 转义字符 【\】 E:print(‘I’m “OK”!’) #I’m “OK”! 在字符串输出时使用于输出字符 如果字符串里面有很多字符都需要转义,就需要加很多\,为了简化,Python还允许用r''表示''内部的字符串默认不转义 E: print('\\\t\\') \ \ print(r'\\\t\\') \\\t\\ 按位运算 按位与 &

D1247005311的博客 213

标准C语言课堂笔记day05

进制转换、原码反码补码、位运算、函数

aCHANQAQ的博客 371

【C语言练习打卡---Day001】

C语言每日打卡

qq_47249535的博客 422
上一篇: 生物信息学_分子数据库(四)其他数据库
下一篇: 生物信息学_测序技术(一)DNA测序
金石就好
博客等级 码龄7年 11粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值