运算符、表达式和语句
- 关键字 --->
while
、typedef
- 运算符 --->
=
、-
、*
、/
、%
、++
、--
- 复合语句、自动类型转换、强制类型转换
- 编写带有参数的函数
while循环
示例代码:
# include<stdio.h>
# define ADJUST 7.31
int main(void)
{
const double SCALE = 0.333;
double shoe, foot;
printf("鞋宽, 脚长\n");
shoe = 3.0;
while (shoe < 18.5)
{
foot = SCALE * shoe + ADJUST;
printf("%10.1f %15.2f inches\n", shoe, foot);
shoe = shoe + 1.0;
}
printf("请参考上述内容选鞋.\n");
getchar();
return 0;
}
while循环结构:
关键字( 循环条件 ) {循环代码块}
基本运算符
+
、-
、*
、/
、%
---> 需要注意的是无法整除的数系统会自动截取整数部分舍弃小数部分
术语: 数据对象、左值(可修改左值)、右值、运算符
示例代码:
# include<stdio.h>
int main(void)
{
int jane, tarzan, cheeta;
cheeta = tarzan = jane = 68; // 三重赋值 ---> 可修改左值 = 赋值数
printf("cheeta tarrzan jane\n");
printf("%4d %8d %8d\n", cheeta, tarzan, jane);
getchar();
return 0;
}
指数增长:
示例代码:
# include<stdio.h>
# define SQUARES 64 // 棋盘中的方格数目
int main(void)
{
const double CROP = 2E16; // 当时世界小麦年产谷粒数
double current, total;
int count = 1;
printf("square grains total ");
printf("fraction of \n");
printf("世界总产量\n");
total = current = 1.0;
printf("%4d %13.2e %12.2e %12.2e\n", count, current, total, total/CROP);
while (count < SQUARES)
{
count += 1;
current *= 2;
total = total + current;
printf("%4d %13.2e %12.2e %12.2e\n", count, current, total, total/CROP);
}
printf("这就全部的谷子数!\n");
getchar();
return 0;
}
sizeof
运算符和size_t
类型:
示例代码:
# include<stdio.h>
int main(void)
{
int n = 0;
size_t intsize;
intsize = sizeof(int);
printf("n = %d, n 占 %zd 字节; 所有的整数占 %zd 字节.\n", n, sizeof n, intsize);
getchar();
return 0;
}
特点:
sizeof
返回一个size_t
类型的值,这是一个无符号整数类型
typedef
的作用:
- 给某种类型定义别名
示例代码:
# include<stdio.h>
int main(void)
{
typedef double real;
real n;
printf("你希望看到的单精度浮点数:\n");
scanf("%f", &n);
getchar();
printf("你输入的数是: %.2f", n);
getchar();
return 0;
}
练习代码:
# include<stdio.h>
# define SEC_PER_MIN 60
int main(void)
{
int sec, min, left;
sec = -1;
printf("输入你想要转变成时间的秒数:\n");
do
{
scanf("%d", &sec);
if (sec < 0)
{
printf("输入有误,请重新输入!\n");
}else if (sec == 0)
{
break;
}else {
min = sec / SEC_PER_MIN;
left = sec % SEC_PER_MIN;
printf("输入的秒数转化成分钟数以后是: %d 分钟, %d 秒!\n", min, left);
printf("输入下一个想转化的秒数: \n");
}
sec = -1;
} while (sec < 0);
printf("结束!");
return 0;
}
递增/递减运算符:
示例代码:
# include<stdio.h>
int main(void)
{
int a = 1, b = 1;
int a_post, pre_b;
a_post = a++; // 后缀递增 ---> 使用a之后给递增a
pre_b = ++b; // 前缀递增 ---> 使用b之前递增b
/*
需要注意的是这两种赋值结果完全不一样
*/
printf("a a_post b pre_b:\n");
printf("%d, %3d, %8d, %7d", a, a_post, b, pre_b);
getchar();
return 0;
}
递增变式:
# include<stdio.h>
int main(void)
{
int a = 1, b = 1;
int a_post, pre_b;
a_post = 2*++a; // 首先a先递增1,其次2*a赋值给a_post
pre_b = 2*b++; // 首先2*b,其次b递增1
/*
需要注意递增这个操作不能简单地视为a + 1;因为在与乘算的时候前缀递增有限计算递增
*/
printf("a a_post b pre_b:\n");
printf("%d, %3d, %8d, %7d", a, a_post, b, pre_b);
getchar();
return 0;
}
注意前缀递增与乘法运算符一起计算的时候的运算规律
前缀递增与其他符号的结合:
# include<stdio.h>
# define MAX 100
int main(void)
{
int count = MAX - 98;
int i = 0;
while (--count > 0) // 先递减为1,在对测试条件求值
{
printf("%d", count);
i += 1;
printf("循环次数: %d \n", i);
}
getchar();
return 0;
}
递增变式2:
# include<stdio.h>
int main(void)
{
int num = 0;
while (num < 21)
{
printf("%10d %10d \n", num, num*num++);
/**
第一次打印的结果是 1 0,因为先递增num在进行赋值,所以第一个num是1
*/
}s
getchar();
return 0;
}
语句:
示例代码:
# include<stdio.h>
int main(void)
{
int count, sum;
sum = 0;
count = 0;
while (count++ < 20)
{
sum = sum + count;
printf("sum = %d\n", sum);
}
getchar();
return 0;
}
类型转换
示例代码:
# include<stdio.h>
int main(void)
{
char ch; // 8位
int i; // 32位
float fl;
fl = i = ch = 'C'; // 'C'被作为1字节的ASCII值存储在ch中,i接受'C'转换的整数,4字节存储67,fl则是接受67转换的浮点数67.00
printf("ch = %c, i = %d, fl = %2.2f\n", ch, i, fl);
ch += 1; // 'C'被转换成了67,然后+1,变成68(4字节整数,被截断为1字节存储在ch中)最后根据ASCII值为'D'
i = fl + 2 * ch; // ch->4字节整数68,68*2 = 136,转成浮点数(203.00f),转成int存储在i中
fl = 2.0 * ch + i; // i为转成浮点数的203,ch转为整数68*2,最终的结果是203+136=339
printf("ch = %c, i = %d, fl = %2.2f\n", ch, i, fl);
ch = 1107; // 由于char类型是1位,1107已经超出,最终的打印的结果是1107%256=83,打印结果是83的ASCII码
printf("Now ch = %c\n", ch);
ch = 80.89; // 浮点数,被截断,阶段以后的值对应的ASCII码是'P'
printf("Now ch = %c\n", ch);
getchar();
return 0;
}
强制类型转换
# include<stdio.h>
void pound(int n)
{
while (n-- > 0)
{
printf("#");
}
printf("\n");
}
int main(void)
{
int times = 5;
char ch = '!';// ASCII码为33,1字节
float f = 6.0;
pound(times);
pound(ch); // 变为4字节33传入
pound(f); // = pound((int)f);
getchar();
return 0;
}
标签:语句,ch,return,int,void,运算符,printf,include,表达式
From: https://www.cnblogs.com/JunkingBoy/p/17324274.html