第三第四天打卡

今日学习内容:链接: link

do while


  • 练习

1.计算n的阶乘

#include <stdio.h>
int main()
{
	int i = 0;
	int n = 0;
	int ret = 1;   //在计算阶乘时,初始值设为0是不合适的。(ret为复合赋值运算符)
	               //阶乘的定义是从1开始乘到给定的数,例如 5! = 5 * 4 * 3 * 2 * 1。
				   // 如果初始值设为0,那么任何数乘以0都会得到0,这样就无法正确计算阶乘了。(此处为ai解释
	scanf("%d", &n);
	for (i = 1; i <= n; i++)
	{
		ret *= i;
	}
	printf("%d\n", ret);

	return 0;

}

2.计算1~10的阶乘的和

int main(){
	{
		int i = 0;
		int n = 0;
		int ret = 1;
		int sum = 0;
		//i、n 和 ret,它们的定义和初始化顺序可以变换
		//但要注意变量在使用前必须被初始化 
		// 变量的作用域和生命周期不会因为定义顺序的改变而受到影响

		for (n = 1; n <= 10; n++)  //此循环为产生1~10得数字
		{
			ret = 1;  //计算n的阶乘之前,要把ret初始为一
			for (i = 1; i <= 10; i++)
			{
				ret *= i; //计算 ret*i 的值 
				//然后将乘积的结果赋值给 ret
			}
			sum += ret;
		}

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



		return 0;
	}
}      //效率较差(两层循环嵌套)




 //简单 法2:
#include <stdio.h>

int main()
{
	{
		int i = 0;
		int n = 0;
		int ret = 1;
		int sum = 0;

		for (n = 1; n <= 3; n++)
		{

			ret *= n;
			sum += ret;

		}

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

	}

	return 0;

 }

3.在一个有序数组中查找具体某个数字n

#include <stdio.h>

int main()
{
	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
	int k = 7;
	int sz = sizeof(arr) / sizeof(arr[0]);

	int left = 0;
	int right = sz - 1;

	while(left <= right)

	{
		int mid = (left + right) / 2;

		if (arr[mid] < k)
		{
			left = mid + 1;

		}

		else if (left > right)
		{
			right = mid - 1;

		}
		else
		{
			printf("找到啦! :%d\n", mid);
			break;
		}

	}

	if (left > right)
	{
		printf("找不到qwq\n");
	}
	return 0;
}
以上鹏哥截止⬆️

下来为翁恺:

1.判断一个数的位数
int main()
{
	int = x;
	int n = 0;
	 
	scanf("%d",&x);

	while (x > 0)
	{
		n++;
		x /= 10;

	}
	printf("%d", n);


	return 0;

}

 x(/10)          n(/10后的位数)
 352             0
 35              1
 3               2  
 0               3
则最后printf出的是n(3)
2.猜数
#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

 以上为为大括号下边两行代码所设头文件

int main()
{
	srand(time(0));
   //可得到每次运行都不一样的数
	//如a = 1234; %100一百取余后留下的是后两位 即34      %10则为对十取余  /10则为对十整除
	int number = rand() % 100 + 1;

	int count = 0;

	int a = 0;

	printf("我已经想好了一个1到100之间的数。");

	do
	{
		printf("请猜这个1到100之间的数:");
		scanf(" %d", &a);
		count++;
			if (a < number)
			{
				printf("你猜的数大了。");

			}
			else if (a < number)
			{
				printf("你猜的数小了。");
			}

	} while (a != number);
	
	
	printf("太好啦,你用%d次就猜到了答案。\n" , count);

	return 0;
}
3.计算平均值

有点难懂
法一:do while

int main()
{
	int number;
	int sum = 0;
	int count = 0;

	scanf("%d", &number);   //使用scanf来读number

	do
	{
		scanf("%d", number);
		if (number != -1)
		{
			sum += number;
			count++;
		}

	} while (number != -1);

	printf("%f\n", 1.0 * sum / count);

	return 0;

}        //这样麻烦罗嗦 要做两遍判断number的值

法二:用while循环 一次解决

int main()
{
	int number;
	int sum = 0;
	int count = 0;

	scanf("%d\n", &number);       //取地址易忘

	while (number != -1)
	{
		sum += count;
		count++;
		scanf("%d\n", &number);

	}

	printf("%f\n", 1.0 * sum/count);

	return 0;
}
4.整数求逆

这里实在有点难懂 眼里只有一串串代码😵‍💫
在这里插入图片描述

conclude这两天 :

早上起得还算早,大扫除了一下,收拾了房间,大概十点十一点左右开始学,学了鹏哥的两节do while 和一点作业讲解 还有翁恺老师的while 、do while循环 还有猜数,算平均数,整数求逆,还有一点for循环,感想如下:(开玩笑的) 在这里插入图片描述
就是不管哪个老师教都有点难理解 让我自己把每段代码是拿来干嘛的说出来我觉得我是真的说不出,这种感觉有点跟高中考前没复习一样难受,可能刚开始吧,这两天问ai搞懂了ret debug是啥,还有一些代码为什么要这样执行,这样执行有何意义之类的,翁恺老师讲得我觉得很好的一点是他先给出一个框架思路,然后给出一个算法,在这之前我还真有点不理解算法是啥意思,还以为是以后以后才会学到,我觉得下次我要开始用流程图了哈哈,虽然我还是嫌麻烦,但是尝试尝试把,今天又开发了一个思维导图的技能,虽然也捣鼓了半天哈哈还没写多少,但是也是向前迈步了。。
一般学完中午睡半个钟或者跟同学朋友聊会天,然后捣鼓一下电脑还有什么没被我开发的功能,下午起来简单复习一下代码,或者在家去楼顶看老爸种的菜,反正挺闲挺舒服的(搬个椅子上去吹吹风吃个雪糕看隔壁邻居种的花,感觉离老年生活也不远了)😂 晚上的安排就是看一两集动漫,看一个朋友推荐的电视剧,悬疑看多了有点烧脑,来点热血的剧调动一下情绪,还有奥运!国乒!看几个比赛给我激动得,比我高考出分还兴奋。。。这几天球友不在,流量告急,家里能看的书也看不了多少,手机电脑看多了属实有点无聊,明天打算继续这样早上学习中午睡觉下午复习 散步,晚上追剧 干活,真是太规律的一个安排了,有点老年生活的感觉了,挺好的!早点开学吧!还有录取通知书已经发货,激动地等待了😁

                                                                              2024.8.1
  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值