求最大公约数,最小公倍数。
- 求最小数
- 从最小数开始循环到1
- 循环内整除
两个数求最大值最小值可以用条件运算符
max = (num1 > num2) ? num1: num2; min = (num1 > num2) ? num2: num1;
代码实现:(只有最大公约数,最小公倍数求法2:两数乘积除以最大公约数)
#include <stdio.h>
int main()
{
int i, min, max, num1, num2; printf("Please input two numbers:\n"); scanf("%d%d", &num1, &num2);
min = (num1 > num2) ? num2 : num1; for(i = min; i > 0; i--)
{
if(num1 % i == 0 && num2 % i == 0)
{
printf("最大公约数: %d\n", i); break;
}
}
return 0;
}
//电脑上.c移到虚拟机上保存报错[dos]xx
//解决方法:使用 set ff=unix 使用 vim 打开文件,然后再命令模式下输入:set ff=unix,之后保存,然后重新打开即可。
输入一个整数a,再输入两个整数p(p<32),v(0|1),将该整数a的p位设置为v,输出修改后的该整数的二进制表示.
#include<stdio.h> int main()
{
int a, p, v, i;
printf("please input: \n", a, p, v); scanf("%d%d%d", &a, &p, &v);
if(p >= 32 || v > 1 || v < 0 || p < 0)
{
printf("Error!\n"); return -1;
}
if(1 == v)
{
a = a | (1 << (p -1));
}
else if(0 == v)
{
a = a & ~(1 << (p-1));
}
for(i = 0; i < 32; i++)
{
printf("%d", (a & 0x80000000) >> 31); a = a << 1;
}
printf("\n");
return 0;
}
一维数组
int a[10]; 定义一个整形数组,数组名为a,有10个元素
C语言不允许对数组的大小作动态定义,即数组的大小不依赖于程序运行过程中变量的值
- k; a[k]; ✖不能用变量定义数组
- a[0] ✖数组大小为0没有意义
- b(2)(3) ✖不能用圆括号
遍历:挨个打印
#include<stdio.h> int main()
//int b[]; //未初始化的全局变
量为0
{
int i;
// int a[5]; //未初始化的局部变
量是辣鸡值
// int a[5] = {1, 2, 3, 4, 5};
// int a[5] = {1, 2}; //对部分元素初始化,其余为初始化元素为0
int a[] = {1, 2, 3, 4, 5};
for(i = 0; i < (sizeof(a) / sizeof(a[0])); i++) //sizeof(a)
/ sizeof(a[0])求数组的长度
{
printf("%d ", a[i]);
}
printf("%p\n", &a[0]); //首元素地址 单位是4字节printf("%p\n", a); //数组名 同时也是数组首地址
元素 单位是4字节
printf("%p\n", &a); //数组的地址 代表数组 单位是20字节
}