接上次 C语言小练习(2)http://t.csdn.cn/1gyMK
上上次 C语言小练习(1)http://t.csdn.cn/Lw7jl
目录
//用for循环结构编程求输入的两个自然数的最大公约数
<1>更相减损法
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
int a = 0;
int b = 0;
scanf("%d %d", &a, &b);
int gcb = (a > b ? b: a);
for (; a % gcb || b % gcb;)//当a % gbc == 0 且 b % gbc == 0 时跳出循环
{
gcb--;
}
printf("%d\n", gcb);
return 0;
}
<2>辗转相除法
我不会……还是用上面比较好理解的方法吧……
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
int a = 18;
int b = 24;
int c = 0;
while(c=a%b)
{
a = b;
b = c;
}
printf("%d\n", b);
return 0;
}
//用for循环结构编程求输入的两个自然数的最小公倍数数
这个和上面求最小公约数道理是一样的,只需稍作改动即可~
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
int a = 0;
int b = 0;
scanf("%d %d", &a, &b);
int c = (a > b ? a : b);
for (; c % a || c % b;)//当 c % a ==0 && c % b == 0时跳出循环
{
c++;
}
printf("%d\n", c);
return 0;
}
//用编程打印星型图案
这题的思路还是比较简单的哈~
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
int i = 0;
for (i = 0; i < 4; i++)//前4行
{
int m = (3 + i);
int n = (7 - 2 * i);
for ( ;m>0 ; m--)
{
printf(" ");
}
for (;n>0; n--)
{
printf("*");
}
printf("\n");
}
for (i = 4; i < 7; i++)//后4行
{
int j = (9 - i);
int k = (2 * i - 5);
for (; j > 0; j--)
{
printf(" ");
}
for (; k > 0; k--)
{
printf("*");
}
printf("\n");
}
return 0;
}
//交换数组
思路:先把内容全部交换完,再分别将数组打印出来。不要想着交换一个打印一个,超级麻烦,容易走进死胡同(反正我没弄出来,唉……)。
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
int arr1[10] = { 0 };
int arr2[10] = { 0 };
int i = 0;
printf("请输入10个数字:>");
for (i = 0; i < 10; i++)//for循环输入多组数据
{
scanf("%d", &arr1[i]);//输入一个数就要空格,否则会看成一个数
} //理解不了问问自己,不空格的话,输入多位数时怎么办??
printf("请输入10个数字:>");
for (i = 0; i < 10; i++)
{
scanf("%d", &arr2[i]);
}
//交换
for (i = 0; i < 10; i++)//先全部交换完毕
{
int tmp = arr1[i];
arr1[i] = arr2[i];
arr2[i] = tmp;
}
for (i = 0; i < 10; i++)//再打印
{
printf("%d", arr1[i]);
}
printf("\n");
for (i = 0; i < 10; i++)
{
printf("%d", arr2[i]);
}
return 0;
}
//模拟用户登录
只允许输入三次密码,正确则成功,错误退出 。
因为不管次数有没有用尽,都要输入一次密码,所以使用do-while循环。我这写的算是很简单了,密码只能由数字组成,以后有能力会再优化的(有字母符号啥的),各位看官有什么建议也可以在评论区留言哦~
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
int passwordyes = 123456;
int password = 0;
int i = 3;
printf("用户登录系统,共三次机会\n");
do
{
printf("请输入密码:>");
scanf("%d", &password);
if (password == passwordyes)
{
printf("密码正确\n");
break;
}
else
printf("密码错误,还有%d次机会\n", i - 1);
i--;
if (i == 0)
{
printf("登陆失败\n");
}
} while (i > 0);
return 0;
}
没了,小练习(4)见!!