C技能树-学习笔记(3)运算符与表达式

1、赋值运算符

实现三个变量的赋值操作,并输出三个变量的值。请选出错误的赋值操作。

#include <stdio.h>
 
int main(int argc, char** argv)
{
    (_____1_____)
 
    printf("a = %d\n", a);
    printf("b = %d\n", b);
    printf("c = %d\n", c);
 
    return 0;
}

在这里插入图片描述
b和c两个变量未定义就使用了,会直接报错。

2、打印100以内(包含100)能被10整除的正整数

#include <stdio.h>

#define UPPER 100

int main(int argc, char** argv)
{
    int i = 1;
    (_____1_____)

    return 0;
}

在这里插入图片描述
注:while语句可以没有{},此时于while()后第一个分号 “;” 前面的语句就是循环体。
可以同时有{}和分号“;” , 也就是说,当有花括号 {} 结尾可不需要分号, 当然你加了不也会出错,但不要while();

在C语言中,用;和{}的作用都是一个:用于语句分隔,告诉编译器当语句遇到;或者{}中的 “}”时,说明执行该语句结束。所以说有点二选一的感觉,但让如果两个都同时用也不会出错(注不要while(); 不要for(); ,这些C语言编译器是允许的,但是实际上这样做没意义,这样做相当于循环体为空了,什么也没干)

3、判断正整数的位数

#include <stdio.h>
 
int main(int argc, char** argv)
{
    int num, count = 0;
 
    printf("请输入一个正整数:");
    scanf("%d", &num);
 
    (_____1_____)
 
    printf("位数为:%d", count);
    return 0;
}

在这里插入图片描述在这里插入图片描述
要取商(去余取整),比如256的位数,先让256/10得25,count从0变成1,此时25>0;再让25/10得2,count从1变成2,此时2>0;再让2/10得0,count从2变成3,此时0>0不成立,输出count为3,结束循环。

4、区间是否重叠

输入两个闭区间,并判断两个区间是否重叠。

#include <stdio.h>

#define MAX(a,b) ((a > b) ? a : b)
#define MIN(a,b) ((a < b) ? a : b)

int main(int argc, char** argv)
{
    int start_1, end_1;
    int start_2, end_2;
    printf("请输入第1个闭区间(逗号分隔):");
    scanf("%d,%d", &start_1, &end_1);
    printf("请输入第2个闭区间(逗号分隔):");
    scanf("%d,%d", &start_2, &end_2);

    if (_____(1)_____)
        printf("两个区间不重叠!");
    else
        printf("两个区间重叠!");

    return 0;
}

在这里插入图片描述

5、判断闰年

输入任意年份的正整数n,判断该年份是否为闰年。

#include <stdio.h>
 
int main(int argc, char** argv)
{
    int year;
    printf("请输人年份:");
    scanf("%d", &year);
    is_leap_year(year);
 
    return 0;
}

在这里插入图片描述
在这里插入图片描述%4=0与%100!=0必须同时进行所以用&&

6、邮费价格表

打印邮费价格表,输出20kg以内物品的邮费价格表,邮费计算规则如下所示:

  • 1kg以内6元。
  • 超过1kg,每增加1kg加收2元。
    请选出正确的for循环头部,
#include <stdio.h>
#define FIRST_COST 6
#define NEXT_COST 2
 
int main(int argc, char** argv)
{
    int weight, cost;
 
    printf("重量\t价格\n");
    for (_____(1)_____)
        printf("%d\t¥%d\n", weight, cost);
 
    return 0;
}

循环中的weight变量将从1开始,递增到20;邮费cost的计算会基于weight的值。在每次循环中,都打印出当前的weight和对应的cost。for循环的头部应该初始化weight为1,然后在每次迭代中递增weight,直到20。邮费cost可以在循环体内计算,但为了更清晰地表示,也可以在for循环头部进行初始化和更新。

for (weight = 1, cost = FIRST_COST; weight <= 20; weight++, cost += NEXT_COST)
重量    价格
1kg     ¥6
2kg     ¥8
3kg     ¥10
4kg     ¥12
5kg     ¥14
6kg     ¥16
7kg     ¥18
8kg     ¥20
9kg     ¥22
10kg    ¥24
11kg    ¥26
12kg    ¥28
13kg    ¥30
14kg    ¥32
15kg    ¥34
16kg    ¥36
17kg    ¥38
18kg    ¥40
19kg    ¥42
20kg    ¥44

7、求三数最大值

#include <stdio.h>
 
int main(int argc, char** argv)
{
    int a, b, c, max;
    printf("请输入3个整数:");
    scanf("%d,%d,%d", &a, &b, &c);
 
    (_____1_____)
    printf("3个整数中的最大的是:%d", max);
 
    return 0;
}

三目运算符
在这里插入图片描述

8、输出数组

#include <stdio.h>
 
int main(int argc, char** argv)
{
    int arr[] = {1,2,3,4,5};
    (_____1_____)
    size_t i;
    
    for (i = 0; i < len; ++i)
        printf("%d ", arr[i]);
 
    return 0;
}

sizeof用于变量:

sizeof(变量名);
sizeof 变量名;

用于数据类型:

sizeof(数据类型);

在这里插入图片描述

9、运算符优先级与求值顺序

选项中是关于逗号运算符与自增运算符组成的混合表达式,请运用运算符优先级及求值顺序相关知识,选择合适的选项填在(1)处,使得程序的输出结果为 2,3,1。

#include <stdio.h>

int main(int argc, char** argv)
{
    int x, y, z;
    x = y = 1;
    (_____1_____)
    printf("%d,%d,%d\n", x, y, z);
}

在这里插入图片描述
先把x值1赋给z,z=1,然后x++,x自增1,x变成2,++y,y变成2,y++,y变成3。

  • 18
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

AI1.0

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

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

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

打赏作者

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

抵扣说明:

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

余额充值