课堂理论知识

运算符

presto 除法保留小数 除法保留小数怎么验算_presto 除法保留小数

presto 除法保留小数 除法保留小数怎么验算_presto 除法保留小数_02

presto 除法保留小数 除法保留小数怎么验算_开发语言_03

1.除法与取模的运算
  • 其中除法的运算结果与预算对象有关,两个书都是int,则商也是int,若商有小数,则截取小数部分;被除数和除数只要有一个是浮点型,则商也是浮点型,不截取小数部分。
    如:16/5=3,16/5.0=3.20000,-13/4=-4.
  • 取余%的运算对象必须是整数,结果是整除后的余数,其余数的符号与被除数相同。
    如13%3=1,13%-3=1,-13%-2=-1

测试运算符的代码例子

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

presto 除法保留小数 除法保留小数怎么验算_#include_04


!真————>假

!假————>真

真&&假————> 假

假&&真————> 假

假&&假————> 假

真||假————>真
假||真————>真
真||真————>真
假||假————>假

2.C语言对真假的处理

非零是真 零是假
真是1表示 假是0

重点:1.&&当左边的表达式为假,右边的表达式肯定不会执行。
2.||当左边的表达式为真,右边的表达式肯定不会执行。

3.执行的优先级

presto 除法保留小数 除法保留小数怎么验算_presto 除法保留小数_05

优先级:算术>关系>逻辑>赋值
注:遇到优先级问题时,为提高代码可读性,尽量使用括号,不要写出有歧义的代码。一行代码不要出现多个自增自减符号,这会被视作垃圾代码。

流程控制

1.什么是流程控制

C———>C++ java C#
程序代码执行的顺序。

2.流程控制的分类

顺序执行
选择执行

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

- 1.if 最简单的用法

格式:

if(表达式)  
语句 A;

功能:如果表达式为真,执行语句。
如果表达式为假,语句不执行。

#include<stdio.h>
int main()
{
	if(5>4);
	printf("AAAAAA");
	return 0;
}

presto 除法保留小数 除法保留小数怎么验算_#include_06

- 2.if的范围问题

if默认只能控制一个语句的执行;

if(表达式)
语句A;
语句B;

解释:if默认只能控制A的执行或不执行if无法控制语句B的执行或不执行或者讲:语句B一定会执行不受if影响。

if(表达式)
{
语句A;
语句B;
}

此时if能控制多个语句,要想控制多个语句用{}括起来。

- 3.if…else…的用法
  • 4.if…else if…else…的用法
    格式:
if()
语句A;
else()
语句B;
else()
语句C;
else()
语句D:
- 5.C语言对真假的处理

非零是真;零就是假;真用1表示;假用0表示

- 6.if举例–求分数的等级
#include<stdio.h>
int main()
{
	float score;//定义score
	printf("请输入你的考试分数:");
	scanf("%f", &score);
	if(score > 100)
	printf("做梦吧");
	else if(score<=100 && score>=90)//不能写成90<=score<=100
	printf("优秀");
	else if(score<90 && score>=60)
	printf("良好");
	else if (score<60 && score>=0)
	printf("学废啦");
	return 0;


}

presto 除法保留小数 除法保留小数怎么验算_c语言_07

- 7.if的常见问题解析
如何交换A,B的值?

找一个中间变量C

#include<stdio.h>
int main()
{
  int i=4;
  int j=6,t;
   t=i;
   i=j;
   j=t;
   printf("i=%d,j=%d",i,j);
  return 0;
}

presto 除法保留小数 除法保留小数怎么验算_开发语言_08

几个数中的最大值问题?

(代码为自己所打,与赫老师不同,其中运用到数组知识)

#include<stdio.h>
int main()
{
	int num[10];
	int i;
	printf("请输入十个数:");
	for (i = 0; i < 10; i++)
	{
		scanf("%d", &num[i]);
	}
	int temp;
	temp = num[0];
	int j;
	for (j = 0; j < 10; j++)
	{
		if (temp < num[j])temp = num[j];
	}
	printf("其中最大的数为:%d\n", temp);
	return 0;
}

presto 除法保留小数 除法保留小数怎么验算_开发语言_09

-8.if常见问题

if();<–错误(不能再if后加分号)if默认只能控制一个语句。
else if(条件语句)中的if不能省略不然不成立。
swith

循环执行

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

for

格式:

for(1;2;3;)
  {
     语句A;
  }
执行的流程:

presto 除法保留小数 除法保留小数怎么验算_c语言_10


执行的顺序:

1245A6(如果5成立)执行6A(5成立)6A……内循环结束才结束;

1245A6(如果5不成立)执行3245A同上执行。

presto 除法保留小数 除法保留小数怎么验算_开发语言_11

例子1×2+3×4+5×6+…+99×100(为个人所写的题)
#include<stdio.h>
int main()
{
	int i, sum=0;
	for (i = 1; i<= 99; i=i+2)
	{
		printf("%d*%d\n",i,i+1);
		sum+=i*(i+1);
	}
	printf("%d\n",sum);
}

presto 除法保留小数 除法保留小数怎么验算_c#_12

i的循环.
#include<stdio.h.>
int main()
{
int i,sum=0;
for (i=3;i<=10;i++)
{
    if(i%3 == 0)
       sum=sum+i;
    printf("sum=%d\n",sum);
}
    return 0;
}

presto 除法保留小数 除法保留小数怎么验算_开发语言_13

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

presto 除法保留小数 除法保留小数怎么验算_c#_14

  • i++与++i的讨论不重要
while

presto 除法保留小数 除法保留小数怎么验算_c语言_15

do…while
# 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);

      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 = (-b + sqrt(delta)) / (2*a);
          x2 = x1;
          printf("该一元二次方程有唯一解,x1 = x2 = %lf\n",x1);
     }
      else
     {
           printf("无解\n");
     }
      printf("是否继续(Y/N):"); 
      scanf(" %c", &ch);           //%c前面必须加一个空格
   }while('y' == ch || 'Y' == ch);
               
   return 0;
}
do
 { 
 
 }while(1)
switch

传送门

presto 除法保留小数 除法保留小数怎么验算_presto 除法保留小数_16

presto 除法保留小数 除法保留小数怎么验算_c语言_17

break和continue

presto 除法保留小数 除法保留小数怎么验算_presto 除法保留小数_18


只能终止离他最近的循环

continue

presto 除法保留小数 除法保留小数怎么验算_presto 除法保留小数_19

如何看懂一个程序

1.流程2.每个语句的功能3.试数。

对一些小算法的程序

对一些小算法的程序尝试自己去编程解决它,大部分人都自己无法解决,如果解决不了,就看答案关键是把答案看懂,这个要花很大的精力,也是我们学习的重点看懂之后尝试自己去修改程序,并且知道修改后程序的不同输出结果的含义照着答案去敲,调式错误,不看答案自己把答案敲出来,如果实在没法理解,就背会。

自增自减
#include<stdio.h>
int main()
{
   int i,j ,k,m;
   i=j=3;
   k=++i;
   m=j++;
   printf("i=%d,j=%d,k=%d,m=%d",i,j,k,m);
    return 0;
}

presto 除法保留小数 除法保留小数怎么验算_c语言_20

课后作业

5.10

第七题

presto 除法保留小数 除法保留小数怎么验算_c#_21


sos:4 4.00

第十三题

1.x–或x-=1或x=x-1
2.m=n%k
3.p=q/b-a
4.x=(a+b)/(c*d)

5.11

第三题

presto 除法保留小数 除法保留小数怎么验算_开发语言_22

第八题

presto 除法保留小数 除法保留小数怎么验算_presto 除法保留小数_23

6.16

第五题

不会做,把答案看懂了这里把答案贴出来。加了些注释

#include <stdio.h>

void print_spaces(unsigned int n);

int main(void)
{
	char uppercase_letter;
	char c1, c2;

	do // 从用户处获取大写字母
	{
		printf("Enter an uppercase letter: ");
		scanf(" %c", &uppercase_letter);
	} while (uppercase_letter < 'A' || 'Z' < uppercase_letter);

	for(c1 = 'A'; c1 <= uppercase_letter; c1++)
	{
		// 打印开放空间
		print_spaces(uppercase_letter - c1);

		// 打印信件
		// 上升
		for (c2 = 'A'; c2 < c1; c2++)
		{
			printf("%c", c2);

		}
		// 降
		for (; 'A' <= c2; c2--)
		{
			printf("%c", c2);
		}

		// 打印关闭空格
		print_spaces(uppercase_letter - c1);
		printf("\n");
	}

	return 0;
}

void print_spaces(unsigned int n)
{
	for (int i = 0; i < n; i++)
	{
		printf(" ");
	}
}
第十二题

看答案看懂的

#include <stdio.h>
int main(void)
{
	long int a;
	float b = 1.0f;
	float c1 = 0, c2 = 0;

	printf("Enter a number of terms to sum: ");
	scanf("%ld", &a);

	for (long int i = 1; i <= a; i++)
	{
		c1 += 1.0f/i;
		c2 += (1.0f/i) * b;
		b = -b; // 切换 b
	}

	printf("The %ldth partial sum for c 1 is: %.5f\n", a, c1);
	printf("The %ldth partial sum for c 2 is: %.5f\n", a, c2);

	// 答:系列 1 没有限制。系列 2 似乎在上面有界限

	return 0;
}

presto 除法保留小数 除法保留小数怎么验算_开发语言_24

第十八题
#include<stdio.h>
int main()
{  int friends = 5;
   int weeks  = 1;
   const int number=150;
    do
    {
        weeks++;
        friends= ( friends - 1 )*2;
        printf("第%d周,还有%d个朋友\n",weeks,friends);
    } while (friends < number);
    printf("After %d weeks he's friend are more than 150.", weeks);
    return 0;
}

presto 除法保留小数 除法保留小数怎么验算_presto 除法保留小数_25

7.11

第二题
1. number>=90 && nuber<100
2.ch != 'q' && ch != 'k'
3.(number>=1 && number<=9) && number! = 5
4.number <1 || number>9
第十题
#include<stdio.h>
int main()
{
	char ch;
	while ((ch = getchar()) != '#')
	{
		if (ch != '\n')
	       {
			printf("Step 1\n");
			if (ch == 'b')
				break;
			else if (ch != 'c')
			{
				if (ch != 'h')
				printf("Step 2\n");
				printf("Step 3\n");
			}
		}
	}
	printf("Done\n");
	return 0;
}

presto 除法保留小数 除法保留小数怎么验算_c#_26

问题列表:

强制类型转换:

格式:(数据类型)(表达式)
功能:把表达式的值强制转换为前面所执行的数据类型
例子:(int)(4.5+2.2)最终值为 6;
(float)(5) 最终值为5.000000

为什么循环中更新的变量不能用浮点型定义?

float和double不能保证能精确存储一个小数。

进制的转换问题

presto 除法保留小数 除法保留小数怎么验算_c#_27

三目运算符

presto 除法保留小数 除法保留小数怎么验算_presto 除法保留小数_28

逗号运算符

presto 除法保留小数 除法保留小数怎么验算_c#_29


j的值为1;从左到右运行.

presto 除法保留小数 除法保留小数怎么验算_c#_30

输入字符时的空白符问题

presto 除法保留小数 除法保留小数怎么验算_c语言_31


输入字符时必须加个空白符scanf(“空格%c”,&ch)

可以重复运行此程序.