C語言 程式設計結構練習題2
1.【問題描述】 用整數1-7依次表示星期一至星期日。由鍵盤輸入一個整數,輸出對應的英文表示,如果輸入的整數在1~7之外,輸出“Error”資訊。
【樣例輸入1】1
【樣例輸出1】Monday
【樣例輸入2】7
【樣例輸出2】Sunday
【樣例輸入3】10
【樣例輸出3】Error
【樣例說明】本題輸出結束後無換行符。
#include <stdio.h>
int main()
{
int num;
scanf_s("%d", &num);
if (num < 1 || num>7)
printf( "Error");
else
{
switch (num)
{
case 1:printf("Monday"); break;
case 2:printf("Tuesday"); break;
case 3:printf("Wednesday"); break;
case 4:printf("Thursday"); break;
case 5:printf("Friday"); break;
case 6:printf("Saturday" ); break;
case 7:printf("Sunday"); break;
}
}
return 0;
}
2.【問題描述】 從鍵盤輸入三角形的三個邊長判斷能否構成三角形,如能構成三角形,則判斷是哪一種型別(等腰三角形isosceles triangle、等邊三角形equilateral triangle、直角三角形right triangle、任意三角形arbitrary triangle);否則輸出“not triangle”。
【輸入形式】輸入三個雙精度浮點數
【輸出形式】判斷輸出語句結束後跟換行符\n,所有輸出語句字元小寫。
【樣例輸入1】3.0 3.0 4.0
【樣例輸入2】3.0 3.0 3.0
【樣例輸出2】equilateral triangle
【樣例輸入3】1.0 3.0 6.0
【樣例輸出3】not triangle
#include <stdio.h>
int main()
{
double x,y,z;
scanf_s("%lf%lf%lf", &x, &y, &z);
if (x + y > z&&x + z > y&&y + z > x)
{
if (x == y && y == z)
printf("equilateral triangle\n");
else if (x == y || x == z || y == z)
printf("isocseles triangle\n");
else if (x*x+y*y==z*z||x*x+z*z==y*y||y*y+z*z==x*x)
printf("right triangle\n");
else
printf("arbitrary triangle\n");
}
else
printf("not triangle\n");
return 0;
}
3.【問題描述】 猴子吃桃。猴子第一天摘下若干桃子,當即吃了一半,還不過癮,又多吃了一個,第二天早上將剩下的桃子吃掉一半,又多吃了一個。以後每天早上都吃了前一天剩下的一半再加一個桃子。到第n天,只剩下一個桃子。求第一天共摘下多少桃子。
【輸入形式】輸入剩下一個桃子的天數
【輸出形式】輸出桃子的數量,輸出結束有換行符。
【樣例輸入1】6
【樣例輸出1】94
【樣例輸入2】10
【樣例輸出2】1534
#include <stdio.h>
int main()
{
int n,peach=1,i;
scanf_s("%d", &n);
for (i = 1; i < n; i++)
{
peach = 2 * (peach + 1);
}
printf("%d\n",peach);
return 0;
}
4.【問題描述】 求1~n項Fibonacci數列的數值。
【輸入形式】讀入正整數值n項的值。
【輸出形式】每行輸出5個數值,每個數值佔8位。輸出結束有換行符。
【樣例輸出】
#include <stdio.h>
int main()
{
long int a1=1,a2=1,an,n,i;
scanf_s("%d", &n);
printf("%8ld%8ld", a1, a2);
for (i = 3; i <= n; i++)
{
an = a1 + a2;
a1 = a2;
a2 = an;
printf("%8ld",an);
if (i % 5 == 0) printf("\n");
}
return 0;
}
5.【問題描述】 百錢買百雞。“雞翁一,值錢五;雞母一,值錢三;雞雛三,值錢一。百錢買百雞,問雞翁、母、雛各幾何?”
【輸出形式】輸出所有的解,每行輸出一組解。輸出結束有換行符。
【樣例輸出】
#include <stdio.h>
int main()
{
int cock,hen,chicken;
for (cock = 0; cock <= 20; cock++)
{
for (hen = 0; hen <= 33; hen++)
{
chicken = 100 - cock - hen;
if (15 * cock + 9 * hen + chicken == 300)
{
printf("cock=%d,hen=%d,chicken=%d\n",cock,hen,chicken);
}
}
}
return 0;
}
6.【問題描述】 一個數如果等於其每一個數字立方之和,則此數稱為阿姆斯特朗數。如407就是一個阿姆斯特朗數,因為:。要求輸出100~999間所有的阿姆斯特朗數。
【輸出形式】要求輸出100~999間所有的阿姆斯特朗數。每個數值佔6位。輸出結束無換行符。
【樣例輸出】 153 370 371 407
#include <stdio.h>
int main()
{
int i,s,t,digit;
for (i = 100; i <= 999; i++)
{
t = i;
s = 0;
while (t != 0)
{
digit = t % 10;
s += digit * digit*digit;
t = t / 10;
}
if (i == s) printf("%6d",i);
}
return 0;
}
7.【問題描述】3.2.13 一個數如果恰好等於它的因子之和,這個數就稱為“完數”。求1000以內的所有完數。
【輸出形式】1000以內的所有完數。每個數值佔6位。輸出結束無換行符。
【樣例輸出】 6 28 496
【樣例說明】完數 6=1+2+3
#include <stdio.h>
int main()
{
int i,j,s;
for (i = 1; i <= 1000; i++)
{
s = 0;
for (j = 1; j < i; j++)
{
if (i%j == 0)
{
s += j;
}
}
if (i == s) printf("%6d",i);
}
return 0;
}
8.【問題描述】 將一個正整數分解質因素。例如,輸入90,輸出90=2* 3* 3* 5。
【輸入形式】從鍵盤輸入一個整數。
【輸入輸出樣例1】(下劃線部分表示輸入)
Input an integer:90
90=2* 3* 3* 5
【輸入輸出樣例2】(下劃線部分表示輸入)
Input an integer:18
18=2* 3* 3
【樣例說明】
輸入提示符後無空格。
輸出語句的“=”兩邊無空格。輸出結束無換行符。
英文字母區分大小寫。必須嚴格按樣例輸入輸出。
#include <stdio.h>
int main()
{
int n,i;
printf("Input an integer:");
scanf_s("%d", &n);
printf("%d=", n);
for (i = 2; i <= n; i++)
{
while (n != i)
{
if (n%i == 0)
{
printf("%d*", i);
n = n / i;
}
else break;
}
}
printf("%d\n", n);
return 0;
}
9.【問題描述】列印圖形。
【樣例輸入】4
【樣例輸出】輸出結束有換行符。
#include <stdio.h>
int main()
{
int i, j, m;
scanf_s("%d", &m);
for (i = 1; i <= m; i++)
{
for (j = 1; j <= m - i; j++)
{
printf(" ");
}
for (j = 1; j <= 2 * i - 1; j++)
{
printf("*");
}
printf("\n");
}
for (i = 1; i < m; i++)
{
for (j = 1; j <= i; j++)
{
printf(" ");
}
for (j = 1; j <= 2 * (m - i) - 1; j++)
{
printf("*");
}
printf("\n");
}
return 0;
}
10.【問題描述】列印空心圖形
【樣例輸入】5
【樣例輸出】輸出結束沒有換行符。
【樣例說明】星號之間有一個空格
#include <stdio.h>
int main()
{
int n,i,j;
scanf_s("%d", &n);
for (i = 1; i <= n; i++)
{
if (i == 1)
{
for (j = 1; j <= n; j++)
{
printf("* ");
}
printf("\n");
}
else if (i == n)
{
for (j = 1; j < i; j++) printf(" ");
printf("*");
}
else
{
for (j = 1; j < i; j++) printf(" ");
printf("*");
for (j = 1; j <2 * (n - i); j++)printf(" ");
printf("*");
printf("\n");
}
}
return 0;
}