欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

第9天学C语言(关于2个练习:例如在屏幕上输出乘法口诀表)+(猜数字小游戏)+(goto语句的一点)

最编程 2024-08-14 17:20:19
...

(2020.9.13)

练习8:求10个整数的最大值:

思路(仅仅要求求出最大值即可,不要求排序什么的)

int i = 0;

int arr[] = { 1,2,3,4,5,6,7,8,9,10 };

int max = arr[0];不能写成int max=0,因为如果元素全都是负数的话就无法输出10个元素中最大的,而是输出max

for (i = 0; i <= 10; i++)

{

if (max < arr[i])

{

max = arr[i];

}

}

printf("%d\n", max);

练习9:在屏幕上输出乘法口诀表

int i = 1;

for (i = 1; i <= 9; i++)

{

int j = 1;

for (j = 1; j <= i; j++)(如果等于忘记了,那么第一行就输不出来了)

{

printf("%d*%d=%-2d ", i, j, i * j);(要输出的要这么写!)(如果将%d改成%2d就会实现右对齐,这样看起来比较整齐,如果改成%-2d就实现右对齐)

}

                        printf("\n");(以i为标准换行)

}

----------------分割线-------------------

搭建猜数字小游戏:

1.电脑生成一个随机数

2.猜数字

时间戳:当前计算机时间-计算机的起始时间(1970.1.1.0:0:0)=(xxxx)秒

用时间戳来设置我们的起点

#include<stdio.h>

#include<string.h>

#include<stdlib.h>

#include<time.h>(time引用的头文件叫#include<time.h>)

void menu()

{

printf("***************************\n");

printf("**  1.play  **  0.exit   **\n");

printf("***************************\n");

}

void game()

{

int ret = 0;

ret = rand();(rand:rand函数生成随机数,这个函数在0~32767之间)

printf("%d\n", ret);

}

int main()

{

int input = 0;

srand((unsigned int)time(NULL));(NULL:空指针),srand()括号里面的值如果变化,系统的随机数也会变化,所以如果在括号里面可以传递一个与时间有关的值,这个值发生变化的话就可以生成真随机数(time_t*timer):xx*表示一种指针

通过转到定义查到time_t是一种long(长整型)

而srand要的就是一个整型srand((unsigned int)time());(我们要的是unsigned int,所以就把time返回的值转化为unsigned int)把这个随机数种子放在main函数里面,不要放在game函数里面,不然玩一次游戏设置一次,生成的随机数很近甚至相同

do(do...while结构:使得游戏最少进行一次)

{

menu();

printf("请选择:");

scanf_s("%d", &input);

switch (input)

{

case 1:

game();//猜数字游戏

break;

case 0:

printf("退出程序");

break;

default:

printf("选择错误");

break;

}

} while (input);(只要不是0就会循环下去)

return 0;

}

如何缩小生成随机数范围?

让我们生成的随机数模上100,而模上100之后生成的数范围在0~99之间,我们在+1即可

ret=rand()%100+1

----------------分割线-------------------

#include<stdio.h>

#include<string.h>

#include<stdlib.h>

#include<time.h>

void menu()

{

printf("***************************\n");

printf("**  1.play  **  0.exit   **\n");

printf("***************************\n");

}

void game()

{

int ret = 0;

int guess = 0;

ret = rand()%100+1;

while (1)

{

printf("请猜数字:");

scanf_s("%d", &guess);

if (guess>ret)

{

printf("很遗憾,宝贝你猜大了(^U^)ノ~YO\n");

}

else if (guess < ret)

{

printf("太惋惜辣,宝宝你猜小了(●'◡'●),加油!\n");

}

else

{

printf("恭喜宝贝猜对了!!!给你一个摸摸哒O(∩_∩)O\n");

break;

}

}

}

int main()

{

int input = 0;

srand((unsigned int)time(NULL));

do

{

menu();

printf("请选择:");

scanf_s("%d", &input);

switch (input)

{

case 1:

game();//猜数字游戏

break;

case 0:

printf("退出程序");

break;

default:

printf("选择错误");

break;

}

} while (input);

return 0;

}

----------------分割线-------------------

goto语句:跳到哪里去语句,到处都可以使用,但不建议,理论上没必要写,可以用其他代替,容易让代码执行流程打乱,逻辑混乱

例一:

int main()

{

again:

printf("hello bit!!!");

goto again;

return 0;

}

(这样就从底下跳到again,又重新往下进入死循环)

例二:

int main()

{

printf("hello bit!!!");

goto again;

        printf(hehe\n;)

again:

         printf("hello bit!!!");

return 0;

}

(这样就不会打印hehe了,跳过了)