0%

01test_05day

==================================
2022-7-6
==================================

一.温故知新

    赋值运算符	= += -= *= /= ...
    a += 1 => a = a + (1)
    条件运算符	? :
        part.1 ? part.2 : part.3;
    强制类型转换	(数据类型)
    求字节大小	sizeof
    自增自减		++ --
        变量名++;
        ++变量名;
    -----------------------
    分支结构
    if else
    if(条件)
    {
        语句
    }
    else if(条件)
    {
        语句
    }
    else if(条件)
    {
        语句
    }

=======================================
homework
1.
(1)打印4 * 5 的 *
例:
*****
*****
*****
*****
(2).打印i * j 的 * (i j 键盘接收)
    例:i = 4, j = 5
    //4-5 5-6
    *****
    *****
    *****
    *****
(3).打印i * j 的 * 边框(i j 键盘接收)
    例: i = 4, j = 5
    *****
    *   *
    *   *
    *****
2.打印99乘法表
    1 * 1 = 1
    1 * 2 = 2 2 * 2 = 4
    *
    **
    ***
    ****

3.计算1+2+3+4+5+...+n, n是从键盘输入的自然数

// 穷举
4.要将5张100元的大钞票,换成等值的50 20 10 5小钞票,每种面值至少一张,要多少张,有多少种换法

5.有1、2、3、4 4个数字,能组成多少个互不相同且无重复的三位数呢

6.有这样的一个等式,xyz+yzz=532,编程求x y z的值

7.计算1^2 + 2^2 + 3^2 + ... +10^2的结果
(1的平方 + 2的平方)

8.输入20个人的成绩,输出不及格的人数(0<=score<60 为不及格)

9.随机产生100个三位随机数,找出其中能被 3 5 7整除的数

10.打印0~100以内所有的质数
(只能被1 和 本身整除的数)

11.猜数游戏(随机产生一个1000以内的数,去猜,
        如果大了打印猜的大了,
        如果小了打印猜的小了,
        如果正确打印对的
        直到猜对了再结束,每次打印必须打印出猜的次数)

12. 把11修改成,程序开始时,先输入需要猜的数的范围n
例:(想要猜数的范围是(0~10000) 那么变量n接收键盘上10000
        范围都是从0开始)

13.
----------------------------
a + b - 9 = 4
+	-	-	
c -	d * e = 4
/	*	-
f + g - h = 4
=	=	=
4	4	4
求a b c d e f g h (0 ~ 12范围内)//除法指的是整除 c % f == 0
只有一种答案
14.求1+12+123+...前N项之和,其中N是从键盘输入的数(N取值范围(1~9))
    n = 5;
    sum = 1 + 12 + 123 + 1234 + 12345;

15.爱因斯坦出了一道这样的数学题,有一条长阶梯,若每步跨2阶,则最后剩1阶,若每步跨3阶,则最后省2阶,若每步跨5阶,则最后剩4阶,若每步跨6阶,则最后剩5阶只有每次跨7阶,最后才正好1阶不剩,请问在这条阶梯最少多少阶

16.设N是一个4位数,它的9倍恰好是它的反序数
    例:1234 反序数是4321

17.求s = a + aa + aaa + aaaa + ... + aa...a的值,其中a是1~9的一个数字(不超过十项)
例:a = 3; s = 3 + 33 + 333;

18.“百钱百鸡”问题,百钱买百鸡,公鸡1个3块钱,母鸡1个2块钱,小鸡3个一块钱,问公鸡,母鸡,小鸡各多少个

19.打印三角形	(画8个三角形)
* * * * *
  * * * *
    * * *
      * *
        *
6_1.打印三角形
    录入n,n是直角三角形的高
    例:	n = 3
      * 
    * * * 
  * * * * *
    n = 4
      * 
    * * * 
  * * * * * 
* * * * * * * 

20.猴子吃桃问题,有一天一只猴子摘了一些桃子,它吃掉一半,又吃了一个,第二天也是这样,到了第十天,只有一个桃子了,求猴子摘了多少桃子

21. 4 5 6 7总共能组成多少个不能被4整除的4位数

22.求n!(n的阶乘)

/*
三角形
*/
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include <stdio.h>

int main(void)
{
int a = 0, b = 0, c = 0;//使用a b c变量表示三角形的三个边

scanf("%d-%d-%d", &a, &b, &c);//通过scanf函数录入三个边
/*if error*/

if((a+b>c) && (a+c>b) && (b+c>a))//罗列普通三角形的条件
{
if((a*a+b*b==c*c) ||
(a*a+c*c==b*b) ||
(b*b+c*c==a*a))//罗列直角三角形的条件
{
printf("可以构成直角三角形!\n");
}
else if(a==b || a==c || b==c)//罗列等腰三角形的条件
{
if(a==b && a==c)//罗列等边三角形的条件
{
printf("可以构成等边三角形!\n");
}
else
{
printf("可以构成等腰三角形!\n");
}
}
else
{
printf("可以构成普通三角形!\n");
}
}
else
{
printf("不能构成三角形!\n");
}

return 0;
}
/* 从小到大打印 */
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <stdio.h>

int main(void)
{
int x = 0, y = 0, z = 0;
int tmp = 0;

scanf("%d-%d-%d", &x, &y, &z);
//x获取三个值中的最小值 z获取三个值中的最大值

if(x > y)
{
tmp = x;
x = y;
y = tmp;
}

if(x > z)
{
tmp = x;
x = z;
z = tmp;
}

if(y > z)
{
tmp = y;
y = z;
z = tmp;
}

printf("%d<%d<%d\n", x, y, z);

return 0;
}
/* 输入相应的字符打印相应的语句(默认不区分大小写) 输入a,打印 钟薛高18块钱 输入b,打印 梦龙8块钱 输入c,打印 老冰棒1块钱 输入d,打印 雪莲0.5块钱 */
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <stdio.h>

int main(void)
{
char c = 0;//用来接收录入的字符

scanf("%c", &c);

if(c == 'A' || c == 'a')//if(c == 65 || c == 97)
{
printf("钟薛高18块钱\n");
}
else if(c == 'B' || c == 'b')
{
printf("梦龙8块钱\n");
}
else if(c == 'C' || c == 'c')
{
printf("老冰棒1块钱\n");
}
else if(c == 'D' || c == 'd')
{
printf("雪莲0.5块钱\n");
}
else
{
printf("录入失败,请重新录入!\n");
}

return 0;
}

分支语句

    switch(也有程序员会叫做开关语句)
1.switch case default都是C语言的关键字
2.switch语句的结构
    语句1;
    switch(变量)
    {
        case 整常量1: 语句2;
        case 整常量2: 语句3;
        default : 语句4;
    }
    语句5;
语句1->变量和整常量1是否相等->语句2->语句3->语句4->语句5->end
        |
        不相等->变量和整常量2是否相等->语句3->语句4->语句5->end
                    |
                    不相等->语句4->语句5->end
3.整常量就是整数或者可以表示为整数的内容(字符)
4.在同一个switch...case结构中整常量不能重复
5.在switch语句中加入break关键字
    语句1;
    switch(变量)
    {
        case 整常量1: 语句2; break;
        case 整常量2: 语句3; break;
        default : 语句4; break;
    }
    语句5;
语句1->变量和整常量1的判断->语句2->break->语句5->结束
        |
        (不相等)->变量和整常量2的判断->语句3->break->语句5->结束
                    |
                    (不相等)->语句4->break->语句5->结束
6.在switch语句中执行break会跳出switch语句
输入相应的字符打印相应的语句(默认不区分大小写)
输入a,打印	钟薛高18块钱
输入b,打印	梦龙8块钱
输入c,打印	老冰棒1块钱
输入d,打印	雪莲0.5块钱

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>

int main(void)
{
int i = 0;

scanf("%d", &i);

switch(i)
{
case 1 : printf("111111\n");
case 2 : printf("222222\n");
case 3 : printf("333333\n");
case 4 : printf("444444\n");
default: printf("ERROR!\n");
}

return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>

int main(void)
{
char i = 0;

scanf("%c", &i);

switch(i)
{
case 'a' : printf("1111111111111\n");
case 'b' : printf("2222222222222\n");
case 'c' : printf("3333333333333\n");
case 'd' : printf("4444444444444\n");
default: printf("ERROR!\n");
}

return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>

int main(void)
{
char i = 0;
char c = 'a';

scanf("%c", &i);

switch(i)
{
case 'b' : printf("1111111111111\n");
case 'b' : printf("2222222222222\n");
case 'c' : printf("3333333333333\n");
case 'd' : printf("4444444444444\n");
default: printf("ERROR!\n");
}

return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>

int main(void)
{
char c = 0;

scanf("%c", &c);

switch(c)
{
case 'a' :
case 'A' : printf("钟薛高18块钱\n"); break;
case 'b' :
case 'B' : printf("梦龙8块钱\n"); break;
case 'c' :
case 'C' : printf("老冰棒1块钱\n"); break;
case 'd' :
case 'D' : printf("雪莲0.5块钱\n"); break;
default : printf("ERROR\n"); break;
}

return 0;
}
/* 录入成绩 0 ~ 59 打印 不及格 60 ~ 69 打印 及格 70 ~ 79 打印 中 80 ~ 89 打印 良 90 ~ 100 打印 优秀 */
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>

int main(void)
{
int score = 0;

scanf("%d", &score);
//if error

switch(score / 10)
{
case 0..5 : printf("不及格!\n"); break;
case 6 : printf("及格!\n"); break;
case 7 : printf("中!\n"); break;
case 8 : printf("良!\n"); break;
case 9 :
case 10: printf("优秀!\n"); break;
}

return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>

int main(void)
{
char score = 0;

scanf("%c", &score);
//if error

switch(score)
{
case '0' ... '9': printf("Hello World!\n"); break;
case 'd' ... 'f': printf("Hello Beijing!\n"); break;
}

return 0;
}

循环语句

1.for是C语言的关键字
2.for循环的使用方法
语句1
for(循环变量的赋值; 循环变量的控制; 循环变量的变化)
{
    循环的语句
}
语句2
                    语句1
                        |
                        V
                循环变量的赋值
                        |
                        V
        |--------循环变量的控制<---------
        |				|			循环变量的变化
        V				V				^
        假				真				|		
        |		循环的语句------->-------
        |
        ----------------
                        |
                        V
                    语句2
在循环中不要改变循环变量的值否则会影响循环次数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>

int main(void)
{
int i = 0;//循环变量

for(i = 0; i < 5; i += 1)
{
printf("i = %d\n", i);
}

//for(i = 10; i < 5; i++)
//{
// printf("Hello World!\n");
//}

//for(i = 0; i < 5; i++)
//{
// printf("Hello World!\n");
//}

return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>

int main(void)
{
int i = 0;//循环变量

for(i = 0; i < 10; i++)
{
//printf("%d\n", i++);
printf("%d\n", ++i);
}

printf("==== i = %d\n", i);

return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
//打印0 ~ 100以内奇数
int main(void)
{
int i = 0;

for(i = 1; i < 100; i+=2)
{
printf("%d\n", i);
}

return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
//求1+2+3+...+100? 5050
int main(void)
{
int i = 0;
int sum = 0;

for(i = 1; i <= 100; i++)
{
sum += i;// sum = sum + i
}

printf("sum = %d\n", sum);

return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
//求水仙花数(把水仙花数打印出来)
//xyz == x*x*x + y*y*y + z*z*z
int main(void)
{
int i = 100;
int b = 0, s = 0, g = 0;

for(i = 100; i < 1000; i++)
{
b = i / 100;
s = i / 10 % 10;
g = i % 10;
if(i == (b*b*b) + (s*s*s) + (g*g*g))
printf("i = %d\n", i);
}

return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
//求水仙花数(把水仙花数打印出来)
//xyz == x*x*x + y*y*y + z*z*z
int main(void)
{
int i = 1;
int b = 0, s = 0, g = 0;

for(b = 1; b < 10; b++)
{
for(s = 0; s < 10; s++)
{
for(g = 0; g < 10; g++)
{
if((b*b*b)+(s*s*s)+(g*g*g)==b*100+s*10+g)
printf("%d%d%d\n",b,s,g);
}
}
}

return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>

int main(void)
{
int hour = 0, min = 0, sec = 0;
//1s = 1000ms = 1000000us = 1000000000ns
for(hour = 0; hour < 24; hour++)
{
for(min = 0; min < 60; min++)
{
for(sec = 0; sec < 60; sec++)
{
system("clear");
printf("%02d : %02d : %02d\n", hour,min,sec);
sleep(1);
}
}
}

return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
#include <unistd.h>

int main(void)
{
int i = 0;

for(i = 0; i < 5; i++)
{
printf("%d", i);
sleep(1);
}

return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>

int main(void)
{
int i = 0, j = 0;

for(i = 0; i < 4; i++)//管理行
{
for(j = 0; j < 5; j++)//管理列
{
printf("[%d %d]", i, j);
}
printf("\n");
}

return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>

int main(void)
{
int i = 0, j = 0;

for(i = 0; i < 4; i++)//管理行
{
for(j = 0; j < 5; j++)//管理列
{
printf("*");
}
printf("\n");
}

return 0;
}
/*
1
2
3
4
5
*
* *
* * *
* * * *
* * * * *
*/
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>

int main(void)
{
int i = 0, j = 0;

for(i = 1; i < 10; i++)//管理行
{
for(j = 1; j <= i; j++)//管理列
{
printf("%d X %d = %2d ", j, i, i * j);
}
printf("\n");
}

return 0;
}