C语言集训-王丽宁-第三次作业

209 阅读4分钟

上课笔记(P41-P96)

运算符

算术运算符

'+'     -      *      /(除)      %(取余数 )

关系运算符

>  >=   <   <=  !=(不等于)   ==(等于)

逻辑运算符

!(非)  &&(并且)  ||(或)
真是1表示
假是0表示
&&左边表达式为假,不执行右边表达式
||左边表达式为真,不执行右边表达式

赋值运算符

=  +=  -=  /=  *=

优先级别

算数 > 关系 > 逻辑 > 赋值

除法与取模运算符

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

取模代码如下

#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 ;
}

取模.PNG

流程控制

顺序

选择
    定义
        某些代码可能执行,也可能不执行,有选择的执行某些代码
    分类
        if
            1.if最简单的用法
            格式:if(表达式)
                    语句
            功能:如果表达式为真,执行语句。
                 如果表达式为假,语句不执行。
            2.if的范围问题
                1.
                    if (表达式)
                        语句A;
                        语句B;
                    解释:if默认只能控制语句A的执行与不执行
                          if午法控制语句B的执行
                 2.
                     if (表达式)
                     {
                         语句A;
                         语句B;
                     }
                     
            3.if...else...的用法
            4.if...else if...else...的用法
            5.C语言对真假的处理
                非零即真
                零就是假
                
                真用1表示
                假用0表示
            6.if举例--求 分数的等级
            7.if常见问题的解析
        switch
循环

if最简单的用法 1.

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

捕获.PNG

2

#include <stdio.h>
int main (void)

{
    if (3)
        printf ("AAAA\n");
    if (0)
        printf ("BBBB\n");
    if (0 == 0)
        printf ("CCCC\n");

    return 0 ;
}

2.PNG

if的范围问题

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

3.PNG

if……else的用法 1.

#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;
}

4.PNG 2.(错误示范)

#include <stdio.h>
int main (void)
{
    if(1>2) 
        printf ("AAAA\n");
    else
        printf ("BBBB\n");
        printf ("CCCC\n");        /*不属于if语句,是个错误示范*/
    return 0;
}

3.

#include <stdio.h>
int main (void)
{
    double delta = 3;
    
    if (delta > 0)
        printf ("有两个解!\n");
    else if (delta == 0)
        printf ("有一个解\n");
    else 
        printf ("无解\n");
        
    return 0;
}

5.PNG

if等级举例 1.

#include <stdio.h>
int main (void)
{
    int score;

    printf ("请输入您的成绩");
    scanf ("%d", &score);
    if (score >= 100)
        printf ("你在做梦\n");
    else if ( 90 <= score && score <= 100 )
        printf ("你做的不错\n");
    else if ( 80 <= score && score <=90)
        printf ("良好");
    else if (60 <= score && score <= 80)
        printf ("及格\n");
    else if ( 0 <= score && score <= 60)
        printf ("不及格");

    return 0;
}

6.PNG 前面几次输出错误是因为我对score在scanf中 写成了%d但是定义的是float

3.

互换两个数字

#include <stdio.h>
int main (void)
{
    int i = 3;
    int j = 5;
    int t;

![7.PNG](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/e92df8a1a32b46e78a707effe4e3045a~tplv-k3u1fbpfcp-watermark.image?)
    t = i;
    i = j;
    j = t;
    printf ("%d, %d",i,j );
    return 0;
}

7.PNG

4.

对任意三个数字排序

#include <stdio.h>
int main (void)
{
    int a,b,c;
    int t;

    printf ("请输入三个整数:");
    scanf ("%d %d %d",&a,&b,&c);
    if (a<b)
        t = a;
        a = b;
        b = t;
    else  if (a < c)
        t = a;
        a = c;
        c = t;
    printf ("%d,%d,%d",a,b,c);
    return 0;
}

为什么需要循环的例子

#include <stdio.h>
int main (void)
{
    int i;
    int sum = 0;

    for (i=1;i<=100;i++)
        sum = sum +i;
    printf ("sum = %d",sum);
    return 0 ;
}

8.PNG

计算1到1/100的和

#include <stdio.h>
int main (void)
{
    int i;
    float sum = 0;

    for (i=1;i<=100;i++)
        sum = sum + 1/ (float)(i) ;
    printf ("sum = %f",sum);
    return 0 ;
}

9.PNG

强制转化类性

格式:
    (数据类型)(表达式)
功能:
    把表达式的值强制转化为前面所执行的数据类型
例子

        (int)(4.5+2.2)    最终值是 6float)(5)        最终值是 5.000000

浮点数存储所带来的问题

floatdouble都不能保证可以准确的存储一个小数
举例:
    有一个浮点数x如何判断x的值是否为零
        if (|x-0.0000001| < 0.0000001)
            是零
       else
           不是零

求1到100之间的奇数的和

#include <stdio.h>
int main (void)
{
    int i;
    int sum = 0;

    for (i=1;i<101;i++)
    {    
        if (i%2 == 1)
            sum += i;
    }
    printf ("sum = %d",sum);
    return 0 ;
}

image.png

求1到100之间的奇数个数

#include <stdio.h>
int main (void)
{
    int i;
    int cnt = 0;

    for (i=1;i<101;i++)
    {    
        if (i%2 == 1)
            ++cnt; 
    }
    printf ("cnt = %d",cnt);
    return 0 ;
}

image.png

求1到100之间的奇数的平均数

#include <stdio.h>
int main (void)
{
    int i;
    int cnt = 0;
    int sum = 0;
    float avg ;

    for (i=1;i<101;i++)
    {    
        if (i%2 == 1)
           { 
               ++cnt;
               sum += i;
           } 
    }
    avg = 1.0*sum / cnt;
    
    printf ("cnt = %d\n",cnt);
    printf ("sum = %d\n",sum);
    printf ("avg = %f\n",avg);

    return 0 ;
}

image.png

for的用法

for
    1.格式:
       for123)
           语句 A;
    2.执行的流程【重点】
        单个for循环的使用
        多个for循环的嵌套使用 
            for123for456)
                    A;
                    B;
   3.范围问题
while
    1.执行顺序
    2.for比较
    3.举例
    4.什么时候用while
do……while……

运算符的知识

自增(或自减)
    分类:
        前自增 ---- ++i
        后自增 ---- i++

三目运算符

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

    i = (0>2 ? 5 : 1);
    printf ("%d\n",i);
    return 0 ;
}

image.png

求回文数

#include <stdio.h>
int main (void)
{
    int  m ;
    int  val;
    int  sum = 0;
    printf ("请输入您需要判断的数字");
    scanf ("%d",&val);

    m=val;
    while (m)
    {
        sum=sum*10+m%10;
        m/=10;
    }
    if (sum=val)
        printf ("Yes\n");
    else 
        printf ("No\n");
    return 0 ;
}

image.png

斐波那契数列

#include <stdio.h>
int main (void)
{
    int n;
    int f1,f2,f3;
    int i;

    f1=1;
    f2=2;

    printf ("请输入数列");
    scanf ("%d",&n);

    if (1==n)
    {
        f3=1;
    }
    else if (2==n)
    {
        f3=2;
    }
    else 
    {
        for (i=3;i<=n;++i)
        {
            f3=f1+f2;
            f1=f2;
            f2=f3;
        }
    }
    printf ("%d\n",f3);
    return 0 ;
}

电梯问题

#include <stdio.h>
int main (void)
{
    int val;
    printf ("输入楼层");
    scanf ("%d",&val);

    switch (val)
    {
    case 1:
        printf ("1开\n");
        break;
    case 2:
        printf("2开\n");
        break;
    }
    return 0 ;
}
#include <stdio.h>
int main (void)
{
    int val;
    printf ("输入楼层");
    scanf ("%d",&val);

    switch (val)
    {
    case 1:
        printf ("1开\n");
        break;
    case 2:
        printf("2开\n");
        break;
    }
    return 0 ;
}

image.png

课后作业

创建一个电杭账号

临时作业.PNG

5.10-7

结果为:SOS:4,4.00

5.10-13

结果是:
a.  --x
b.  m=n%k
c.  p=1.0*q/b-a
d.  x=1.0*(a+b)/(c*d)

5.11-3

5.11-3.PNG

5.11-8

#include <stdio.h>
int main (void)
{
    int first_operand,m;
    const int second_operand;
    printf ("This program computers moduli\n");
    printf ("Enter an integer to serve as the second_operand :");
    scanf ("%d",&second_operand);
    printf ("Now enter first_operand :");
    scanf ("%d",&first_operand);
    m = first_operand % second_operand;
    printf ("%d %% %d is %d\n",first_operand,   second_operand, m);
    while (first_operand > 0)
    {
        printf ("Enter next number for first_operand(<=0 to input):");
        scanf ("%d",first_operand);
        m = first_operand % second_operand;
        printf ("%d %% %d is %d\n",first_operand,   second_operand, m);
    }
    printf ("Done");
    return 0;
}

wenti.PNG

自己写的程序

6.16-5

#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 ("");
    }
}

20.png

不太会写,照着答案写的,自己写的运行存在错误。

6.16-12

#include <stdio.h>
int main (void)
{
    long int limit;
    float sign = 1.0f;
    float series1 = 0,series2 = 0;

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

    for (long int i = 1;i<=limit;i++)
    {
        series1 += 1.0f/i;
        series2 +=(1.0f/i)*sign;
        sign = -sign ;
    }
    printf ("The %ld partial sum for series1 is: %.5f\n",limit,series1);
    printf ("The %ld partial sum for series2 is: %.5f\n",limit,series2);
    return 0 ;
}

    

image.png

7.11-2

a.number > 90 || number = 90 && number<100
b.'a'=<ch && ch <= 'j'&& 'l'=<ch && ch <='o'&& ch <='z'
c.number>=1 && number<=4 && number >=4 && number <=9
d.number<1&&number>10

7.11-10

q
c
h
b
#include <stdio.h>
int main (void)
{
    char ch;
    while ((ch = getchar()) !='#')
    {
        switch (ch)
        {
        case (ch == '\n')
           printf("Step 1\n"); 
        case (ch =='c')
        case (ch == 'b')
        break
        case (ch == 'h')
            printf("Step 3\n");
        default:
            printf ("Step 2\n");
            break;
        }
    printf ("Done\n");
    return 0 ;
    }
    
}