7-1 求組合數(15 分)
1.題目
本題要求編寫程序,根據公式Cnm=m!(n−m)!n!算出從n個不同元素中取出m個元素(m≤n)的組合數。
建議定義和調用函數fact(n)
計算n!
,其中n
的類型是int
,函數類型是double
。
輸入格式:
輸入在一行中給出兩個正整數m和n(m≤n),以空格分隔。
輸出格式:
按照格式“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.在一些概念方面還是容易出錯,並且不能夠自己獨立的很好的寫出代碼,屬於模仿別人代碼的階段。