首页 > 其他分享 >课堂笔记1

课堂笔记1

时间:2024-02-28 20:34:17浏览次数:16  
标签:arr end int 笔记 char 公倍数 && 课堂

1、计算最小公倍数
我的第一想法:两个数的最小公倍数只能是两个数其中的一个、两个数的乘积、或者小于两个数的乘积。通过一个for循环(限制条件为:i = 0;i < 两个数的乘积),然后用if语句判断i是否能整除i且i小于两个数的乘积,是就输出i否则输出两个数的乘积。写出来发现结果是0,看了一下代码发现i不能重0开始因为0除以任何数都得0.我想到的解决办法是,最小公倍数的值肯定大于或等于两个数的最大值,通过int max = a > b ? a : b;语句算出两个数的最大值把循环条件改为(i = max; i < a * b; i++)即可。最后完整的代码如下:

include <stdio.h>

int main()
{
int a = 0;
int b = 0;
scanf("%d %d", &a, &b);
int mul = a * b;
int max = a > b ? a : b;
float i = max;
if (a > 0 && a < 100000 && b > 0 && b < 100000)
{
for (i = max; i < mul; i++)
{
if (i / a == 0 && i / b == 0 && i < mul)
{
printf("%d和%d的最小公倍数是%d", a, b, i);
break;
}
else
{
printf("%d和%d的最小公倍数是%d", a, b, mul);
break;
}
}
}
else
{
printf("输入有误");
}
return 0;
}
但是这代码的效率低,在课堂上学会了一种好的解决办法:
原理:
假设这两个数是5和7,若5乘1、2、3...(即i)除以7得0则得到5和7得最小公倍数

include <stdio.h>

int main()
{
int a = 0;
int b = 0;
scanf("%d %d", &a, &b);
int i = 1;
while (a * i % b)
{
i++;
}
printf("%d\n", a * i);
return 0;
}

2、字符倒置
这个没什么思路。。。
老师的解决办法如下:
1.先将整个字符串进行倒置;
2.然后将每一个单词倒置;
例如:i like beijing. >> .gniieb ekil i >> i like beijing

include <stdio.h>

void reverse(char* left, char* right)
{
while (left > right)
{
char tmp = *left;
*left = *right;
*right = tmp;
left++;
right--;
}
}

int main()
{
char arr[100] = { 0 };
gets(arr);

int len = strlen(arr);
reverse(arr, arr + len - 1);
char* star = arr;
while (*star)
{

    char* end = star;
    while (*end != ' ' && *end != '\0')
    {
        end++;
    }
    reverse(star, end - 1);
    if (*end != '\0')
    {
        end++;
    }
    star = end;
}
printf("%s", arr);
return 0;

}

课堂知识点小记:
long类型的数据在32位系统中占4个字节,在64位系统中占8个字节
sizeof(long) >= sizeof(int)
char是signed char还是unsigned char是未定义的,取决于编译器得实现;
二进制有三种表达方式:原码、反码、补码,正整数的三码合一,负数的反码与原码相比符号位不变其他的取反,补码=反码 + 1;
内存中存的是补码的二进制序列;
在计算机系统中数值一律用补码 来表示和存储,原因:使用补码,可以将符号位和数值统一处理;

标签:arr,end,int,笔记,char,公倍数,&&,课堂
From: https://www.cnblogs.com/lwd107/p/18041713

相关文章

  • 《Decoupling Representation and Classifier for Long-Tailed Recognition》阅读笔记
    论文标题《DecouplingRepresentationandClassifierforLong-TailedRecognition》用于长尾识别的解耦表示和分类器作者BingyiKang、SainingXie、MarcusRohrbach、ZhichengYan、AlbertGordo、JiashiFeng和YannisKalantidis来自FacebookAI和新加坡国立大学......
  • 王概凯阅读笔记
    (1)什么是架构:首先把架构的概念讨论明白,然后在对架构进行分析才显得清晰有意义。架构是人类发展过程中,由被动地去认识这个世界,变成主动的去认识,并以更高的效率去改造这个世界的方法。由不同角色来完成这些分工,并通过建立不同部分相互沟通的机制,使得这些部分能够有机的结合为一......
  • 《构建之法》读书笔记
    构建之法读书心得体会读完《构建之法》第一章后,我对软件开发中的各种问题和挑战有了更深入的理解。这本书以其独特的视角,清晰的分析和实用的建议,使我重新审视了软件开发的过程和方法。以下是我的主要心得体会:1.**理解复杂性**:书中强调了理解复杂性在软件开发中的重要性。我们不......
  • 阅读笔记2
    第4章乐高王国模块化和组件化是软件人员的梦想,谁都想把几个模块插到一起就可以完美的运行并完成任务,但现实却相当残酷,可以运行的模块通常不能与自己想写的程序配合工作,好的源代码由于商业利益也不太容易找到,程序员只能自己另起炉灶,搭建自己的模块,但结果还是一样,做出来的东西......
  • 阅读笔记3
    第8章白板上的即时贴非常敬佩写标准的人,你要用5年为计量标准的眼光看问题。得花上5年时间,才能得到你真正想要的有用之物。贴纸法应该是在敏捷开发里被重点推广的,方便标注哪些功能暂未开始,那些正在进行,哪些已经完成,项目各个小版本的功能特性都清清楚楚。  第9章方......
  • 《构建之法》读书笔记——什么是好的软件
    “什么是好的软件?一些同学认为,所谓好软件,就是软件没有缺陷(Bug),所谓软件工程,就是把软件中的Bug都消灭掉的过程。这的确是抓住了软件工程的一个要素。和软件打交道的专业人士都知道软件有“Bug”(缺陷),软件团队的很多人都整天和Bug打交道,Bug的多少可以直接衡量一个软件的开发效率、用户......
  • c++ primer ch2笔记
    ch22.1基本内置类型C++基本内置类型void算术类型整形(包括字符,bool)浮点型最小尺寸:整形尺寸大小受编译器影响,但是至少会保证一个最小尺寸,int最小尺寸2字节相互关系:int至少和一个short一样大无符号类型:unsignedint、unsignedlong类型转换规则:布......
  • 《大道至简》读书笔记第四章
    《大道至简》第四章着重强调简约之道。通过阅读这一章,我深刻体会到在软件工程实践中,简约是一种重要的美德,同时也是一种高效的工作方式。作者指出,软件工程实践者应当追求简单和直接的解决方案,避免过度复杂和繁琐的设计。简约的设计不仅能够提高代码的可读性和可维护性,还能够减少错......
  • 《大道至简》第六章读书笔记
    《大道至简》第六章深入探讨了软件工程实践者在追求简洁和高效的同时,如何保持和提升自身技术能力的思想。通过阅读这一章,我进一步认识到在软件工程领域,持续学习和技术提升是非常重要的。作者指出,软件工程实践者应当保持对新技术和新工具的持续学习和掌握,不断提升自己的技术能力和......
  • 《大道至简》第五章读书笔记
    《大道至简》第五章探讨了软件工程实践者在面对挑战和困难时如何应对的思想。通过阅读这一章,我深刻领悟到在软件开发过程中,坚持不懈、勇敢面对问题、勇于创新是取得成功的重要因素。作者强调了在面对困难和挑战时,软件工程师要保持乐观积极的态度,勇于面对问题并积极寻找解决方案。......