この記事では、PTA の特別な演習を組み合わせて、読者が関数をマスターできるようにガイドします。主要なトピックはコメントによって補足されているため、読者はコード内のアイデアを理解できます。その他の詳細については、あまり説明しません。
6-1 曜日名を出力する
週番号に応じて、対応する週名を出力する関数を作成してください。
関数プロトタイプ
void ShowDayWeek(int dow);
注: パラメータ dow は週の番号です。 dow が 0 ~ 6 の範囲にある場合は、「day」、「one」、「two」、...、「six」が出力され、それ以外の場合は情報は出力されません。
星期值 星期名
0 日
1 一
2 二
3 三
4 四
5 五
6 六
審判の手順
#include <stdio.h>
void ShowDayWeek(int dow);
int main()
{
int w;
scanf("%d", &w);
ShowDayWeek(w);
putchar('\n');
return 0;
}
/* 你提交的代码将被嵌在这里 */
入力サンプル1
3
出力サンプル1
三つ
入力サンプル2
9
出力サンプル2
//switch语句实现即可
void ShowDayWeek(int dow)
{
switch(dow)
{
case 0:
printf("日");
break;
case 1:
printf("一");
break;
case 2:
printf("二");
break;
case 3:
printf("三");
break;
case 4:
printf("四");
break;
case 5:
printf("五");
break;
case 6:
printf("六");
break;
default:
;
}
}
6-2 3つの整数の最大値
3 つの整数の最大値を見つける関数を作成してください。
関数プロトタイプ
int IntMax3(int x, int y, int z);
説明: パラメータ x、y、z は 3 つの整数であり、関数値は 3 つの整数の最大値です。
審判の手順
#include <stdio.h>
int IntMax3(int x, int y, int z);
int main()
{
int a, b, c, d;
scanf("%d%d%d", &a, &b, &c);
d = IntMax3(a, b, c);
printf("%d\n", d);
return 0;
}
/* 你提交的代码将被嵌在这里 */
入力サンプル
15 36 -27
出力サンプル
36
//嵌套即可
int IntMax3(int x,int y,int z)
{
int max=(x>y?x:y)>z?(x>y?x:y):z
return max;
}
6-3 データの並べ替え
n (<10) 個の整数を入力し、任意の並べ替えアルゴリズムを使用して小さい値から大きい値へ並べ替えて、出力します。
関数インターフェイスの定義:
ここでは関数インターフェイスについて説明します。例えば:
void fun(int a[], int n);
審判テスト手順の例:
以下は、テストのために呼び出される関数の例です。例えば:
#include <stdio.h>
void fun(int a[], int n);
int main()
{
int i,a[10],n;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
fun(a,n);
for(i=0;i<n;i++)
printf("%3d",a[i]);
printf("\n");
return 0;
}
/* 请在这里填写答案 */
入力形式: 最初に n 個の値を入力し、次に並べ替える n データを入力します。
入力例:
6
3 5 4 6 2 1
出力サンプル:
1 2 3 4 5 6
//冒泡排序即可
void fun(int a[],int n)
{
for(int i=0;i<n-1;i++)
{
for(int j=0;j<n-1-i;j++)
{
if(a[j]>a[j+1])
{
int t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
}
6-4 多項式の評価
この質問では、次数 n と係数 a[0] ... a[n] の多項式 f(x)=∑i=0~n (a[i]x^i) を計算する関数の実装が必要です。ポイント x 値。
関数インターフェースの定義:
double f( int n, double a[], double x );
ここで、n は多項式の次数、係数は a[] に格納され、x は指定された点です。関数は多項式 f(x) の値を返さなければなりません。
審判テスト手順の例:
#include <stdio.h>
#define MAXN 10
double f( int n, double a[], double x );
int main()
{
int n, i;
double a[MAXN], x;
scanf("%d %lf", &n, &x);
for ( i=0; i<=n; i++ )
scanf("%lf", &a[i]);
printf("%.1f\n", f(n, a, x));
return 0;
}
/* 你的代码将被嵌在这里 */
入力例:
2 1.1
1 2.5 -38.7
出力サンプル:
-43.1
double f(int n,double a[],double x)
{
double pow=1,sum=0;
for(int i=0;i<=n;i++)//先计算x的i次方
{
if(i==0)
pow=1;
else
pow*=x;
sum+=a[i]*pow;
}
return sum;
}