8.17 课堂练习代码,循环与数组

时间:2023-01-01 22:01:33
/*
打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。
例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。
*/
#include
<stdio.h>

void main()
{
int num,ge,shi,bai;
for(num = 100; num < 1000; num++)
{
ge
= num % 10;
shi
= num / 10 % 10;
bai
= num / 100;

if(ge*ge*ge + shi*shi*shi + bai*bai*bai == num)
{
printf(
"%d是水仙花数\n",num);
}

}


}



/*
给一个不多于5位的正整数,要求:求它是几位数并且逆序打印出各位数字。
*/
#include
<stdio.h>
void main()
{
int input,i = 0;

printf(
"请输入一个不大多于5位的正整数:");
scanf(
"%d",&input);

while(input != 0)
{
printf(
"%d\n",input % 10);
i
+= 1;
input
/= 10;
}
printf(
"这是一个%d位正整数。\n",i);
}



/*
有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。
*/

#include
<stdio.h>

void main()
{
double sum = 0, zi = 2, mu = 1;
int i = 0;

for(; i < 20; i++)
{
sum
+= zi / mu;
zi
= zi + mu;
mu
= zi - mu;
}

printf(
"前20项之和是%lf\n",sum);

}



/*
任意输入一个正整数,求出其各位数字之和
*/

#include
<stdio.h>

void main()
{
int input,sum = 0;

printf(
"请输入一个正整数:");
scanf(
"%d",&input);

while(input != 0)
{
sum
+= input % 10;
input
/= 10;
}
printf(
"sum = %d\n",sum);

}



/*
一球从100米高度*落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,
共经过多少米?第10次反弹多高?
*/

#include
<stdio.h>

void main()
{
double hight = 100,sum;
int i = 0;

for(; i < 9; i++)
{
sum
+= hight;
hight
/= 2;
}

sum
+= 100;
printf(
"第10次落地就经过%lf米.\n",sum);
printf(
"第10次反弹%lf米。\n",hight / 2);
}


/*
假设一对耗子每个月都可以生一对小耗子。小耗子生长3个月后,从第4个月开始也就能够生小耗子。
问:假设所有的耗子都不死的话,那么20个月后一共有多少只耗子?
*/

#include
<stdio.h>

void main()
{
int old = 2,first = 0,second = 0,third = 0;
int i= 0;

for(;i < 20;i++)
{
old
= old + third;
third
= second;
second
= first;
first
= old;
}

printf(
"第20个月一共有%d只耗子!\n",old + first + second + third);


}



/*
打印一个5*5的乘法表
*/
#include
<stdio.h>

void main()
{
int i,j;

for(i = 1; i <= 5; i++)
{
for(j = 1; j <= i; j++ )
{
printf(
"%d * %d = %d\t",i,j,i*j);
}

printf(
"\n");
}


}




/*
打印出菱形。
*
***
*****
*******
*********
*******
*****
***
*
*/

#include
<stdio.h>

void main()
{
int i,j;

for(i = 0; i < 5; i++)
{
for(j = 0;j < 4 - i;j++)
{
printf(
" ");
}
for(j = 0; j < 2 * i + 1; j++)
{
printf(
"*");
}
printf(
"\n");
}

for(i = 0; i < 4; i++)
{
for(j = 0; j < i + 1; j++)
{
printf(
" ");
}
for(j = 0; j < 7 - 2 * i; j++)
{
printf(
"*");
}
printf(
"\n");

}

}




/*
打印出空心菱形。
*
* *
* *
* *
* *
* *
* *
* *
*
*/

#include
<stdio.h>

void main()
{
int i,j;
for(i = 0; i < 5; i++)
{
for(j = 0; j < 4 - i; j++)
{
printf(
" ");
}
printf(
"*");
for(j = 0; j < 2 * i - 1; j++)
{
printf(
" ");
}
if(i != 0)
{
printf(
"*");
}
printf(
"\n");
}


for(i = 0; i < 4; i++)
{
for(j = 0; j < i + 1; j++)
{
printf(
" ");
}
printf(
"*");
for(j = 0; j < 5 - 2 * i; j++)
{
printf(
" ");
}
if(i != 3)
{
printf(
"*");
}
printf(
"\n");
}
}






/*输入10个同学的成绩,输出及格的个数*/

#include
<stdio.h>

void main()
{
int i = 10;
int scores[10];
int num = 0;


for(i = 0; i < 10; i++)
{
printf(
"请输入第%d位同学的成绩:",i + 1);
scanf(
"%d",&scores[i]);
}

for(i = 0; i < 10; i++)
{
if(scores[i] >= 60)
{
num
++;
}
}
printf(
"%d\n",num);


/*
for(i = 0; i < 10; i++)
{
sum += scores[i];
}

printf("总分是:%d\n",sum);

scores[10] = 250;
printf("超出长度的部分:%d\n",scores[10]);


for(i = 0; i < 10; i++)
{
printf("%d\t",scores[i]);
}
*/





}

/*求数组中的最大,最小,和冒泡程序*/

#include
<stdio.h>

void main()
{
int array[10] = {0};
int i,j,max,min,tmp;
//输入
for(i = 0; i < 10; i++)
{
printf(
"请输入第%d个数:",i+1);
scanf(
"%d",&array[i]);
}

//最大最小
max = array[0];
min
= array[0];
for(i = 1; i < 10; i++)
{
if(max < array[i])
{
max
= array[i];
}
if(min > array[i])
{
min
= array[i];
}

}
printf(
"max = %d\n",max);
printf(
"min = %d\n",min);


//冒泡排序
for(i = 0; i < 10; i++)
{
for(j = 0; j < 9; j++)
{
if(array[j] > array[j + 1])
{
tmp
= array[j];
array[j]
= array[j + 1];
array[j
+ 1] = tmp;
}
}
}



//打印
for(i = 0; i < 10; i++)
{
printf(
"%5d",array[i]);
}


}


数组训练

#include
<stdio.h>

void main()
{
int scores[2][3];
int i,j,sum = 0;

for(i = 0; i < 2; i++)
{
for(j = 0; j < 3; j++)
{
printf(
"请输入第%d位同学第%d科的成绩:",i+1,j+1);
scanf(
"%d",&scores[i][j]);
}
}



for(i = 0; i < 2; i++)
{
sum
= 0;
for(j = 0; j < 3; j++)
{
sum
+= scores[i][j];
}

printf(
"第%d个人的平均分是:%lf\n",i+1,sum / 3.0);
}

for(j = 0; j < 3; j++)
{
sum
= 0;
for(i = 0; i < 2; i++)
{
sum
+= scores[i][j];
}
printf(
"第%d门课的平均分是:%lf\n",j + 1,sum / 2.0);
}






#include
<stdio.h>

void main()
{
int scores[5][6] = {0};
int i,j;

for(i = 0; i < 5; i++)
{
for(j = 0; j < 6; j++)
{
printf(
"请输入第%d组第%d位同学的成绩:",i+1,j+1);
scanf(
"%d",&scores[i][j]);
}
}

for(i = 0; i < 5; i++)
{
printf(
"第%d组成绩:",i+1);
for(j = 0; j < 6; j++)
{
printf(
"%4d",scores[i][j]);
}
printf(
"\n");
}



}