1. 程式人生 > >PAT|中國大學MOOC-翁愷-C語言程式設計習題集13-16

PAT|中國大學MOOC-翁愷-C語言程式設計習題集13-16


下面是一個完整的下三角九九口訣表:

1*1=1   
1*2=2   2*2=4   
1*3=3   2*3=6   3*3=9   
1*4=4   2*4=8   3*4=12  4*4=16  
1*5=5   2*5=10  3*5=15  4*5=20  5*5=25  
1*6=6   2*6=12  3*6=18  4*6=24  5*6=30  6*6=36  
1*7=7   2*7=14  3*7=21  4*7=28  5*7=35  6*7=42  7*7=49  
1*8=8   2*8=16  3*8=24  4*8=32  5*8=40  6*8=48  7*8=56  8*8=64  
1*9=9   2*9=18  3*9=27  4*9=36  5*9=45  6*9=54  7*9=63  8*9=72  9*9=81  

本題要求對任意給定的1位正整數N,輸出從1*1到N*N的部分口訣表。

輸入格式:

輸入在一行中給出一個正整數N(1<=N<=9)。

輸出格式:

輸出下三角N*N部分口訣表,其中等號右邊數字佔4位、左對齊。

輸入樣例:
4
輸出樣例:
1*1=1   
1*2=2   2*2=4   
1*3=3   2*3=6   3*3=9   
1*4=4   2*4=8   3*4=12  4*4=16 
 
#include <stdio.h>
int main()
{
int i, j,num;
scanf("%d", &num);
for (i = 1; i <= num; i++)
{
for (j = 1; j <= i; j++)
{
printf("%d*%d=%-4d", j, i, i*j);
}
printf("\n");
}
return 0;
}

04-3. 統計素數並求和(20)

本題要求統計給定整數M和N區間內素數的個數並對它們求和。

輸入格式:

輸入在一行中給出2個正整數M和N(1<=M<=N<=500)。

輸出格式:

在一行中順序輸出M和N區間內素數的個數以及它們的和,數字間以空格分隔。

輸入樣例:
10 31
輸出樣例:
7 143
#include <stdio.h>
int main()
{
int i, j, num, flag, sum,num1,num2,count;
sum = 0;
count = 0;
scanf("%d%d", &num1, &num2);
for (i = num1; i <= num2; i++)
{
flag = 0;
for (j = 2; j < i; j++)
{
if (i%j == 0)
{
flag = 1;
break;
}
}
if (flag == 0 && i != 1)
{
count++;
sum = sum + i;
}
}
printf("%d %d",count, sum);
return 0;
}

04-4. 猜數字遊戲(15)

猜數字遊戲是令系統隨機產生一個100以內的正整數,使用者輸入一個數對其進行猜測,需要你編寫程式自動對其與隨機產生的被猜數進行比較,並提示大了(“Too big”),還是小了(“Too small”),相等表示猜到了。如果猜到,則結束程式。程式還要求統計猜的次數,如果1次猜出該數,提示“Bingo!”;如果3次以內猜到該數,則提示“Lucky You!”;如果超過3次但是在N(>3)次以內(包括第N次)猜到該數,則提示“Good Guess!”;如果超過N次都沒有猜到,則提示“Game Over”,並結束程式。如果在到達N次之前,使用者輸入了一個負數,也輸出“Game Over”,並結束程式。

輸入格式:

輸入第一行中給出2個不超過100的正整數,分別是系統產生的隨機數、以及猜測的最大次數N。隨後每行給出一個使用者的輸入,直到出現負數為止。

輸出格式:

在一行中輸出每次猜測相應的結果,直到輸出猜對的結果或“Game Over”則結束。

輸入樣例:
58 4
70
50
56
58
60
-2
輸出樣例:
Too big
Too small
Too small
Good Guess!
#include <stdio.h>
int main()
{
int num1, num2, guess,i;
scanf("%d%d",&num1, &num2);
for (i = 1; i <= num2; i++)
{
scanf("%d", &guess);
if (guess < 0)
{
printf("Game Over\n");
break;
}
else
{
if (guess < num1)
{
printf("Too small\n");
}
else if (guess == num1)
{
break;
}
else
{
printf("Too big\n");
}
}
}
if (guess > 0)
{
if (i == 1)
{
printf("Bingo!\n");
}
else if (i > 1 && i <= 3)
{
printf("Lucky You!\n");
}
else if (i > 3 && i <= num2)
{
printf("Good Guess!\n");
}
else
{
printf("Game Over\n");
}
}
return 0;
}

05-0. 求序列前N項和(15)

時間限制400 ms 記憶體限制65536 kB 程式碼長度限制8000 B 判題程式Standard作者張彤彧(浙江大學)

本題要求編寫程式,計算序列 2/1+3/2+5/3+8/5+... 的前N項之和。注意該序列從第2項起,每一項的分子是前一項分子與分母的和,分母是前一項的分子。

輸入格式:

輸入在一行中給出一個正整數N。

輸出格式:

在一行中輸出部分和的值,精確到小數點後2位。題目保證計算結果不超過雙精度範圍。

輸入樣例:
20
輸出樣例:
32.66
#include <stdio.h>
int main()
{
int num,i;
double sum, z, x, y,s;
x = 2;
y = 1;
sum = 0;
scanf("%d", &num);
for (i = 1; i <= num; i++)
{
z = x / y;
s = x;
x = x + y;
y = s;
sum = sum + z;
}
printf("%.2lf", sum);
return 0;
}