//1. (**)随机产生20个[10 , 100]的正整数,输出这些数以及他们中的最大数
{
int max = 10, num;
printf("随机产生20个[10 , 100]的正整数:");
for (int i = 1; i <= 20; i++) {
num = arc4random() % (1000 - 10 + 1) + 10;
printf("%d ", num);
max = num > max ? num : max;
}
printf("\n最大数为:%d\n", max);
}
//2. (**)编程将所有“水仙花数”打印出来,并打印其总个数。 “水仙花数”是一个 各个位立方之和等于该整数的三位数。
{
int count, a, b, c;
for (int i = 100; i < 1000; i++) {
a = i / 100;
b = i % 100/ 10;
c = i % 10;
if (i == a * a * a + b * b * b + c * c * c) {
printf("%d ",i);
}
count++;
}
}
//3. (**)已知abc+cba = 1333,其中a,b,c均为一位数,编程求出满足条件的a,b,c所有组合
{
printf( "a,b,c所有组合为:");
for (int a = 0; a < 10; a++) {
for (int b = 0; b < 10; b++) {
for (int c = 0; c < 10; c++) {
if(a * 100 + b * 10 + c + c * 100 + b * 10 + a == 1333){
printf("%d%d%d ",a ,b ,c);
}
}
}
}
printf("\n");
}
//4. (***)输入两个数,求最大公约数和最小公倍数。(用两种方法:辗转相除法和普通方法)
//求最大公约数,辗转相除法:
{
int i, j, a, b, count, m;
printf("请输入两个数:");
scanf("%d%d",&a,&b);
i = a;
j = b;
while (i % j != 0) {
m = i % j;
i = j;
j = m;
count++;
}
printf("最大公约数为:%d,计算次数为:%d。\n", j, count);
printf("最小公倍数为:%d\n",a * b / j);
}
//普通方法:
{
int a, b, i;
printf("请输入两个数:");
scanf("%d%d",&a,&b);
int num = a >= b ? b : a;
for ( i = num ; i > 0; i--) {
if (a % i == 0 && b % i == 0) {
printf("最大公约数为:%d\n",i);
break;
}
}
printf("最小公倍数为:%d\n",a * b / i);
}
//5. (***)一个球从100m高度自由落下,每次落地后反跳回原来高度的一半,再落下,再反弹。求它在第10次落地时,共经过多少米?第10次反弹多高
{
float high = 100,sum = 100;int down = 0;
while (down < 10) {
high = high / 2;
sum += high * 2;
down ++;
}
sum -= high*2;
printf("第10次落地时,共经过%.2f米\n",sum);
printf("第10次反弹高度为:%.2f米\n",high);
}
//6. (****)输入n,分别用*输出边长为n的实心菱形和空心菱形。
// 实心菱形:
{
int n, j, m, num;
printf("请输入一个数:");
scanf("%d",&n);
for (int count = 1; count <= 2 * n - 1; count++) {
num = (count > n ) ? (2 * n - count ): count ;
j = n - num;//空格
m = 2 * n - 1 - j * 2;//星星
for (int i = 1 ; i <= j ; i++ ) {
printf(" ");
}
for (int i = 1; i <= m; i++) {
printf("*");
}
printf("\n");
}
}
// 空心菱形:
{
int n, j, m, num ;
printf("请输入一个数:");
scanf("%d",&n);
for (int count = 1; count <= 2 * n - 1; count++) {
num = (count > n ) ? (2 * n - count): count ;
j = n - num;//空格
m = 2 * n - 1 - j * 2;//星星
for (int i = 1 ; i <= j ; i++ ) {
printf(" ");
}
for (int i = 1; i <= m; i++) {
if (i == 1 || i == m) {
printf("*");
}
else{
printf(" ");
}
}
printf("\n");
}
}