首页 > 代码库 > 运算符、表达式、语句

运算符、表达式、语句

//计算多个鞋尺码对应的英寸的长度
#include<stdio.h>
#define ADJUST 7.64
#define SCALE 0.352
int main(void )
{
double shoe,foot;

printf("Shoe size(men‘s) foot length\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("If the shoe fits,wear it.\n");
return 0;


}

 

 

//此处的例子较简单,主要是为了试验怎么使列对齐--不要用空格键,用tab键
#include<stdio.h>
int main(void)
{
int jane,tarzan,cheeta;

cheeta = tarzan = jane = 68;
printf(" cheeta tarzan jane\n");
printf("Frist round score %8d %8d %8d\n",cheeta,tarzan,jane);
return 0;

}

 

 

//指数增长 --小技巧:计算printf()中格式说明符的位数,并且使用tab键来达到列对齐的效果,-符号的左对齐也很有用

#include<stdio.h>

#define SQUARES 64 // 棋盘上的方格数
#define CROP 1E15 //以粒计的美国小麦的产量

int main(void)
{
double current,total;
int count = 1;

printf("square grains total ");
printf("fraction of\n");
printf(" added grain ");
printf("US total\n");
total = current = 1.0;
printf("%-4d %-13.2e %-12.2e %-12.2e\n",count,current,total,total/CROP);

while(count < SQUARES)
{
count = count + 1;
current = 2.0 *current;

total = total + current;
printf("%-4d %-13.2e %-12.2e %-12.2e\n",count,current,total,total/CROP);

}
printf("That‘s all.\n");

return 0;

}


除法的注意点:
/*
整数除以整数是进行截尾,整数与浮点数进行混合运算时,结果是浮点数。
实际上计算机不能真正用整数去除浮点数,所以操作数将两个操作数转变为一致的类型.
*/

 

关于sizeof的一些知识:
/*
1.sizeof运算符以字节位单位返回其操作数的大小
2.在C中,1个字节被定义为char类型所占用空间的大小。在过去,1个字节通常是8位,但是一些字符集可能使用更大的字节
3.操作数可以是具体的数据对象:变量名,类型......
4.返回类型为size_t,无符号整数类型,是C的头文件系统用typedef定义的。这样当你使用它的时候,编译器会用适合您的系统的标准类型代替之。
5.可以用%u,%lu来代替
*/

 


%的注意点
/*
1.取模运算符%用于整数运算
2.C99规定整数除法位“趋零截尾”,从而模的正负与第一个操作数相同
*/

 

++和--的注意点
/*
1.如果一个变量出现在同一个函数的多个参数中时,不要将增量或者减量运算符用于它上面
2.当一个变量多次出现在一个表达式时,不要将增量或减量运算符运用到它的上面

 

例子:
while(num < 2)
{
printf("%10d %10d\n",num,num*num++);

}
这就可能为5,25;6,25;6,30;


ans = num / 2 + 5*(1 + num++);


n = 3;
y = n++ + n++;

*/

 


表达式和语句:
/*
1.每个表达式都有一个值。如: 6+(c = 3+8)的值是17
2.有用的语句是一条完整的指令,3+4;就不是。
3.不是所有完整的指令都是语句。如:x = 6 + (y=5);字表达式y=5是一个完整的指令,但它只是一个语句的一部分
4.从C的角度来看,主要目的是对表达式求值,副作用(side effect)是对数据对象和文件的修改
*/

 


类型转换:
/*
--提升
1.出现在表达式里或者作为函数的参数时,有符号和无符号的char和short类型都将自动转变为int。(在short = int时,unsigned short=>unsigned int而不是变为int)
2.float=>double
3.在包含两种数据类型的运算里,两个值都将转换成两种类型里较高的级别
3.类型级别从高到低的顺序是:long double、double、float、unsigned long long、long long、unsigned long、long、unsigned int、int
(int=long时,unsigned int => long)
--降级
趋零截尾”或舍入,float->整数类型时是截尾
*/

 

带有参数的函数:
/*
C99--实际参数,形式参量。这里参量是变量而参数是由函数调用提供的值
*/

 


下面是程序为一个总结这章:
#include<stdio.h>

const int S_PER_M = 60; //每分钟的秒数
const int S_PER_H = 3600; //每小时的秒数
const double M_PER_K = 0.62137;//每公里的英里数

int main(void)
{
double distk,distm; //分别以公里和英里计的跑过的距离
double rate; //以英里/小时为单位的平均速度
int min,sec; //跑步用的分钟数和秒数
int time; //用秒表示的跑步用时
double mtime; //跑完一公里所用的时间,以秒计
int mmin,msec; //跑完一公里所用的时间,以分钟和秒计

printf("This programe converts your time for a metric race\n");
printf("to a time for running a mile and to your average\n");
printf("speed in miles per hour.\n");
printf("Please enter,in kilmeters,the distance run.\n");
scanf("%lf",&distk); //读取一个double类型的数值

printf("Next enter the time in minutes and seconds.\n");
printf("Begin by entering the minutes.\n");
scanf("%d",&min);

printf("Now enter the seconds.\n");
scanf("%d",&sec);

// 把时间转换为全部用秒表示
time = S_PER_M * min +sec;
// 把公里转换为英里
distm = M_PER_K * distk;
// 英里/秒 X 秒/小时 = 英里/小时
rate = distm / time * S_PER_H;
// 时间/距离 = 跑完每英里的用时
mtime = (double)time / distm;
mmin = (int)mtime / S_PER_M; //求出分钟数
msec = (int)mtime % S_PER_M; //求出剩余的秒数

printf("Your ran %1.2f km(%1.2f miles)in %d min,%d sec.\n",
distk,distm,min,sec);
printf("That pace corresponds to running a mile in %d min,",
mmin);
printf("%d sec.\nYour average speed was %1.2f mph.\n",msec,
rate);

return 0;


}

注:主要练规法



运算符、表达式、语句