c語言經典50題?題目:輸入兩個正整數m和n,求其最大公約數和最小公倍數,下面我們就來聊聊關于c語言經典50題?接下來我們就一起去了解一下吧!
題目:輸入兩個正整數m和n,求其最大公約數和最小公倍數。
程序分析:利用輾輾轉相除法。
(這裡的一行gcd本質上就是輾轉相除法,可以想想是不是等價的)
#include<cstdio>
int gcd(int x,int y){return x % y ? gcd(y,x%y) : y;}
// 一行gcd
int m,n;
int main()
{
scanf("%d%d",&m,&n);
printf("gcd is:%d\n",gcd(m,n));
printf("lcm is:%d\n",m*n / gcd(m,n));
// 結論
}
題目:輸入一行字符,分别統計出其中英文字母、空格、數字和其它字符的個數。
程序分析:利用while語句,條件為輸入的字符不為'\n
#include<cstdio>
int num_letter,num_space,num_digit,num_other;
//全局變量的初始值為0
int main()
{
char c;
while((c = getchar())!='\n')
{
// 可以想想怎麼把大寫與小寫寫在一個if中
if(c >= 'a' && c <='z')//小寫情況
num_letter ;
else if(c >= 'A' && c <= 'Z')//大寫情況
num_letter ;
else if(c == ' ')
num_space ;
else if(c >= '0' && c <= '9')
num_digit ;
else num_other ;
}
// 其實輸出不建議寫這麼長。。
printf("letter : %d, space : %d, digit : %d, other : %d",num_letter,num_space,num_digit,num_other);
}
題目:求s=a aa aaa aaaa aa...a的值,其中a是一個數字。
例如2 22 222 2222 22222(此時共有5個數相加),幾個數相加由鍵盤控制。
程序分析:關鍵是計算出每一項的值
#include<cstdio>
int x,n,ans,temp;
int main()
{
scanf("%d%d",&x,&n);
for(int i = 1; i <= n;i )
{
temp = x;
ans = temp;
x *= 10;
}
printf("ans is:%d",ans);
}
題目:一個數如果恰好等于它的因子之和,這個數就稱為“完數”。
例如6=1+2+3.編程找出1000以内的所有完數
#include<cstdio>
int main()
{
for(int x,i = 2;i < 1000;i )
{
x = 1;
//這裡雖然想法簡單,但是代碼難度增加了
for(int j = 2;j * j <= i;j )
{
if(j * j == i)
{
x = x j;
continue;//
}
if(i % j == 0)
x = x j i / j;
}
if(x == i)
printf("%d\n",i);
}
}
題目:一球從100米高度自由落下,每次落地後反跳回原高度的一半;再落下,求它在第10次落地時,共經過多少米?第10次反彈多
高?
程序分析:見下面注釋
#include<cstdio>
float H = 100.0,sum_ans = 100.0;// 第一次掉落的為100m
int main()
{
for(int i = 1;i <= 10;i )
{
H = H / 2.0;
sum_ans = H*2.0;
}
printf("total is %f\n", sum_ans);//299.804688
printf("the tenth is %f\n",H);//0.097656
}
//這種物理類問題建議先手推一下,這裡我甚至不能保證我的答案正确-.-
//Question:這裡使用double和float的輸出結果會不會不一樣,為什麼?
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!