第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关:指针变量作为函数参数实现两变量交换值
任务描述
题目描述:对输入的两个整数a
,b
,用指针变量作为函数参数,交换a
和b
的值。
####输入
两个整数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
个人开始报数(从1
到3
报数),凡报到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;
}