算法竞赛入门经典第一节问题1-5

1.

int型整数的最大值和最小值

//
// Created by abner on 2022/7/22.
//
#include<stdio.h>
int main(){
    int n=0;
    int i=0;
    while(n<=i){
        n=i;
        i++;
    }
    printf("int最大值为:%d\n",n);
    printf("int最小值为:%d",n+1);
    return 0;
}
//参考自Alzh转载

如此看来是,21亿左右,正负。

2.

double可以精确到多少位小数

小数点后六位,因为是约数,之后的可能就很不准了。

 3.

double型数最大正数值和最小正数值分别是多少

 4.

或、且、非逻辑运算符优先级,&&,||,!

优先级从大到小排序:!>&&>||

 

 5.

if(a) if(b) x++;else y++的确切含义是什么?这个else应和哪个if配套?有没有办法明确表达出配套方法?

 下方是我比较认可的解答,为此,我写了一个简答的程序来验证。

像这位老哥说的就不对,最近原则匹配,想的有些理所当然了 

验证代码:

//
// Created by abner on 2022/7/22.
//
#include<bits/stdc++.h>
int main(){
    int x=0,y=0;
    int n;
    while (std::cin>>n) {
        if (n > 50) if (n > 100) x++; else y++;
        std::cout<<x<<" "<<y;
    }
    return 0;
}

很简单,但是足够验证了。

 大家看这里,

输入60,只满足了第一个if,未满足第二个,y++,证明执行了else部分;

输入120,满足了两个if条件,x++,执行了前半句;

输入40,都不满足,都不++。

则证明else跟的是第一个if语句条件,

而想要执行x++,需要两个if条件都满足才可以。

证毕。

if使用规则(字数不够,导致的水文提示!!!)

  1. 内部是一个判断真假的条件语句,如果该语句为真,就执行其下的一条语句。若有多条语句则应用花括号括起来算作一条语句。一般if和else连用。就是说,满足if条件就执行这个,否则就执行else下的语句。

  2. if是c语言的关键字,所有c语言的基本语句都是有编译器(比如VC,GCC等)将C语言翻译成机器语言(汇编语言)。比如下面简单的if语句,我们看看编译器将其转换为什么样子。对应的编译器(我用的VC)编译后的结果(汇编语言)

  3. 效果是一样的,第二个if语句在判断时会立刻调用函数并且将函数返回值返回到函数调用处,第一个只不过是你把返回值赋值给了一个变量。

  4. 分配长度为num_bytes字节的内存当内存不再使用时,应使用free()函数将内存块释放。函数返回的指针一定要适当对齐,使其可以用于任何数据对象。关于该函数的原型,在以前malloc返回的是char型指针,新的ANSIC标准规定,该函数返回为void型指针,因此必要时要进行类型转换

  5. if语句转换为了一个比较(cmp)和一个条件跳转(jne)先比较1和i,如果不相等,就跳转到if括号的后一个语句(这儿是0x411534)。如果有兴趣,你可以找VC自己研究一下各个基本语句是如何编译的。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值