輸入兩個正整數 m 和 n,求其最大公約數和最小公倍數
//輸入兩個正整數 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)
執行結果:
輸入一行字元,分別統計出其中英文字母、空格、數字和其他字元的個數
//輸入一行字元,分別統計出其中英文字母、空格、數字和其他字元的個數
#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;
}
執行結果:
#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;
}
執行結果:
#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;
}
執行結果:
#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
//輸出所有的“水仙花數”,所謂“水仙花數”是指一個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之內的所有完數,並按格式輸出其因子: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;
}
執行結果:
#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次反彈多高
//一個球從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天早上又將剩下的桃子吃掉一半,又多吃一個。以後每天早上都吃了前一天剩下的一半零一個。到第十天早上再想吃時,就只剩下一個桃子了。求第一天共摘了多少個桃子
//猴子吃桃問題。
//猴子第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;
}
執行結果:
#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;
}
執行結果: