仅供参考,仅供参考,仅供参考!!!
1.指针变量作为函数参数问题
试题描述
在主函数中定义含有30个元素的一维浮点数数组a,各元素值由如下算式生成:
a[i] = 12 * sin(i * 2.3 + 5) (i = 0、1、2 …… 29)
编写通用函数maxmin求该组数中的最大值和最小值,并在主函数中输出所求出的最大值和最小值。小数点后必须保留2位有效数字(四舍五入),不足补零。
例如,假定最大值为34.555、最小值为2,则输出为:
max=34.56 min=2.00
注意:请严格遵守上述格式在主函数中输出,等号两边不要有空格,也不要输出额外信息(只能在maxmin函数中计算最大值及最小值,不得使用全局变量)。
输入
无输入
输出
按照题目要求输出最大值和最小值,最大值部分和最小值部分用一个空格隔开。小数点后必须保留2位有效数字(四舍五入),不足补零。
数据范围
输出为float范围的浮点数
题解(仅供参考)
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<string.h>
double max(double a,double b)
{
return a>=b?a:b;
}
double min(double a,double b)
{
return a>=b?b:a;
}
void maxmin(double a[])
{
double ansl=1000;
double ansr=-1000;
for(int i=0;i<30;++i)
{
double n=a[i];
ansr=max(ansr,n);
ansl=min(ansl,n);
}
printf("max=%.2f min=%.2f",ansr,ansl);
}
int main()
{
double a[100];
for(int i=0;i<30;++i)
{
a[i]=12*sin(i*2.3+5);
}
maxmin(a);
return 0;
}
2.宝宝右移数列
试题描述
由键盘上输入n个整数,这些数有正有负,也没有被排序。宝宝讨厌负数,想把这些数向右平移,移动规则是让数列中的最小值落在坐标轴原点上。
宝宝的方法是先找出数列中的最小值,然后将数列中的每个数都减去最小值,这样就实现数列向右平移了。
输入
输入包括两行:
第一行是n(1 <= n <= 1000)。
第二行是n个整数,邻近两数之间用一个空格隔开。
输出
输出减去最小值之后的n个整数,邻近两数之间用一个空格隔开。
输入示例
4
15 -20 -15 18
输出示例
35 0 5 38
数据范围
输入和输出均为int范围的整数
题解
#include <stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
int min(int a,int b)
{
return a>=b?b:a;
}
int main() {
//input
int n;
scanf("%d",&n);
int a[n];
memset(a,0,sizeof(a));
for(int i=0;i<n;++i)
{
scanf("%d",&a[i]);
}
//find the minimum value
//algorithm 1:straight forwards
int ans=10000;
for(int i=0;i<n;++i)
{
int b=a[i];
ans=min(ans,b);
}
//algorithm 2:
//for(int i=0;i<n;++i)
//{
// if(a[i]<=ans)
// ans=a[i];
//}
//minus the minimum
for(int i=0;i<n;++i)
{
printf("%d ",a[i]-ans);
}
return 0;
}
文章提供了两个C语言程序,第一个程序用于寻找一维浮点数数组中的最大值和最小值,并输出结果,遵循特定的格式要求。第二个程序实现了数列的右移操作,通过减去最小值使数列中的最小值变为0,从而达到平移的效果。
2368

被折叠的 条评论
为什么被折叠?



