实验7:指针

第1关:用指针法输入12个整数,然后按每行4个数输出

任务描述

题目描述:用指针法输入12个整数,然后按每行4个数输出 ####相关知识(略) ####编程要求 请仔细阅读右侧代码,结合相关知识,在Begin-End区域内进行代码补充。

输入

输入包含一行,有12个整数。

输出

按顺序,每行输出4个整数。

####测试说明

样例输入:

1 2 3 4 5 6 7 8 9 10 11 12

样例输出:

1 2 3 4

5 6 7 8

9 10 11 12

上答案:

#include<stdio.h>
int main(void)
{
    /*********Begin*********/
    int arr[12];
    int i;
    int j;
    for(i=0;i<12;i++)
    {
        scanf("%d",&arr[i]);
    }
    for (j = 1; j <= 12;j++)
    {
        
        if(j%4==0)
        {
            printf("%d",*(arr+j-1));
            printf("\n");
        }
        else
        {
            printf("%d ",*(arr+j-1));
        }
    }


    /*********End**********/


    return 0;
}

第2关:指针变量作为函数参数实现两变量交换值

任务描述

题目描述:对输入的两个整数ab,用指针变量作为函数参数,交换ab的值。

####输入

两个整数a b

####输出

输出用函数交换处理后的值a b

####样例输入

1 2

####样例输出

2 1

上答案:
 

#include<stdio.h>
#include<math.h>
int main(void)
{
	int a,b,c;
	scanf("%d%d",&a,&b);
	/*********Begin*********/
    c=a;
    a=b;
    b=c;
    printf("%d %d",a,b);

	/*********End**********/
    return 0;
}

第3关:报数

任务描述

题目描述:有n人围成一圈,顺序排号。从第1个人开始报数(从13报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的那位。

####相关知识(略)

####编程要求

请仔细阅读右侧代码,结合相关知识,在Begin-End区域内进行代码补充。

输入

初始人数n

输出

最后一人的初始编号

####测试说明

样例输入:

3

样例输出:

2

上答案:

#include<stdio.h>
int main(void)
{
    /*********Begin*********/
    int n,i,k=0;
    while(~scanf("%d",&n)){
        if(n==0) break;
        for(i=1;i<=n;i++)
        {
             k=(k+3)%i;
        }
        printf("%d\n",k+1);

    }

    /*********End**********/
    return 0;
}

第4关:输出若干个学生成绩中的最高分.要求用指针函数

任务描述

题目描述:读入n(1 <= n <= 1000)个学生的成绩,成绩都为整数,用指针函数求出若干个学生成绩的最高分。用数组名作为函数参数,指针作为函数返回值。

####相关知识(略)

####编程要求

请仔细阅读右侧代码,结合相关知识,在Begin-End区域内进行代码补充。

输入

第一行为整数n,代表学生的数量。

第二行为n个学生的成绩,n个整数之间用一个空格隔开。

输出

输出最高分,占一行。

####测试说明

样例输入:

5

80 90 85 95 91

样例输出:

95

上答案:
 

#include<stdio.h>
/*********Begin*********/
int *max(int *p, int n)
{
    int max=*p,*q=p;
    while(--n)
       if(*++p>max)
         max=*p,q=p;
         return q;
}
/*********End**********/
int main(void)
{
    int n,s[110];
    scanf("%d",&n);
    for(int i=0;i<n;i++)
        scanf("%d",&s[i]);
    int ans;
	/*********Begin*********/
ans=*max(s,n);

	/*********End**********/
    printf("%d",ans );
    return 0;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Galaxy*★

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值