C语言集训—王菲菲—第三次作业

271 阅读3分钟

运算符

算数运算符
+   -   *   /(除)   %(取余数)
关系运算符
>   >=   <   <=   !=(不等于)   ==(等于)
逻辑运算符
!(非)   &&(并且)   ||(或)
赋值运算符
=   +=   *=   /=   -=
优先级别
算术>关系>逻辑>赋值

除法与取模运算符

除法/的运算结果和运算对象的数据类型有关,两个数都是int,则商就是int,若商有小数,则截取小数部分;被除数和除数中只要有一个或两个都是浮点型数据,则商也是浮点型,不截取小数部分。

取余%的运算对象必须是整数,结果是整除后的余数,其余数的符号与本除数相同。

测试取模运算符

#include <stdio.h>
int main(void)
{
    printf("%d %d %d %d %d %d\n",3%3,13%-3,-13%3,-13%-3,-13%23,3%5);
    return 0;
}

运行如图所示

QQ图片20211125231656.png

#include <stdio.h>
int main(void)
{
   int i = 10;
   int k = 20;
   int m;
   m = (3>2) && (k=8);
   printf("m = %d, k = %d\n", m, k);
    return 0;
}


QQ图片20211125231702.png

C语言对真假的处理

非零是真 零是假

真是1表示 假是零表示

&&左边的表达式为假 右边的表达式肯定不会执行

||左边的表达式为真 右边的表达式肯定不会执行

int main(void)
{
   int i = 10;
   int k = 20;
   int m;
   m = (3>2) ||(k=8);
   printf("m = %d, k = %d\n", m, k);
    return 0;
}


QQ图片20211125231708.png

scanf用法

#include <stdio.h>
int main(void)
{
   int i;
   scanf("%d", &i);
   printf("i = %d\n", i);
    return 0;
}

QQ图片20211125231713.png

#include <stdio.h>
int main(void)
{
   int i;
   char ch;

   scanf("%d", &i);
   printf("i = %d\n", i);
   scanf("%c",&ch);
   printf("%c\n", ch);
    return 0;
}

QQ图片20211125231719.png

流程控制

1、什么是流程控制

程序代码执行的顺序

2、流程控制的分类

顺序

选择

定义:某些代码可能执行,也可能不执行,有选择的执行某些代码

分类:

if
1. if最简单的用法
2. if的范围问题
3. if..else...的用法
4. if..else if...else...的用法
5. C语言对真假的处理
6. if举例--求分数的等级
7. if的常见问题解析

switch

#include <stdio.h>
int main(void)
{
   int i, j;
   printf("请输入i的值(中间以空格分隔) :");
   scanf("%d %d",&i, &j);
   printf("i = %d, j = %d\n", i, j);
  
    return 0;
}

QQ图片20211125231725.png

循环

定义:某些代码会被重复执行

分类:for

while

do while

格式

 do
 {
     ......
 } while(表达式)

do...while并不等价于for,当然也不等价于while,主要用于人机交互

break和continue

break

用于循环是来终止循环,用于gwitch,是用来终止gwitch,不能直接用于if,除非if属于循环内部的一个子句,在多层循环中,break只能终止距离它最近的循环,在多层gwitch嵌套中,只能终止距离它最近的gwitch。

continue

用于跳过本次循环余下的语句,转去判断是否需要执行下次循环。

#include <stdio.h>
int main(void)
{
    if (3 > 2)
        printf("AAAA\n");
    return 0;
}

QQ图片20211125231729.png

for循环

#include <stdio.h>
int main(void)
{
    int i;
    int sum = 0;
    for (i=1; i<100; i+=2)
    printf("i = %d\n", i);
    printf("sum = %d\n", sum);
   
    return 0;
}

QQ图片20211125231747.png if else用法

#include <stdio.h>
int main(void)
{
    int i, j;
    scanf("%d %d", &i, &j);
    if (i > j)
       printf("i大于j\n");
    else 
        printf("i小于j\n");
    return 0;
}

QQ图片20211125231735.png

互换两个数字

#include <stdio.h>
int main(void)
{
    int i = 3;
    int j = 5;
    int t;
    t = i;
    i = j;
    j = t;
    printf("i = %d, j = %d\n", i, j);
    return 0;
}

QQ图片20211125231742.png

#include <stdio.h>
int main(void)
{
    int sum = 0;
    int i;
    i = 1;
    while (i < 101)
    {
        sum = sum + i;
        ++i;
    }
   printf("sum = %d\n", sum);
    return 0;
}

QQ图片20211125231753.png

一元二次方程

# include <stdio.h>
# include <math.h>
int main(void)
{
	
		double a,b,c;
		double delta;
		double x1,x2;
		char ch;
		
		do
		{
			printf("请输入一元二次方程的三个系数:\n");
			printf("a = ");
			scanf("%lf",&a);//double类型是%lf,float是%f
			
			printf("b = ");
			scanf("%lf",&b);
			
			printf("c = ");
			scanf("%lf",&c);
			
			delta = b*b - 4*a*c;
			
			if(delta > 0)
			{
				x1 = (-b + sqrt(delta))/(2*a);
				x2 = (-b - sqrt(delta))/(2*a);
				printf("有两个解! x1 = %lf,x2 = %lf\n",x1,x2);
			}
			else if(delta == 0)
			{
				x1 = x2 = (-b)/2*a;
				printf("有一个唯一解!x1 = x2 =%lf\n",x1,x2);
			}
			else
			{
				printf("无实数解!\n");
			}
			//使用户自行决定终止,若不想终止可不写。。。
			printf("您想继续吗?(Y/N):");
			scanf(" %c",&ch);//%c前不要忘记加空格。
	}
	  //while(1);//1永远成立,可循环,但这样写程序无法终止。
	    while('Y'==ch || 'y'==ch);//只有这样,才循环 
	return 0;
}

QQ图片20211125231758.png

课后习题

5.10

7、

QQ图片20211126000747.png

13、a.x = x -1;

b.m = n%k;

c.p=q/b-a

d.x=(a+b) /c*d

5.11

3

QQ图片20211126003416.png

8

QQ图片20211126004603.png

6.16

5、

QQ图片20211126010048.png 8、

QQ图片20211126005426.png 18

QQ图片20211126005612.png

7.11

2

a、number>=90&&number<100

​ b、ch!=q||k

​ c、number>1&&number<9&&!=5

​ d、number<1&&number>9

10

QQ图片20211126010642.png