循环结构程序设计之习题

cnblogs 2024-10-23 08:09:00 阅读 81

输入两个正整数 m 和 n,求其最大公约数和最小公倍数

<code>

//输入两个正整数 m 和 n,求其最大公约数和最小公倍数

#include <stdio.h>

int main(void)

{

int m, n, iMax, iMin, iGcd;

scanf("%d %d", &m, &n);

if (m > n)

{

iMax = m;

iMin = n;

}

else

{

iMax = n;

iMin = m;

}

while (1)

{

int iRet = iMax % iMin;

if (0 == iRet)

{

iGcd = iMin;

break;

}

iMax = iMin;

iMin = iRet;

}

printf("最大公约数:%d\n最小公倍数:%d\n", iGcd, m * n / iGcd);

return 0;

}

在VS编译器内会报C4996错误,解决见下文:(下同)

C4996 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. - EricsT - 博客园 (cnblogs.com)

运行结果:

输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数

<code>

//输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数

#include <stdio.h>

int main(void)

{

char ch;

int iChar = 0, iSpace = 0, iNum = 0, iOther = 0;

while ('\n' != (ch = getchar()))

{

if (((ch >= 'A') && (ch <= 'Z')) || ((ch >= 'a') && (ch <= 'z')))

iChar++;

else if (' ' == ch)

iSpace++;

else if ((ch >= '0') && (ch <= '9'))

iNum++;

else

iOther++;

}

printf("字母:%d\n空格:%d\n数字:%d\n其他:%d\n", iChar, iSpace, iNum, iOther);

return 0;

}

运行结果:

<code>

#include <stdio.h>

#include <math.h>

int main(void)

{

int a = 2, n, sun, SUN = 0;

scanf("%d", &n);

for (int i = 0; i < n; i++)

{

sun = 0;

for (int j = 0; j <= i; j++)

sun += a * (int)pow(10, (double)j);

SUN += sun;

}

printf("%d\n", SUN);

return 0;

}

运行结果:

<code>

#include <stdio.h>

int main(void)

{

long long llSun = 0;

for (int i = 1; i < 21; i++)

{

long long llMul = 1;

for (int j = 1; j < i + 1; j++)

llMul *= j;

llSun += llMul;

}

printf("%lld\n", llSun);

return 0;

}

运行结果:

<code>

#include <stdio.h>

#include <math.h>

int main(void)

{

double dSun = 0;

for (int i = 1; i < 101; i++)

dSun += i;

for (int i = 1; i < 51; i++)

dSun += pow(i, 2.0);

for (int i = 1; i < 11; i++)

dSun += pow((double)i, -1);

printf("%lf\n", dSun);

return 0;

}

运行结果:

输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。例如:153是一个水仙花数,因为153 = 13+53+33

<code>

//输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。

//例如:153是一个水仙花数,因为153 = 1^3+5^3+3^3

#include <stdio.h>

#include <math.h>

int main(void)

{

for (int i = 100; i < 1000; i++)

{

int i1 = i / 100;

int i2 = (i % 100) / 10;

int i3 = (i % 100) % 10;

int iRet = pow(i1, 3.0) + pow(i2, 3.0) + pow(i3, 3.0);

if (i == iRet)

printf("%d\n", i);

}

return 0;

}

运行结果:

一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如,6的因子为1,2,3,而6=1+2+3,因此6是“完数”。编程序找出1000之内的所有完数,并按格式输出其因子:<code>6 its factors are 1,2,3

//一个数如果恰好等于它的因子之和,这个数就称为“完数”。

//例如,6的因子为1,2,3,而6=1+2+3,因此6是“完数”。

//编程序找出1000之内的所有完数,并按格式输出其因子:6 its factors are 1,2,3

#include <stdio.h>

int main(void)

{

for (int i = 2; i < 1001; i++)

{

int iSun = 0;

for (int j = 1; j < i; j++)

{

if (0 == i % j)

iSun += j;

}

if (i == iSun)

{

printf("%d its factors are ", i);

for (int j = 1; j < i; j++)

{

if (0 == i % j)

printf("%d,", j);

}

printf("\n", i);

}

}

return 0;

}

运行结果:

<code>

#include <stdio.h>

int main(void)

{

int iDown = 1, iUp = 2;

double dSun = 0;

for (int i = 0; i < 20; i++)

{

double dRet = iUp / (double)iDown;

dSun += dRet;

int iTemp = iDown;

iDown = iUp;

iUp += iTemp;

}

printf("%lf\n", dSun);

return 0;

}

运行结果:

一个球从100m高度自由落下,每次落地后反跳回原高度的一半,再落下,再反弹。求它在第10次落地时,共经过多少米,第10次反弹多高

<code>

//一个球从100m高度自由落下,每次落地后反跳回原高度的一半,再落下,再反弹。

//求它在第10次落地时,共经过多少米,第10次反弹多高

#include <stdio.h>

int main(void)

{

double dSun = 0, dH = 100;

for (int i = 0; i < 10; i++)

{

dSun += dH;

dH = 0.5 * dH;

if (9 != i)

dSun += dH;

}

printf("10次落地共 %lf 米\n第10次反弹 %lf 米\n", dSun, dH);

return 0;

}

运行结果:

猴子吃桃问题。猴子第1天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第2天早上又将剩下的桃子吃掉一半,又多吃一个。以后每天早上都吃了前一天剩下的一半零一个。到第十天早上再想吃时,就只剩下一个桃子了。求第一天共摘了多少个桃子

<code>

//猴子吃桃问题。

//猴子第1天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。

//第2天早上又将剩下的桃子吃掉一半,又多吃一个。

//以后每天早上都吃了前一天剩下的一半零一个。

//到第十天早上再想吃时,就只剩下一个桃子了。

//求第一天共摘了多少个桃子

#include <stdio.h>

int main(void)

{

int iSun = 1;

for (int i = 0; i < 9; i++)

iSun = (iSun + 1) * 2;

printf("%d\n", iSun);

return 0;

}

运行结果:

<code>

#include <stdio.h>

#include <math.h>

int main(void)

{

int a;

scanf("%d", &a);

double x0 = a, x1;

while (1)

{

x1 = 0.5 * (x0 + a / x0);

if (fabs(x1 - x0) < 1E-5)

break;

x0 = x1;

}

printf("%lf\n", x1);

return 0;

}

运行结果:



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。