运算符
算数运算符
| 名称 | 符号 | 说明 |
|---|---|---|
| 加法运算符 | + | 双目运算符,即应有两个量参与加法运算。如a+b,4+8等。具有右结合性。 |
| 减法运算符 | - | 双目运算符。但“-”也可作负值运算符,此时为单目运算,如-x,-5等具有左结合性。 |
| 乘法运算符 | * | 双目运算符,具有左结合性。 |
| 除法运算符 | / | 双目运算符,具有左结合性。参与运算量均为整型时,结果也为整型,舍去小数。如果运算量中有一个是实型,则结果为双精度实型。 |
| 求余运算符(模运算符) | % | 双目运算符,具有左结合性。要求参与运算的量均为整型,不能应用于float或double类型。 求余运算的结果等于两数相除后的余数,整除时结果为0。 |
| 符号运算符 | - 和 + | 一元运算符,用于标记和改变一个值的代数符号。 |
关系运算符
| 关系运算符 | 含 义 | 数学中的表示 |
|---|---|---|
| <= | 小于或等于 | ≤ |
| >= | 大于或等于 | ≥ |
| < | 小于 | < |
| 大于 | > | |
| == | 等于 | = |
| != | 不等于 | ≠ |
逻辑运算符
设变量A和B的值分别为0和1.
| 运算符 | 解释 | 例子 | ||||
|---|---|---|---|---|---|---|
| && | 逻辑与运算符。如果两个操作数都非零,则条件为真 | (A && B)为假 | ||||
| 逻辑或运算符。如果两个操作数中有任意一个非零,则条件为真 | (A | B)为真 | ||||
| ! | 逻辑非运算符。用来逆转操作数的逻辑状态。如果条件为真则逻辑非运算符将使其为假 | !(A && B)为假 |
赋值运算符
变量 = 赋给概变量的值;
其中‘=’为赋值运算符,表示将右边的值赋给左边的变量(不是相等)
自增自减
‘++’和‘--’分别表示自加和自减,符号与变量的位置不同含义不同
设有变量A
| 例子 | 含义 |
|---|---|
| ++A | 表示先加一后使用A |
| A++ | 表示先使用A后加一 |
| --A | 表示先减一后使用A |
| A-- | 表示先使用A后减一 |
三目运算符
(条件)?结果1:结果2;
含义:当条件为真时,此运算符运行结果为结果1;
当条件为假时,此运算符运行结果为结果2.
优先级
流程控制
-
if else 语句
if(条件表达式) { 复合语句A; //if体 } else { 复合语句B; //else体 }`如果条件表达式为真,执行复合语句A;
如果条件表达式为假,执行复合语句B; -
for 语句
-
一般形式
for(单次表达式;条件表达式;末尾循环体) { 中间循环体; }其中表达式可以省略,但分号不可省略
-
-
while 语句
while (表达式) { 复合语句; }当表达式为真时,执行复合语句
-
switch 语句
switch(表达式) { case 整型数值1: 语句 1; case 整型数值2: 语句 2; ...... case 整型数值n: 语句 n; default: 语句 n+1; }先计算表达式的值,之后从第一个case开始,将表达式的值与执行数值比较,如果相等,则从此语句开始执行到n+1语句;如果不等,则与下一个语句比较;
-
do while 语句
do { 循环体; } while (条件表达);
和while语句相似,不过while先判断,后执行;而do while 先执行后判断
- break与continue区别
break:从循环中跳出;
continue:跳出此循环,进入下一个循环;
课后习题
- 5.10 第七题 第十三题
-
第十三题
a. x = x-1;
b. m = n%k;
c. p = q/b-a;
d. x = (a+b)/(a*b); -
第七题
-
#include <stdio.h>
int main(void)
{
char c1,c2;
int diff;
float num;
c1 = 'S';
c2 = 'O';
diff = c1 - c2;
num = diff;
printf("%c%c%c:%d %3.2f\n",c1,c2,c1,diff,num);
return 0;
}
运行结果
-
5.11 第三题 第八题
- 第三题
#include <stdio.h> #define WEEK 7 int main(void) { int a,b,c; printf("Please enter days!\n"); scanf("%d",&a); b = a/WEEK; c = a%WEEK; printf("%d days are %d weeks, %d days.\n",a,b,c); return 0; }运行结果
- 第八题
#include <stdio.h> int main(void) { int a,b; b = 1; printf("Please enter a numbers:"); scanf("%d",&a); while (b>=0) { printf("Please enter next number:\n"); /* code */ scanf("%d",&b); printf("The value of remainders is %d",b%a); } return 0; }运行结果
- 6.16 第五题 第十二题 (计算机二级内容) 第十八题
- 第五题
* 第十二题
```#include <stdio.h>
#include <math.h>
int main(void)
{
double num1,num2,i;
int n;
while(1)
{
printf("\nPlease enter the number of times the sum was added\n");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
num1 = num1+(1/i);
num2 = num2+pow(-1,i+1)*(1/i);
}
printf("%f\n%f",num1,num2);
}
return 0;
}
```
运行结果

* 第十八题
```
#include <stdio.h>
int main(void)
{
int n,i;
n = 5;
i = 1;
while(n<=150)
{
n = (n-i)*2;
i++;
printf("%d\n",n);
}
return 0;
}
```
运行结果

-
7.11 第二题 第十题
- 第二题
a. 10<=number<=100
b. (ch!='q')||(ch!='k')
c. (1<=number<=9)&&(number!=5)
d.!(1<=number<=9) - 第十题
#include <stdio.h> int main(void) { char ch; while ((ch = getchar()) != '#') { if (ch == 'c') printf("Step 1\n"); else if (ch == 'b'){ printf("Step 1\n"); break; } else if (ch == 'h'){ printf("Step 3\n"); } else if(ch == '\n'); else{ printf("Step 1\n"); printf("Step 2\n"); printf("Step 3\n"); } } printf("Done\n"); return 0; }运行结果
- 第二题
杭州oj注册
图片