作业:
1、打印1 - 100中不能被7整除又不包含7的数。
for (int i = 1;i < 101;i++){
if(i % 7 != 0 && i / 10 != 7 && i % 10 != 7){
printf("%2d ",i);
}
}
2、输入两个数,求最小公倍数和最大公约数。
int x = 0,y = 0,maxGY = 0,minGB = 0;
scanf("%d,%d",&x,&y);
for (int i = 1;i <= (x < y ? x : y);i++){
if(x % i == 0 && y % i == 0){
maxGY = i;
}
}
minGB = x * y / maxGY;
printf("最大公约数是%d,最小公倍数是%d\n",maxGY,minGB);
3、随机产生20个[10 , 100]的正整数,输出这些数以及他们中的最大数,第二大数。
int max = 0,max2 = 0;
for (int i = 0; i
< 20; i++) {
unsigned int k =
arc4random() % (100 - 10 + 1) +
10;
printf("%d
",k);
if (max < k)
{
max2 =
max;
max =
k ;
}else if (max2 <
k){
max2 =
k;
}
}
printf("最大值%d\n",max);
printf("二大值%d\n",max2);
4、编程将所有“水仙花数”打印出来,并打印其总个数。 “水仙花数”是一个 各个位立方之和等于该整数的三位数。
for(int i = 100;i < 1000;i++){
int gw = i % 10,sw = i /10 % 10,bw = i / 100;
if(gw*gw*gw+sw*sw*sw+bw*bw*bw == i){
printf("%d ",i);
}
}
(2)for (int i = 1;i < 10; i++)
{
for (int j = 0; j < 10; j++)
{
for (int
k = 0; k < 10; k++)
{
if (i*i*i + j*j*j + k*k*k == i * 100 + j * 10 + k)
{
printf("%d ",i * 100 + j * 10 +
k);
}
}
}
}
5、使用循环打印三角形?
*****
_***
__*
_***
*****
for (int i = 1; i < 3; i++)
{
for (int k = 1; k < i; k++)
{
printf("_");
}
for (int j = 5; j >= 2 * i -
1 ; j--) {
printf("*");
}
printf("\n");
}
for (int i = 1; i
< 4; i++) {
for (int k = 3; k
> i; k--)
{
printf("_");
}
for (int j = 1; j <= 2 * i -
1 ; j++) {
printf("*");
}
printf("\n");
}
打印 *
* *
* * *
for (int i = 0; i < 3; i++)
{
for (int k = 3; k > i + 1;
k--) {
printf(" ");
}
for (int j = 0; j < 2 * i +
1; j++) {
if (j % 2 == 0)
{
printf("*");
}else{
printf("
");
}
}
printf("\n");
}
6、输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。
char c = ‘\0‘;
int zimu = 0,kongge = 0,shuzi = 0,qita =
0;
while (c != ‘\n‘)
{
scanf("%c",&c);
if ((c >=
‘a‘ && c <= ‘z‘) || (c >= ‘A‘ && c <= ‘Z‘))
{
zimu
++;
}else if (c == ‘
‘){
kongge
++;
}else if (c >= ‘0‘
&& c <=
‘9‘){
shuzi ++;
}else{
qita ++;
}
}
printf("字母个数%d,空格个数%d,数字个数%d,其它字符个数%d\n",zimu,kongge,shuzi,qita);
7、求S(n) =
a+aa+aaa+aaaa+...+aa..a之值,其中a是一个数字,n表示a的位数例如:2+22+222+2222+22222(此时n=5),n和a都从键盘输入。
int n = 0,a = 0,an = 0,sn = 0;
printf("输入位数n,数字a:");
scanf("%d,%d",&n,&a);
for (int i = 0; i < n;
i++) {
an = an * 10 +
a;
sn += an;
if (i != n - 1)
{
printf("%d+",an);
}else{
printf("%d=",an);
}
}
printf("%d\n",sn);
8、求1!+2!+3!+4!+..+20!
(1)long sum = 0,an = 1;
for (int i = 1;i < 20 +
1;i++){
an *=
i;
sum +=
an;
}
printf("%ld\n",sum);
(2 long sum1 = 1,sum2 = 0;
for (int i = 1; i <= 20;
i++) {
sum1 =
1;
for (int j = 1; j < i + 1;
j++) {
sum1 *= j;
}
sum2 +=
sum1;
}
printf("%ld\n",sum2);
9、一个球从100m高度自由落下,每次落地后反跳回原来高度的一半,再落下,再反弹。求它在第10次落地时,共经过多少米?第10次反弹多高?
float height = 100,sum = 0;
for (int
i = 0; i < 10; i++) {
sum +=
height * 2;
height = height /
2;
}
sum -=
100;
printf("经过的路径%f,第十次反弹%f\n",sum,height);
10、猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,就只剩一个桃子了。求第一天共摘多少个桃子。
(1) int x = 1;
for (int i = 10; i > 1;
i--) {
x = (x + 1) *
2;
}
printf("第一次摘了%d个桃\n",x);
(2)int x = 1;
for (int i = 10; i > 0; i--)
{
printf("%d天剩%d个桃\n",i,x
);
x = (x + 1) *
2;
}
(3)int x = 1;
for (int i = 0; i < 10; i++)
{
printf("%d天剩%d个桃\n",10 - i,x
);
x = (x + 1) *
2;
}
原文:http://www.cnblogs.com/lxllanou/p/3580910.html