练习7-2 求最大值及其下标 (20 分)
本题要求编写程序,找出给定的n个数中的最大值及其对应的最小下标(下标从0开始)。
输入格式:
输入在第一行中给出一个正整数n(1<n≤10)。第二行输入n个整数,用空格分开。
输出格式:
在一行中输出最大值及最大值的最小下标,中间用一个空格分开。
输入样例:
6
2 8 10 1 9 10
输出样例:
10 2
#include <stdio.h>
#include <stdlib.h>
/*函数:找出数组中的最大值及其下标*/
void find_max(int *p,int n)
{
int i=0,max_f,sign_d;
max_f=*p;//假设数组的首位为最大值并记录下标
sign_d=0;
while(++i<n)//遍历数组
if(*(p+i)>max_f)//分别与最大值 max_f 比较
{
max_f=*(p+i);//找到更大值 赋给 max_f
sign_d=i;//记录最大值下标
}
printf("%d %d\n",max_f,sign_d);//输出结果
}
/*函数:获取 n 个值的数组*/
void input_sz(int *p,int n)
{
printf("Input %d integer:\n",n);
int i,j;
for(i=0;i<n;i++)
{
scanf("%d",&j);
*(p+i)=j;
}
}
int main(int argc, char *argv[]) {
int n;
printf("input a positive integer: ");
scanf("%d",&n);//读入正整数 n
int a[n];//创建数组
input_sz(a,n);//调用函数
find_max(a,n);//调用函数
system("pause");
return 0;
}
练习7-3 将数组中的数逆序存放 (20 分)
本题要求编写程序,将给定的n个整数存入数组中,将数组中的这n个数逆序存放,再按顺序输出数组中的元素。
输入格式:
输入在第一行中给出一个正整数n(1≤n≤10)。第二行输入n个整数,用空格分开。
输出格式:
在一行中输出这n个整数的处理结果,相邻数字中间用一个空格分开,行末不得有多余空格。
输入样例:
4
10 8 1 2
输出样例:
2 1 8 10
#include <stdio.h>
#include <stdlib.h>
/*函数:逆序*/
void Reverse_order(int *p,int n)
{
int i=0,temp;
while(i<n)//遍历数组,首尾逐一调换
{
temp=*(p+i);
*(p+i)=*(p+n-1);
*(p+n-1)=temp;
i++;//首部后移
n--;//尾部前移
}
}
/*函数:获取数组*/
void input_sz(int *p,int n)
{
//printf("Input %d integer:\n",n);
while(n-->0)//循环输入 n 项
scanf("%d",&*(p++));
}
/*函数:输出数组*/
void output_sz(int *p,int n)
{
while(n-->1)//循环输出前 n-1 项
printf("%d ",*(p++));
printf("%d",*p);//输出最后 1 项
printf("\n\n");//完成输出
}
int main(int argc, char *argv[])
{
//printf("input a positive integer: ");
int n;
scanf("%d",&n);//读入正整数 n
int a[n];//创建数组
input_sz(a,n);//调用函数
Reverse_order(a,n);//调用函数
output_sz(a,n);//调用函数
system("pause");
return 0;
}
练习7-4 找出不是两个数组共有的元素 (20 分)
给定两个整型数组,本题要求找出不是两者共有的元素。