目录
x 如果有(除了自身以外的)质因数,那肯定会小于等于 x/2,所以捏,他们就从 2 一直尝试到 x/2 即可。
一.做题错误
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个小时坐在电脑前,确实有些疲惫,但是为了赶进度一定要拼拼拼
终于要学到函数了....