10.17学习记录

发布于:2022-10-17 ⋅ 阅读:(634) ⋅ 点赞:(0)

目录

一.做题错误

1.赋值表达式

 2.switch语句中表达式的类型

3,scanf返回值

4.求最大值

二.goto语句

三.数组和指针

数组名a:

数组名取地址&a:

四.最大公约数

方法1:从最小数开始每个数都试除

方法2.辗转相除法

五.素数求解的方法

方法1

方法2 

x 如果有(除了自身以外的)质因数,那肯定会小于等于 x/2,所以捏,他们就从 2 一直尝试到 x/2 即可。

方法3

最后优化

六.存储一个字符是用它的ASC||码值

七.对齐方法(打印两位数)

八.反向输出四位数

九.shutdown函数

自制关机倒代码

十.学会使用cplusplus和mdsn

strcpy

memset()

十一.终结


一.做题错误

1.赋值表达式

赋值表达式的返回值为赋值符号右边的值。

 2.switch语句中表达式的类型

只能是:整形和枚举类型

3,scanf返回值

scnaf读取一个整数返回1.读取两个返回2.读取错误或者读取到EOF返回0

保留小数点后两位打印就用.nf格式

4.求最大值

二.goto语句

但是某些场合下goto语句还是用得着的,最常见的用法就是终止程序在某些深度嵌套的结构的处理过

程。

例如:一次跳出两层或多层循环。

多层循环这种情况使用break是达不到目的的。它只能从最内层循环退出到上一层的循环。

goto语言真正适合的场景如下:

下面是使用goto语句的一个例子,然后使用循环的实现方式替换goto语句:

for(...)
    for(...)
   {
        for(...)
       {
            if(disaster)
                goto error;
       }
   }
    …
error:
 if(disaster)
         // 处理错误情况

三.数组和指针

数组名a:

数组名可以作为数组第一个元素的指针。我们由数组和指针的关系知道,a代表这个地址数值,它相当于一个指针,指向第一个元素(&a[0]),即指向数组的首地址。数组中的其他元素可以通过a的位移得到,此时的进阶是以数组中单个的元素类型为单位的,即a+i= & a[i]。

数组名取地址&a:

对于一个普通的变量b,&b是指用取地址符号取得变量b的存放地址;a在内存中没有分配空间,只对数组a的各个元素分配了存储空间,此处数组名字a显然不是普通的变量,&a也不代表所取a的存储地址。

&a在数值上等于&a[0],也等于a。此时,&a数值上等于整个数组的起始位置地址,含义上代表整个数组所占内存的大小,因为它的进阶单位是整个数组的字节长度,(&a + 1)等于的是数组结束之后的下一段的起始位置地址。

程序代码和运行的结果如上,可以看到其实数组名字、数组名字取地址、数组首元素取地址、指向首元素的指针值着四个变量的数值大小是相等的,都是0026F910

(8条消息) 解析:数组名a、数组名取地址&a、数组首地址&a[0]、数组指针*p_LoongTech的博客-CSDN博客_数组取地址

四.最大公约数

方法1:从最小数开始每个数都试除

int main()//给定两个数,求这两个数的最大公约数例如 18.24
{
int a = 0;
int b = 0;
int n = 0;
scanf("%d %d", &a, &b);
if (a < b)
{
int tmp = a;
a = b;
b = tmp;
}
for (n = b;n>1;n--)
{
if ((a % n == 0) && (b % n == 0))
{
printf("%d \n", n);
break;
}
}
return 0;
}

方法2.辗转相除法

原理:假设a>b,

1.a b n a与b取模为n 将b的值赋值给a n的值赋值给b 再次重新取模.直到n为0, 此时的b为最大公约数/

int main()//方法2辗转相除法
{
int a = 0;
int b = 0;
int n = 0;
scanf("%d %d", &a, &b);
if (a < b)
{
int tmp = a;
a = b;
b = tmp;
}
while ((n = a % b)!=0)
{
a = b;
b = n;

}
printf("%d", b);
return 0;
}

五.素数求解的方法

素数:就是质数,只能被1和本身整除的数

方法1

试除法:拿2~i-1的数字去试除i

}int main()//求100-200素数,方法1:试除法
{
int i = 0;
int count = 0;
for (i = 100;i < 200;i++)
{
int n = i - 1;
for (n;n >= 2;n--)
{
if (i % n == 0)
{
break;
}
}
if (n == 1)
{
printf("%d ", i);
count++;
}
}
printf("\n%d", count);
return 0;
}

方法2 

x 如果有(除了自身以外的)质因数,那肯定会小于等于 x/2,所以捏,他们就从 2 一直尝试到 x/2 即可。

#include<math.h>
int main()//素数方法2不需要试除从2到i-1的数,只要找到二分之i即可
{
int i = 0;
int count = 0;
for (i = 100;i <= 200;i++)
{
int n = 2;
for (n;n <= (i/2);n++)
{
if (i % n == 0)
{
break;
}
}
if (n> (i / 2))
{
printf("%d ", i);
count++;
}
}
printf("\n%d", count);
return 0;
}

方法3

只要从 2 一直尝试到√ x成对的因数,因为其中一个必然小于等于100的开平方

这里引用sqrt()开平方函数----引用头文件math.h\

#include<math.h>
int main()//素数方法,只要找到开平方i即可
{
int i = 0;
int count = 0;
for (i = 100;i <= 200;i++)
{
int n = 2;
for (n;n <= sqrt(i);n++)
{
if (i % n == 0)
{
break;
}
}
if (n > (sqrt(i))
{
printf("%d ", i);
count++;
}
}
printf("\n%d", count);
return 0;
}

最后优化

因为101开始.且偶数不可能是质数.直接+2即可

#include<math.h>
int main()//最后优化
{
int i = 0;
int count = 0;
for (i = 101;i <= 199;i+=2)
{
int n = 2;
for (n;n <= sqrt(i);n++)
{
if (i % n == 0)
{
break;
}
}
if (n > (sqrt(i))
{
printf("%d ", i);
count++;
}
}
printf("\n%d", count);
return 0;

(8条消息) 素数求解的n种境界_Tianzez的博客-CSDN博客_素数求解的n种境界

六.存储一个字符是用它的ASC||码值

七.对齐方法(打印两位数)

%2d,(右对齐) %-2d(左对齐) %d\t

八.反向输出四位数

int main()//反向输出四位数
{
int i=0;
scanf("%d", &i);
int n = 4;
int m = 0;
for (n = 1;n <= 4;n++)
{
m = i % 10;
printf("%d", m);
i = i / 10;
}
}

九.shutdown函数

shutdown -a 取消关机

shutdown -s 关机

shutdown -f 强行关闭应用程序

shutdown -m \\计算机名 控制远程计算机

shutdown -i 显示“远程关机”图形用户界面,但必须是Shutdown的第一个参数

shutdown -l 注销当前用户

shutdown -r 关机并重启

shutdown -s -t 时间 设置关机倒计时

shutdown -r -t 时间 设置重新启动倒计时

shutdown -h 休眠

自制关机倒代码

#include <stdio.h>
int main()
{
    char input[10] = {0};
    system("shutdown -s -t 60");
again:
    printf("电脑将在1分钟内关机,如果输入:我是猪,就取消关机!\n请输入:>");
    scanf("%s", input);
    if(0 == strcmp(input, "我是猪"))
   {
        system("shutdown -a");
   }
    else
   {
        goto again;
   }
    return 0;
}

十.学会使用cplusplus和mdsn

strcpy

举例

#include<string.h>
int main()
{
char arr1[] = "abcd";
char arr2[20] = "xxxxxx";
strcpy(arr2, arr1);
printf("%s\n", arr2);
return 0;

}

memset()

#include<string.h>
int main()//memset
{
char arr1[] = "i love u";
memset(arr1, 'x', 5);
printf("%s", arr1);
return 0;
}

十一.终结

今天一天的学习非常的疲惫,尤其是九点以后就无法集中注意力了,但是走了一下洗个澡就好很多了,今天从九点半学到十二点,两点半学到六点,七点学到十一点,总共10个小时坐在电脑前,确实有些疲惫,但是为了赶进度一定要拼拼拼

终于要学到函数了....

本文含有隐藏内容,请 开通VIP 后查看