【C/PTA】函数专项练习(一)

本文结合PTA专项练习带领读者掌握函数,刷题为主注释为辅,在代码中理解思路,其它不做过多叙述。

6-1 输出星期名

请编写函数,根据星期数输出对应的星期名。
函数原型

void ShowDayWeek(int dow);

说明:参数 dow 为星期数。若 dow 在 0 ~ 6 范围内,则输出“日”、“一”、“二”、…、“六”,否则不输出任何信息。

星期值 	星期名
0123456

裁判程序

#include <stdio.h>


void ShowDayWeek(int dow);


int main()

{
    
    

    int w;

    scanf("%d", &w);

    ShowDayWeek(w);

    putchar('\n');

    return 0;

}


/* 你提交的代码将被嵌在这里 */

输入样例1

3

输出样例1

输入样例2

扫描二维码关注公众号,回复: 17255679 查看本文章

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;
	
}

猜你喜欢

转载自blog.csdn.net/2301_77485708/article/details/134517863