第十三周编程总结
6-1 使用函數(shù)計算兩點間的距離 (10 分)
本題要求實現(xiàn)一個函數(shù),對給定平面任意兩點坐標(biāo)(x?1??,y?1??)和(x?2??,y?2??),求這兩點之間的距離。
函數(shù)接口定義:
double dist( double x1, double y1, double x2, double y2 );其中用戶傳入的參數(shù)為平面上兩個點的坐標(biāo)(x1, y1)和(x2, y2),函數(shù)dist應(yīng)返回兩點間的距離。
裁判測試程序樣例:
#include <stdio.h> #include <math.h>double dist( double x1, double y1, double x2, double y2 );int main() { double x1, y1, x2, y2;scanf("%lf %lf %lf %lf", &x1, &y1, &x2, &y2);printf("dist = %.2f\n", dist(x1, y1, x2, y2));return 0; }/* 你的代碼將被嵌在這里 */輸入樣例:
10 10 200 100輸出樣例:
dist = 210.241)實驗代碼
double dist(double x1, double y1, double x2, double y2) {???
??? return sqrt(pow(x2-x1,2)+pow(y2-y1,2));
} 2)設(shè)計思路 1.自定義函數(shù)名稱 2.一個公式 3)本題調(diào)試過程碰到問題及解決辦法 無 4)運行結(jié)果截圖
6-2 符號函數(shù) (10 分)
本題要求實現(xiàn)符號函數(shù)sign(x)。
函數(shù)接口定義:
int sign( int x );其中x是用戶傳入的整型參數(shù)。符號函數(shù)的定義為:若x大于0,sign(x) = 1;若x等于0,sign(x) = 0;否則,sign(x) = ?1。
裁判測試程序樣例:
#include <stdio.h>int sign( int x );int main() {int x;scanf("%d", &x);printf("sign(%d) = %d\n", x, sign(x));return 0; }/* 你的代碼將被嵌在這里 */輸入樣例:
10輸出樣例:
sign(10) = 1 1)實驗代碼 int sign( int x ){
?if(x>0)
?x=1;
?else if(x==0)
?x=0;
?else
?x=-1;
?return x;
} 2)設(shè)計思路 1.自定義函數(shù)名稱 2.x分三種情況討論 3.返回x 3)本題調(diào)試過程碰到問題及解決辦法 無 4)運行結(jié)果截圖
6-7 使用函數(shù)計算兩個復(fù)數(shù)之積 (10 分)
若兩個復(fù)數(shù)分別為:c1=x1+y1ic_1=x_1 + y_1 ic?1??=x?1??+y?1??i和c2=x2+y2ic_2=x_2 + y_2 ic?2??=x?2??+y?2??i,則它們的乘積為 c1×c2=(x1x2?y1y2)+(x1y2+x2y1)ic_1 \times c_2 = (x_1 x_2 - y_1 y_2) + (x_1 y_2 + x_2 y_1)ic?1??×c?2??=(x?1??x?2???y?1??y?2??)+(x?1??y?2??+x?2??y?1??)i。
本題要求實現(xiàn)一個函數(shù)計算兩個復(fù)數(shù)之積。
函數(shù)接口定義:
double result_real, result_imag; void complex_prod( double x1, double y1, double x2, double y2 );其中用戶傳入的參數(shù)為兩個復(fù)數(shù)x1+y1iii和x2+y2iii;函數(shù)complex_prod應(yīng)將計算結(jié)果的實部存放在全局變量result_real中、虛部存放在全局變量result_imag中。
裁判測試程序樣例:
#include<stdio.h> double result_real, result_imag; void complex_prod( double x1, double y1, double x2, double y2 );int main(void) { double imag1, imag2, real1, real2; scanf("%lf %lf", &real1, &imag1); scanf("%lf %lf", &real2, &imag2); complex_prod(real1, imag1, real2, imag2); printf("product of complex is (%f)+(%f)i\n", result_real, result_imag); return 0; }/* 你的代碼將被嵌在這里 */輸入樣例:
1 2 -2 -3輸出樣例:
product of complex is (4.000000)+(-7.000000)i 1)實驗代碼 void complex_prod( double x1, double y1, double x2, double y2 )?? //定義求復(fù)數(shù)之積函數(shù){
?result_real=x1*x2-y1*y2;??????? //c1*c2=(x1*x2-y1*y2)+(x1*y2+x2*y1)i
?result_imag=x1*y2+x2*y1;
} 2)設(shè)計思路 1.自定義函數(shù)名稱 2.公式 3.注意:最后不需要return 3)本題調(diào)試過程碰到問題及解決辦法 函數(shù)類型為void,表示為不返回結(jié)果 4)運行結(jié)果截圖
?
本題要求實現(xiàn)一個計算兩個數(shù)的最大公約數(shù)的簡單函數(shù)。
函數(shù)接口定義:
int gcd( int x, int y );其中x和y是兩個正整數(shù),函數(shù)gcd應(yīng)返回這兩個數(shù)的最大公約數(shù)。
裁判測試程序樣例:
#include <stdio.h>int gcd( int x, int y );int main() {int x, y;scanf("%d %d", &x, &y);printf("%d\n", gcd(x, y));return 0; }/* 你的代碼將被嵌在這里 */輸入樣例:
32 72輸出樣例:
8 1)實驗代碼 int gcd( int x, int y ){
?int i;
?for(i=x;i>=1;i--)
?{
??if(x%i==0&&y%i==0)
???? break;
??? }
?return i;
} 2)設(shè)計思路 1.自定義函數(shù)名稱 2.循環(huán),從x遞減 3.判斷都能被x和y整除的數(shù),跳出循環(huán) 4.返回i 3)本題調(diào)試過程碰到問題及解決辦法 無 4)運行結(jié)果截圖
6-11 使用函數(shù)輸出水仙花數(shù) (20 分)
水仙花數(shù)是指一個N位正整數(shù)(N≥3),它的每個位上的數(shù)字的N次冪之和等于它本身。例如:153=1?3??+5?3??+3?3??。 本題要求編寫兩個函數(shù),一個判斷給定整數(shù)是否水仙花數(shù),另一個按從小到大的順序打印出給定區(qū)間(m,n)內(nèi)所有的水仙花數(shù)。
函數(shù)接口定義:
int narcissistic( int number ); void PrintN( int m, int n );函數(shù)narcissistic判斷number是否為水仙花數(shù),是則返回1,否則返回0。
函數(shù)PrintN則打印開區(qū)間(m, n)內(nèi)所有的水仙花數(shù),每個數(shù)字占一行。題目保證100≤m≤n≤10000。
裁判測試程序樣例:
#include <stdio.h>int narcissistic( int number ); void PrintN( int m, int n );int main() {int m, n;scanf("%d %d", &m, &n);if ( narcissistic(m) ) printf("%d is a narcissistic number\n", m);PrintN(m, n);if ( narcissistic(n) ) printf("%d is a narcissistic number\n", n);return 0; }/* 你的代碼將被嵌在這里 */輸入樣例:
153 400輸出樣例:
153 is a narcissistic number 370 371 1)實驗代碼 int narcissistic( int number ){?
?int x,count=0,i,sum=1,a,b=0;?
?x=number;
?while(x!=0)
?{?
??x=x/10;
??count++; //這里求n的位數(shù)
?}?
?x=number; //初始化x的值 進過while函數(shù)后x變化
?while(x!=0)
?{?
??a=x%10;? //求余
??for(i=1;i<=count;i++)
??{
???sum=sum*a;? //余數(shù)累乘
??}
??b=sum+b;?? //累加
??x=x/10;?? //位數(shù)減1
??sum=1; //初始化i sum 的值,發(fā)現(xiàn)循環(huán)里面套循環(huán) end的值會變的很大 sum也是
?}?
?if(b==number)
?{?
??return 1;
?}else
?{
??return 0;?
?}
} void PrintN( int m, int n )
{?
?int i;? //從m+1位開始
?for(i=m+1;i<n;i++)???? //同一個代碼 新建一個源文件以后就可以了
?{?????????????????????????????? //前面之所以使用x=number 是因為后面需要重置number的值;這里不需要重置 不用int M N
??if(narcissistic( i )==1)??? //滿足條件為真
???printf("%d\n",i);
?}
} 2)設(shè)計思路 1.自定義函數(shù)名稱 2.定義變量 3.計算位數(shù) 4.做循環(huán),判斷每一位數(shù)的位數(shù)次方的和是否等于n 5.輸出 3)本題調(diào)試過程碰到問題及解決辦法 有些值做完計算后沒有初始化 4)運行結(jié)果截圖
轉(zhuǎn)載于:https://www.cnblogs.com/lqx0123/p/10123086.html
總結(jié)
- 上一篇: Beta 冲刺 一
- 下一篇: tomcat错误:The page yo