PTA函數作業


7-1 求組合數(15 分)

1.題目

    本題要求編寫程序,根據公式Cnm​​=m!(nm)!n!​​算出從n個不同元素中取出m個元素(mn)的組合數。

建議定義和調用函數fact(n)計算n!,其中n的類型是int,函數類型是double

輸入格式:

輸入在一行中給出兩個正整數m和n(mn),以空格分隔。

輸出格式:

按照格式“result = 組合數計算結果”輸出。題目保證結果在double類型范圍內。

2.提交列表

3.設計思路(流程圖)

定義變量和子函數,輸入m,n,通過子函數求得新的y,m,n,最后由表達式輸出結果。

子函數

代碼如下

#include<stdio.h>
double fact(double z)
{
double i,a=1;
for(i=1;i<=z;i++)
a=a*i;
return a;
}
int main()
{
double x,y,m,n;
scanf("%lf %lf",&m,&n);
y=fact(n-m);
m=fact(m);
n=fact(n);
x=n/(m*y);
printf("result = %.0lf",x);
}

4.答案結果

7-3 求冪之和(15 分)

1.題目

本題要求編寫程序,計算sum=21​​+22​​+23​​++2n​​。可以調用pow函數求冪。

輸入格式:

輸入在一行中給出正整數n(≤10)。

輸出格式:

按照格式“result = 計算結果”輸出。

2.提交列表

3.設計思路(流程圖)

定義變量和子函數,循環求和,並輸出

子函數如下

代碼如下

#include<stdio.h>
#include<math.h>
int fact(int i);
main()
{
int i,j,k,sum=0;
scanf("%d",&i);
for(j=1;j<=i;j++){
k=pow(2,j);
sum+=k;
}
printf("result = %d",sum);
}
int fact(int i)
{
int s;
s=pow(2,i);
return s;
}

4.答案結果

7-10 判斷素數(10 分)

1.題目

本題的目標很簡單,就是判斷一個給定的正整數是否素數。

輸入格式:

輸入在第一行給出一個正整數N≤ 10),隨后N行,每行給出一個小於231​​的需要判斷的正整數。

輸出格式:

對每個需要判斷的正整數,如果它是素數,則在一行中輸出Yes,否則輸出No

2.提交結果

3.設計思路(流程圖)

先定義一個主函數,輸入a值,循環選擇判斷是否是素數

子函數

代碼如下

#include<stdio.h>
#include<math.h>
int main()
{
int judge(int n);
int a,n,i;
scanf("%d",&a);
for(i=0;i<a;i++){
scanf("%d",&n);
if(judge(n)){
printf("Yes\n");
}
else
printf("No\n");
}
}
int judge(int n){
int i;
if(n==1)
return 0;
for(i=2;i<=sqrt(n);i++){
if(n%i==0){
return 0;
}
}
return 1;
}

4.答案結果

 

二、同學互評

同學代碼(7.3)

 

 我的代碼

我的代碼相比較他的代碼更加的簡潔,思維簡單清晰,兩者的子函數表帶形式不一樣

都有各自的優缺點,我更喜歡自己的代碼。

四、本周學習總結
  1.本周你學會了什么?
   1.本周學會如何簡單的聲明一個函數並且調用函數;
   2.還有return0和return1的用法
   3.知道了如何講復雜的代碼化為一個一個子函數代碼 
  2.本周的內容,還有那些內容不會?
   1.在一些概念方面還是容易出錯,並且不能夠自己獨立的很好的寫出代碼,屬於模仿別人代碼的階段。

        

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM