c++ 结构体-结构体交换的时候为什么失败,不明白哪里错了

问题描述

结构体交换的时候为什么失败,不明白哪里错了
#include
using namespace std;
typedef struct student
{
int a;
}STU;
int main()
{
STU stu[10];
STU swap;
int ij;
for(i=0;i {
cin>>stu[i].a;
}
for(i=0;i<10;i++)
{
cout<<stu[i].a<<""t"";
}
for(i=0;i<9;i++)
{
for(j=i+1;j<10;j++)
{
if(stu[i].a < stu[j].a)
swap=stu[i];
stu[i]=stu[j];
stu[j]=swap;
}

}for(i=0;i<10;i++){    cout<<stu[i].a<<""t"";}return 0;

}

解决方案

if(stu[i].a < stu[j].a)这个后面要加上大括号,满足if的时候只会执行一句swap=stu[i];
而后面的两句每次都会执行

 #include <iostream>using namespace std;typedef struct student{    int a;}STU;int main(){    STU stu[10];    STU swap;    int ij;    for(i=0;i <10; i++){        cin>>stu[i].a;     }    for(i=0;i<10;i++)    {        cout<<stu[i].a<<""t"";    }    for(i=0;i<9;i++)    {        for(j=i+1;j<10;j++)        {            if(stu[i].a < stu[j].a)            {                swap=stu[i];                stu[i]=stu[j];                stu[j]=swap;            }        }    }    for(i=0;i<10;i++)    {        cout<<stu[i].a<<""t"";    }    return 0;}

解决方案二:
晚上看的时候无意间看到了,哭笑不得,不过还是多谢了。

时间: 2024-12-23 18:35:35

c++ 结构体-结构体交换的时候为什么失败,不明白哪里错了的相关文章

大小端模式对C语言的共用体结构有何影响

1.一些问题 问题1 #include "stdio.h" union { int i; char ch[2]; }key; main() { key.i=65*256+66; printf("%c\t%c\n",key.ch[0],key.ch[1]); } 答案是B      A:为什么不是A      B呢? 在前面的文章中我们已经测试过,X86体系结构的CPU是小端模式的.比如一个数0x1234,放在内存里按照内存地址从低往高实际上是低地址字节里放的是0x3

php 分支结构 条件结构 选择结构

php教程 分支结构 条件结构 选择结构 <?php /*  *    流程控制  *     *     一.顺序结构  *     二.分支结构--条件结构--选择结构  *       1.单路分支  *  //条件bool,true或false,> < == !- & || !  *  if(条件)  *   执行下面一条语句  *  if(条件)  *  {  *   代码段;  *   代码段;  *  }  *  *       2.双路分支  *         

Swift中的类class与结构体struct体学习笔记_Swift

一.引言Swift中的类与结构体十分相似,和Objective-C不同的事,Swift中的结构体不仅可以定义属性,也可以像类一样为其定义方法. Swift中的类与结构体有如下相似点: 1.定义属性来存储值. 2.定义函数来提供功能. 3.通过定义下标语法使用下标的方式取值. 4.定义构造方法来对其进行初始化. 5.通过扩展来在原始基础上添加功能. 6.通过协议来定义实现标准. 当然类和结构体也有许多不同点,下面这些功能是类独有的,结构体没有: 1.通过继承来创建类的子类. 2.在运行时允许对类的

《windows核心编程》–Windows内存体结构(二)

13.6页面保护属性     内存页面保护属性有 PAGE_NOACCESS.PAGE_READONLY.PAGE_READWRITE.PAGE_EXECUTE.PAGE_EXECUTE_READ.PAGE_EXECUTE_READWRITE.PAGE_WRITECOPY.PAGE_EXECUTE_WRITECOPY.这些保护分别表示什么http://127.0.0.1:47873/help/1-3788/ms.help?method=page&id=09839DB7-2118-4A7D-A70

《windows核心编程》–Windows内存体结构(一)

13.1 进程虚拟地址空间 每个进程都有自己的专有地址空间,对32位进程来说,这个地址空间的大小为4GB,这是因为32位指针可以表示从0x00000000-0xffffffff的任意值.对64位进程来说则可以表示0x0000000000000000 到0xffffffffffffffff之间任一值. 因为每一个进程都有自己的专有地址空间,当进程中的各线程运行时,它们只访问属于该进程的内存.线程即看不到其他进程内容空间,也无法访问它们. 进程A可以在位于它地址空间内的0x12345678地址处存储

c语言的结构体

什么是结构体? 简单的来说,结构体就是一个可以包含不同数据类型的一个结构,它是一种可以自己定义的数据类型,它的特点和数组主要有两点不同,首先结构体可以在一个结构中声明不同的数据类型,第二相同结构的结构体变量是可以相互赋值的,而数组是做不到的,因为数组是单一数据类型的数据集合,它本身不是数据类型(而结构体是),数组名称是常量指针,所以不可以做为左值进行运算,所以数组之间就不能通过数组名称相互复制了,即使数据类型和数组大小完全相同. 定义结构体使用struct修饰符,例如: struct test

C/C++中的结构体

什么是结构体? 简单的来说,结构体就是一个可以包含不同数据类型的一个结构,它是一种可以自己定义的数据类型,它的特点和数组主要有两点不同,首先结构体可以在一个结构中声明不同的数据类型,第二相同结构的结构体变量是可以相互赋值的,而数组是做不到的,因为数组是单一数据类型的数据集合,它本身不是数据类型(而结构体是),数组名称是常量指针,所以不可以做为左值进行运算,所以数组之间就不能通过数组名称相互复制了,即使数据类型和数组大小完全相同. 定义结构体使用struct修饰符,例如: struct test

【Go语言】【13】再谈GO语言的结构体

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://qingkechina.blog.51cto.com/5552198/1671842 本文从如下四个方面再领着大家认识结构体 匿名结构体和匿名成员的结构体 值传递和引用传递 再谈嵌套结构体 面向对象 1.匿名结构体和匿名成员的结构体 如上篇所述,一个结构体需要先声明,再初始化,最后把初始化后的结构体赋值给其它变量,例如: /*声明结构体*/ type employee struc

对嵌入式开发C语言结构体的一点总结

今天冬至居然不上班,公司的良心啊!这回有心情写博客和日志了,好了,废话不多说.直接看下文: 鉴于嵌入式开发过程中,C语言结构体的使用当然是必不可少.话说,基础什么的比你会更牛逼的算法更重要,基础不牢,地动山摇!!最本质的东西就是基础,不要学到越高级的东西却忘了最本质的东西,这样就失去了学习的意义. 接下来我将对结构体最基础的东西,如何初始化,如果打印信息做一个最基础的总结,当然结构体在内核中到处可见,随便一个可能都是你不认识的东西,归根到底,还是基础: 好了,直接上代码,我们对这个程序进行分析.