本文结合PTA专项练习带领读者掌握函数,刷题为主注释为辅,在代码中理解思路,其它不做过多叙述。
目录
- 6-1 输出星期名
 - 6-2 三整数最大值
 - 6-3 数据排序
 - 6-4 多项式求值
 
6-1 输出星期名
请编写函数,根据星期数输出对应的星期名。
 函数原型
void ShowDayWeek(int dow);
 
说明:参数 dow 为星期数。若 dow 在 0 ~ 6 范围内,则输出“日”、“一”、“二”、…、“六”,否则不输出任何信息。
星期值 	星期名
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 三整数最大值
请编写函数,求三个整数的最大值。
 函数原型
int IntMax3(int x, int y, int z);
 
说明:参数 x、y 和 z 为三个整数,函数值为三个整数中的最大值。
 裁判程序
#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;
	
}
                







![BUUCTF--[ACTF2020 新生赛]Include](https://img-blog.csdnimg.cn/a972a4d7f8d94215bc4f00f0991c4536.png)









