#include <iostream> using namespace std; int m; void max(float a, float b) { // 获取最大值 m = a>b ? a : b; } int main(void) { max(3, 4); cout << m << endl; }
时间: 2023-11-27 11:51:59 浏览: 49
这段代码的问题在于,变量m的类型是int,而max函数中获取的最大值的类型是float,因此会出现类型转换错误。应该将变量m的类型改为float或者将max函数中获取的最大值的类型改为int。此外,建议在定义函数时加上返回类型。修改后的代码如下:
```
#include <iostream>
using namespace std;
float m;
float max(float a, float b) {
// 获取最大值
m = a>b ? a : b;
return m;
}
int main(void) {
cout << max(3, 4) << endl;
return 0;
}
```
相关问题
#include<iostream> #include<cstring> using namespace std; class String{ public: char Str[20]; friend istream &operator>>(istream &in, String &s); friend ostream &operator<<(ostream &out, String &s); }; istream &operator>>(istream &in,String &s){ cin>>s.Str; return in; } ostream &operator<<(ostream &out,String &s){ cout<<s.Str; return out; } template<class TNo, class TScore, int num>//TNo和TScore为参数化类型 class Student{ private: TNo StudentID; //参数化类型,存储姓名 TScore score[num]; //参数化类型数组,存储num门课程的分数 public: void Input();//数据的录入 TScore MaxScore(); //查找score的最大值并返回该值 void Update(TScore sscore,int i);//更新学生的第i门课程成绩为sscore void SelectSort(); //采用选择排序法对学生成绩进行升序排列 void Print(); //输出所有学生的信息 }; template<class TNo, class TScore, int num> void Student<TNo,TScore,num>::Input(){ for(int i=0;i<3;i++){ cin>>score[i]; } } template<class TNo, class TScore, int num> TScore Student<TNo,TScore,num>::MaxScore(){ TScore max=score[0]; for(int i=1;i<num;i++){ if(score[i]>max)max=score[i]; }return max; } template<class TNo, class TScore, int num> void Student<TNo,TScore,num>::Update(TScore sscore,int i) { cin>>i>>sscore; score[i-1]=sscore; } template<class TNo, class TScore, int num> void Student<TNo,TScore,num>::Print(){ cout<<MaxScore()<<endl; cout<<StudentID<<" "; for(int i=0;i<num;i++){ cout<<score[i]<<" "; } } template<class TNo, class TScore, int num> void Student<TNo,TScore,num>::SelectSort(){ for(int i=0;i<num-1;i++){ int minindex=i; for(int j=i+1;j<num;j++){ if(score[j]<score[minindex]) minindex=j; } if(minindex!=i){ double tmp=score[minindex]; score[minindex]=score[i]; score[i]=tmp; } } } int main(){ Student<String,float,3>student; student.Input(); double sscore;int i; student.Update(sscore,i); student.SelectSort(); student.Print(); return 0; }为什么更改分数输入不进去
在主函数中,您需要先输入更改的分数和对应的课程编号 i,然后再调用 `student.Update(sscore,i)` 函数来更新学生的分数。但是在主函数中,您没有先输入更改的分数和对应的课程编号 i,因此更改分数输入不进去。您可以尝试修改主函数如下:
```c++
int main(){
Student<String,float,3>student;
student.Input();
float sscore; int i;
cin >> sscore >> i; // 先输入更改的分数和对应的课程编号 i
student.Update(sscore,i);
student.SelectSort();
student.Print();
return 0;
}
```
这样就可以先输入更改的分数和对应的课程编号 i,再调用 `student.Update(sscore,i)` 函数来更新学生的分数了。
求一个数组的最大值,最小值,平均值,主函数调用输出
以下是一个简单的实现,包括一个函数来计算数组的最大值、最小值和平均值,并在主函数中调用它并输出结果:
```c++
#include <iostream>
using namespace std;
void calculate(int arr[], int size, int& max, int& min, float& avg) {
max = arr[0];
min = arr[0];
avg = 0;
for (int i = 0; i < size; i++) {
if (arr[i] > max) {
max = arr[i];
}
if (arr[i] < min) {
min = arr[i];
}
avg += arr[i];
}
avg /= size;
}
int main() {
int arr[] = {4, 8, 1, 3, 9, 5};
int size = sizeof(arr)/sizeof(arr[0]);
int max, min;
float avg;
calculate(arr, size, max, min, avg);
cout << "Max: " << max << endl;
cout << "Min: " << min << endl;
cout << "Average: " << avg << endl;
return 0;
}
```
输出结果:
```
Max: 9
Min: 1
Average: 5
```