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


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

    6-1 输出星期名

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

    void ShowDayWeek(int dow);
    
    • 1

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

    星期值 	星期名
    0123456
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    裁判程序

    #include 
    
    
    void ShowDayWeek(int dow);
    
    
    int main()
    
    {
    
        int w;
    
        scanf("%d", &w);
    
        ShowDayWeek(w);
    
        putchar('\n');
    
        return 0;
    
    }
    
    
    /* 你提交的代码将被嵌在这里 */
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    输入样例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:
    			;
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30

    6-2 三整数最大值

    请编写函数,求三个整数的最大值。
    函数原型

    int IntMax3(int x, int y, int z);
    
    • 1

    说明:参数 x、y 和 z 为三个整数,函数值为三个整数中的最大值。
    裁判程序

    #include 
    
    
    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;
    
    }
    
    
    /* 你提交的代码将被嵌在这里 */
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    输入样例

    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;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    6-3 数据排序

    输入n(<10)个整数,用任一排序算法按从小到大排序后输出。
    函数接口定义:

    在这里描述函数接口。例如:

    void  fun(int a[], int  n);
    
    • 1

    裁判测试程序样例:

    在这里给出函数被调用进行测试的例子。例如:

    #include 
    
    
    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;
    
    }
    
    
    /* 请在这里填写答案 */
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30

    输入格式:先输入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;
    			}
    		}
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    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 );
    
    • 1

    其中n是多项式的阶数,a[]中存储系数,x是给定点。函数须返回多项式f(x)的值。
    裁判测试程序样例:

    #include 
    
    
    #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;
    
    }
    
    
    /* 你的代码将被嵌在这里 */
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33

    输入样例:

    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;
    	
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
  • 相关阅读:
    解决Map序列化成JSON字符串传给前端后属性乱序问题
    数据结构(高阶)—— 红黑树
    面试题:computed watch data filter
    Rust语言之多线程
    宗老师团队国家工程-园区GIS应用
    CS144(2023 Spring)Lab 1: stitching substrings into a byte stream
    Linux C/C++下IPv6 socket详解
    【死磕JVM】用Arthas排查JVM内存 真爽!我从小用到大
    面向对象【Package与Import】
    在 SwiftUI 中使用 Metal Shader
  • 原文地址:https://blog.csdn.net/2301_77485708/article/details/134517863