第十三周编程总结
6-1 使用函數計算兩點間的距離 (10 分)
本題要求實現一個函數,對給定平面任意兩點坐標(x?1??,y?1??)和(x?2??,y?2??),求這兩點之間的距離。
函數接口定義:
double dist( double x1, double y1, double x2, double y2 );其中用戶傳入的參數為平面上兩個點的坐標(x1, y1)和(x2, y2),函數dist應返回兩點間的距離。
裁判測試程序樣例:
#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)設計思路 1.自定義函數名稱 2.一個公式 3)本題調試過程碰到問題及解決辦法 無 4)運行結果截圖
6-2 符號函數 (10 分)
本題要求實現符號函數sign(x)。
函數接口定義:
int sign( int x );其中x是用戶傳入的整型參數。符號函數的定義為:若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)設計思路 1.自定義函數名稱 2.x分三種情況討論 3.返回x 3)本題調試過程碰到問題及解決辦法 無 4)運行結果截圖
6-7 使用函數計算兩個復數之積 (10 分)
若兩個復數分別為: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。
本題要求實現一個函數計算兩個復數之積。
函數接口定義:
double result_real, result_imag; void complex_prod( double x1, double y1, double x2, double y2 );其中用戶傳入的參數為兩個復數x1+y1iii和x2+y2iii;函數complex_prod應將計算結果的實部存放在全局變量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 )?? //定義求復數之積函數{
?result_real=x1*x2-y1*y2;??????? //c1*c2=(x1*x2-y1*y2)+(x1*y2+x2*y1)i
?result_imag=x1*y2+x2*y1;
} 2)設計思路 1.自定義函數名稱 2.公式 3.注意:最后不需要return 3)本題調試過程碰到問題及解決辦法 函數類型為void,表示為不返回結果 4)運行結果截圖
?
本題要求實現一個計算兩個數的最大公約數的簡單函數。
函數接口定義:
int gcd( int x, int y );其中x和y是兩個正整數,函數gcd應返回這兩個數的最大公約數。
裁判測試程序樣例:
#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)設計思路 1.自定義函數名稱 2.循環,從x遞減 3.判斷都能被x和y整除的數,跳出循環 4.返回i 3)本題調試過程碰到問題及解決辦法 無 4)運行結果截圖
6-11 使用函數輸出水仙花數 (20 分)
水仙花數是指一個N位正整數(N≥3),它的每個位上的數字的N次冪之和等于它本身。例如:153=1?3??+5?3??+3?3??。 本題要求編寫兩個函數,一個判斷給定整數是否水仙花數,另一個按從小到大的順序打印出給定區間(m,n)內所有的水仙花數。
函數接口定義:
int narcissistic( int number ); void PrintN( int m, int n );函數narcissistic判斷number是否為水仙花數,是則返回1,否則返回0。
函數PrintN則打印開區間(m, n)內所有的水仙花數,每個數字占一行。題目保證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的位數
?}?
?x=number; //初始化x的值 進過while函數后x變化
?while(x!=0)
?{?
??a=x%10;? //求余
??for(i=1;i<=count;i++)
??{
???sum=sum*a;? //余數累乘
??}
??b=sum+b;?? //累加
??x=x/10;?? //位數減1
??sum=1; //初始化i sum 的值,發現循環里面套循環 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)設計思路 1.自定義函數名稱 2.定義變量 3.計算位數 4.做循環,判斷每一位數的位數次方的和是否等于n 5.輸出 3)本題調試過程碰到問題及解決辦法 有些值做完計算后沒有初始化 4)運行結果截圖
轉載于:https://www.cnblogs.com/lqx0123/p/10123086.html
總結
- 上一篇: Beta 冲刺 一
- 下一篇: tomcat错误:The page yo