c语言每日一练(13)

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

前言
每日一练系列每一期都包含5道选择题2道编程题博主会尽可能详细地进行讲解令初学者也能听的清晰。每日一练系列会持续更新上学期间将看学业情况更新。

 五道选择题

1、程序运行的结果为

#include<stdio.h>
int main()
{
int x=1.9;
x++;
printf("%d",x);
}

A、1    B、2    C、2.9    D、3

解析简单题考察的是你对于整型变量的理解整型变量如果初始值被赋予小数那么在vs编译器上就会直接将小数部分给舍去也就是说代码1中给x赋予1.9实际上只是给x赋予1接着走到x++使x=2所以最后打印出来的结果就是2选B 

2、设有整型变量abc它们的初值是1运行表达式++a| |++b&&++c后abc的值分别是 

A、211       B、222     C、221      D、212

解析易错题考察||或运算和&&且运算的运用||运算只要一边为真即为真所以当我们判定完一边为真的时候另一边就不用再判定计算机会直接跳过。&&运算两边都为真才为真只要有一边为假就为假所以一旦发现一边为假则不再判定另一边。

跟据规则走首先遇到的是++a先++后使用a=22为真是||运算所以后面的部分不进行连带着&&也没有进行所以最后a=2b=1c=1选A

3、以下程序运行的结果为

#include<stdio.h>
int main()
{
	int x = 5;
	int i = 0, j = 0, k = 0;
	x = (i = 4, j = 16, k = 32);
	printf("%d %d %d %d", x,i,j,k);
}

A、541632     B、5000    C、3241632    D、32000

解析考察你对于逗号表达式的理解逗号表达式从左往右进行整个表达式的结果为最后一个表达式。

从左往右走首先给i赋值为4接着给j赋值为16最后来到最后一个表达式k=32而根据逗号表达式的运行可知整个表达式的结果也是k=32所以最后是x=k=32同时对x和k赋值所以x和k最后均为32综上所述i=4j=16x=k=32所以最后打印出来的结果为3241632选C

4、有如下程序程序运行后的输出结果是

#include <stdio.h>
int main()
{
int x = 072;
printf("%d\n", x+1);
}

A、72      B、73       C、115       D、59

 解析基础题考察你对细节的掌控八进制数的前缀为0十六进制的前缀为0x十进制数没有前缀。所以该程序赋值给x的值是一个八进制的72转换为十进制就是2*1+7*8=58最后打印出x+1即59故选D

5、若想定义 int 型变量 a,b,c,d 并都赋值为 1以下写法中错误的

A、int a=b=c=d=1;
B、int a=1, b=1, c=1, d=1;
C、int a,b,c,d; a=b=c=d=1;
D、int a,b,c,d=1; a=b=c=d;

解析一个一个走先看A选项A选项的操作并没有定义bcd这三个整型变量故A错误B选项挨个定义没有问题B正确。C选项全部定义完了再赋值C正确D选项先定义abcd四个变量的同时给d赋值为1最后令a=b=c=d令abc与d相等所以最后abcd均为1D正确综上所述选A

编程题1 

剑指 Offer 10- I. 斐波那契数列 - 力扣LeetCode

提示记得取模一开始博主也没有取模想半天哈哈 

int fib(int n) {
    if (n == 0)
    {
        return 0;
    }
    if (n <= 2)
    {
        return 1;
    }
    //以上特殊情况单独处理下
    int f1 = 1; int f2 = 1; int f3 = 0; int i = 0;
    for (i = 3; i <= n; i++)
        //我们一开始计算的就是第三个斐波那契数所以令i=3
    {
        f3 = (f1 + f2) % 1000000007;
        //先储存下一个斐波那契数
        f1 = f2;
        f2 = f3;
        //进行数据更新
    }
    return f3;
    //返回目标
}

编程题2 

134. 加油站 - 力扣LeetCode

提示此题较难建议学习贪心算法之后再过来进行这里博主并没有使用贪心算法使用最朴实无华的方法通过的目的是让大家能够感受一下代码的严谨。拷贝博主的代码有时也是通不过的因为博主没有使用技巧答题当你网络不好时可能会因为超出时间限制而失败多试几次就可以。 

 

int canCompleteCircuit(int* gas, int gasSize, int* cost, int costSize) {
    int oil = 0;
    int i = 0;
    if(gasSize==1)
    //只有一个单独处理
    {
      if(gas[0]>=cost[0])
      return 0;
    }
    for (i = 0; i < gasSize; i++)
    {
        int tmp = i;
        //不要在函数内对循环变量操作因此使用tmp来间接操作
        int flag = 1;
        //判定是否可以行进的变量
        oil = gas[tmp];
        if (oil > cost[tmp])
        {
            oil -= cost[tmp];
            for (++tmp; tmp < gasSize; tmp++)
            {
                oil += gas[tmp];
                oil -= cost[tmp];
                if (oil < 0)
                {
                    flag = 0;
                    break;
                }
            }
            if (flag == 0)
            {
                continue;
            }
            for (tmp = 0; tmp < gasSize; tmp++)
            {
                oil += gas[tmp];
                oil -= cost[tmp];
                if (tmp == i)
                {
                    break;
                }
                if (oil < 0)
                {
                    flag = 0;
                    break;
                }
            }
            if (flag == 1)
            {
                return tmp;
            }
            else
            {
                continue;
            }
        }
        else
        {
            continue;
        }
    }
    return -1;
}

好了今天的练习到这里就结束了感谢各位友友的来访祝各位友友前程似锦O(∩_∩)O

 

 

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6