C语言学习03:运算符和表达式

张建 lol

测试题

  • 判断正整数的位数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>

// 声明
void IntCount(int num);
// 入口函数
int main(int argc, const char * argv[]) {
// 判断正整数的位数
int num;
printf("请输入一个正整数:");
scanf("%d",&num);
IntCount(12345);

return 0;
}
// 判断正整数的位数
void IntCount(int num) {
int count = 0; // 位数
while (num > 0) {
num = num/10;
count += 1;
}
printf("%d\n", count);
}

  • 打印100以内(包含100)能被10整除的正整数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>
int main(int argc, const char * argv[]) {
// 打印100以内被10整除的正整数
int i = 1;
while (i < 100) {
if (i % 10 == 0) {
printf("%d\n",i);
}
i ++;
}
return 0;
}

==========
10
20
30
40
50
60
70
80
90
  • 输入两个闭区间,并判断两个区间是否重叠?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#define MAX(a,b) ((a>b) ? a:b)
#define MIN(a,b) ((a<b) ? a:b)

int main(int argc, const char * argv[]) {

int start_1,end_1;
int start_2,end_2;
printf("请输入第一个闭区间(逗号分割):");
scanf("%d,%d",&start_1,&end_1);
printf("请输入第二个闭区间(逗号分割):");
scanf("%d,%d",&start_2,&end_2);

if (MIN(end_1, end_2) < MAX(start_1, start_2)) {
printf("不重叠");
}else {
printf("重叠");
}

return 0;
}
  • 输入任意年份的正整数n,判断该年份是否为闰年?

闰年的定义:能被400整除的年份为闰年;能被4整除同时不能被100整除的年份是闰年

闰年一年有366天,2月份有29天
平年一年有365天,2月份有28天

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// 判断闰年
void is_leap_year(int year){
if (year%400==0 || (year%4==0 && year%100!=0)) {
printf("%d年是闰年\n",year);
}else{
printf("%d年不是闰年\n",year);
}
}
int main(int argc, const char * argv[]) {
// 判断闰年
int year;
printf("请输入年份:");
scanf("%d",&year);
is_leap_year(year);

return 0;
}
  • 打印邮费价格表,输出20kg以内物品的邮费价格表,邮费计算规则如下:
    • 1kg以内6元
    • 超过1kg,每增加1kg加收2元

注:逗号运算符与表达式小知识
1.逗号运算符的优先级是所有运算符中最低的
2.整个逗号表达式的值为其中最后一个子表达式的值
3.逗号运算符常用在for循环头部初始化或递增多个变量

1
2
3
4
5
6
7
8
9
10
11
12
#define FIRST_COST 6
#define NEXT_COST 2

int main(int argc, const char * argv[]) {
int weight,cost;
printf("重量\t价格\t\n");
for (weight=1,cost=FIRST_COST;weight<=10;++weight,cost=FIRST_COST+(weight-1)*NEXT_COST) {
printf("%d\t¥%d\n",weight,cost);
}

return 0;
}
  • 输入三个整数,求出最大值并输出?
1
2
3
4
5
6
7
8
9
int main(int argc, const char * argv[]) {
int a,b,c,max;
printf("请输入3个整数:");
scanf("%d,%d,%d",&a,&b,&c);
max = c>((a>b)?a:b) ? c:((a>b)?a:b);
printf("3个数中的最大值是:%d\n",max);

return 0;
}
  • 定义并初始化一个整型数组(未显示指定数组长度),循环输出数组中每个元素。在完成以上任务的过程中,为了得到数组的长度,需要借助sizeof运算符?

小知识:
1.sizeof在使用的时候看上去像是一个函数(因为后面有一对小括号),但他是一个运算符。它的使用方法有以下三种:
a)sizeof(变量名)
b)sizeof(数据类型名)
c)sizeof 变量名
2. sizeof的返回值类型是size_t

1
2
3
4
5
6
7
8
9
10
int main(int argc, const char * argv[]) {
int arr[]={1,2,3,4,5};
size_t len = sizeof(arr)/sizeof(arr[0]);
size_t i;
for (i=0; i<len; ++i) {
printf("%d\n",arr[i]);
}

return 0;
}
  • 根据运算符优先级及求职顺序,使程序输出结果为2,3,1
1
2
3
4
5
6
7
8
9
10
int main(int argc, const char * argv[]) {
int x,y,z;
printf("请输入2个整数:");
scanf("%d,%d",&x,&y);
z=x++,++y,y++;
printf("%d,%d,%d\n",x,y,z);

return 0;
}

  • Post title:C语言学习03:运算符和表达式
  • Post author:张建
  • Create time:2023-02-13 02:10:04
  • Post link:https://redefine.ohevan.com/2023/02/13/C学习/C语言学习03:运算符和表达式/
  • Copyright Notice:All articles in this blog are licensed under BY-NC-SA unless stating additionally.
On this page
C语言学习03:运算符和表达式