1.summing.c程序
//summing.c--根据用户键入整数求和
#include<stdio.h>
int main(void)
{
long num;
long sum = 0L; //把sum初始化为0
int status;
printf("please enter an integer to be summed");
printf("(q to quit):");
status = scanf("%1d", &num);
while (status == 1)//==的意思是等于
{
sum = sum + num;
printf("please enter next integer (q to quit):");
status = scanf("%1d", &num);
}
printf("those integers sum to %1d.\n", sum);
return 0;
}
程序注释:statues==1
==运算符是C的相等的运算符(equality operator),该表达判断status是否等于1,status==1是测试条件,status =1是把1赋给statues.
该程序结构(伪代码)
把sum初始化为0
提示用户输入数据
读取用户输入数据
当输入的数据为整数时
输入添加给sum,
提示用户输入
然后读去下一个输入
while 语句
while循环通用语句如下:
while(expression)
statement
statement部分可以是以分号结尾的简单句,也可以是用花括号括起来的复合语句。expression可以是值之间的比较,可以使用任何表达式,如果expression为真,执行statement一次,然后再判断expression。在expression为假之前,循环的判断和执行一直重复进行。
终止while循环
在构建while循环时,必须让测试表达式的值有变化,表达氏最终要为假,否则,循环就不会终止‘
优先级与关系运算
优先级由高到低排列:算数运算符 关系运算符 赋值运算符
关系运算符之间有两种不同的优先级
高级优先组:<<= >>=
低优先级组:== !=
与其他大多数运算符一样,关系运算符的结合律也是从左往右。因此ex ! =wye==zee与(ex !=wye)==zee相同
运算符(优先级从高至低) | 结合律 |
() | 从左往右 |
- + ++ -- sizeof | 从右往左 |
* / % | 从左往右 |
+ _ | 从左往右 |
< > <= >= | 从左往右 |
== != | 从左往右 |
= | 从右往左 |
不确定循环和计数循环
//swetiel.c--一个计数循环
#include<stdio.h>
int main(void)
{
const int NUMBER = 22;
int count = 1; //初始化
while (count <= NUMBER); //测试
{
printf("by my valentine!\n"); //行为
count++; //更新计数
}
return 0;
}
在创建一个重复执行固定次数的循环中涉及3个行为
1.必须初始化计数器
2.计数器与有限个值作比较;
3每次循环时递增计数器
FOR循环(把上述3个行为 :初始化 测试和更新结合在一起)
使用for语句改后的程序
//swetiel.c--使用for循环的计数循环
#include<stdio.h>
int main(void)
{
const int NUMBER = 22;
int count;
for (count = 1; count <= NUMBER;count++);
printf("by my valentine!\n");
return 0;
}
利用for的灵活性
环的灵活性源于源于如何使用for循环的3个表达式
- 可以使用递减运算符来递减计数器:for(secs=5;secs>0;secs--);
- 可以让计数器递增:for(n=2;n<60;n=n+13);
- 可以用字符替代数字记数:for(ch='a';ch<='z';ch++)
- 除了测试迭代次数外,换可以测试其他条件,在for_cube程序中可以把for(num=1;num<=6;num++)替换成 for (num=1;num*num*num<=216;num++)
- 可以让递增的量几何增长,而不是算术增长。也就是说每次都乘上而不是加上一个量for(debt=100.0;debt<150.0;debt=debt*1.1)
- 第三个表达式可以使用任意的合法表达式。无论是什么表达式,每次迭代都会更新该表达式的值for(x=1;y<=75;y=(++x*5)+50)
- 可以省略一个或多个表达式
- 第一个表达式不一定是给变量赋给初值,也可以使用printf()。在执行循环其他部分之前,只对第一个表达式求值一次或执行一次。for(printf("keep entering numbers!\n");num != 6;)scanf ("%d",&num)
- 循环体中的行为可以改变循环头中的表达式for(n=1;n<10000;n=n+delta)
其他赋值运算符 :+= -= *= /= %=
C语言中有许多赋值运算符。最基本、最常用的是=,他把右侧表达式的值付给左侧变量。其他赋值运算符都用于更新变量,其用法都是左侧是一个变量名,右侧是一个表达式。赋给变量的新值是根据右侧表达式的值,确切的调整方案取决于具体的运算符。
逗号运算符:逗号运算符扩展了for的灵活性,以便在循环中包含更多的表达式。