请教一个C++问题,具体描述看补充,谢谢!
1、在C++中,向量如何赋予数组当做数组的值;2、一道题来的:定义数组a[5](自行给定初值),找出最大值;这道题麻烦给出注释,谢谢!...
1、在C++中,向量如何赋予数组当做数组的值;
2、一道题来的:定义数组a[5](自行给定初值),找出最大值;这道题麻烦给出注释,谢谢! 展开
2、一道题来的:定义数组a[5](自行给定初值),找出最大值;这道题麻烦给出注释,谢谢! 展开
2个回答
展开全部
int a[5]={2,3,1,4,6};
int i=0;//初始化i做循环变量使用
int val=0;//定义变量val用来接收最大值
for(i=0;i<5;i++){
if(a[i]<a[i+1}){
val=a[i+1];
}
else {val=a[i];}//进行循环比较,每次都把较大的数给val,循环结束后val的值就是最大值
int i=0;//初始化i做循环变量使用
int val=0;//定义变量val用来接收最大值
for(i=0;i<5;i++){
if(a[i]<a[i+1}){
val=a[i+1];
}
else {val=a[i];}//进行循环比较,每次都把较大的数给val,循环结束后val的值就是最大值
更多追问追答
追问
不好意思,如果改了数字,运行结果就不正确了,请问这个程序是不是出了问题?
追答
这个程序时需要中间变量val来进行比较后的交换:val=a[i+1];a[i+1]=a[i];a[i]=val;如果改的话,for循环里i的值要改成控制小于数组的长度。我写的仅仅是部分代码,执行的话需要你自己再写点。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
int main() {
vector<int> vec {1,2,3,4};
int arr[4];
auto vecp = vec.cbegin();
for (int *p = arr; p != &arr[4]; ++p) {
*p = *vecp++;
}
}
int main() {
int a[5] {1,2,3,4,5} //c++11 列表初始化
int largest = a[0];
for (const auto &number : a) {
if (number > largest)
largest = number; //迭代寻找最大值
}
return 0;
}
追问
请问vector是把向量的赋给数组作为它的值的意思吗? *p 代表的意思是什么?还有const auto 语句的作用是什么?我是初学者,有点看不懂,谢谢!
追答
第一段程序中,通过定义指向vector首元素的迭代器来实现一边遍历数组,一边为其赋值,一边递增迭代器。
int *p声明了一个int指针,并指向了数组的首元素。因为在大多数情况下(比如decltype除外)数组名称等同于它首元素的内存地址,故该声明还能写成 int *p = &arr[0] 这样也许更好理解。当该指针的内存地址变化到arr[4]的内存地址时停止执行。
const auto &number :a 是c++11的新特性。因为不需要改变number的值,所以最好把它变为底层const,即修饰number的const。auto是自动识别类型(c++11新特性),引用即是因为避免重复赋值。for (const auto &number : a)的作用是遍历a的元素,并把每次变化得到的元素附给number(或让number成为其引用)。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询