c语言-初学者关于输入任意数组进行冒泡排序

问题描述

初学者关于输入任意数组进行冒泡排序

#include

using namespace std;
int main()
{
int a[10],t,i,j;
cin>>a[10];

for(i=0;i
{
for(int j=i+1;j
{
if(a[i]>a[j])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}}
cout<<a[i]<<ends;
}

     return 0;
 }

 为什么编译之后会显示停止工作 我觉得是cin>>a[10]那儿错了  但不知道怎么改

解决方案

数组a空间大小为10,分别为a[0],a[1],a[2]......a[9], cin>>a[10] 这句的意思是从控制台输入一个值给a[10], 这就造成内存的非法访问了,因为a[10]不属于数组a。
刚学的话建议从基本语法开始学习,否则一个程序的每一句代码都可能是一个疑惑。对于数组如何赋值最简单的就是定义变量的时候直接赋值,例如:
int a[10] = {1,3,2,6,8,4,5,7,10,9};

解决方案二:

原因分析:
数组的下标从0开始, 数组a,元素有效范围为a[0]~a[9], a[10]下标越界,所以会程序停止工作。

解决办法:
去掉原来的 cin >> a[10]语句,改成下面的for语句
for (int i = 0; i < 10; i++)
{
std::cin >> a[i];
}

解决方案三:

输入那里改为:
for(i=0;i
cin>>a[i];

解决方案四:

数组a[10]怎么可以输入,,,内存非法

时间: 2024-12-30 14:51:18

c语言-初学者关于输入任意数组进行冒泡排序的相关文章

turbo c语言中一次性输入一个数组

问题描述 turbo c语言中一次性输入一个数组 请问turbo c语言中能不能一次性输入一个数组,是不是要用循环?没有学过循环怎么解决? 解决方案 那就学循环呗 比如 int arr[10]; for (int i = 0; i < 10; i++) scanf("%d", arr[i]);

&amp;amp;lt;C++&amp;amp;gt;事先不知道有多少个字符,用户输入任意个字符放入动态字符数组中。

问题描述 <C++>事先不知道有多少个字符,用户输入任意个字符放入动态字符数组中. 目前我的问题是如何在while循环中跳出,尝试了很多方法但是还是没用.求解. 解决方案 应该必须在while里面定义一个跳出的条件,比如输入一个换行符(按回车),或者某个特定字符和符号. 解决方案二: while(ch= getc() != '[特定字符]'){} 直到获取到特定字符为止,跳出循环. 解决方案三: https://code.csdn.net/snippets/480218 解决方案四: http

c语言 字符-从键盘输入任意一个字符串和一个字符,要求从该字符串中删除所有该字符。

问题描述 从键盘输入任意一个字符串和一个字符,要求从该字符串中删除所有该字符. 题目要求 Problem Description 从键盘输入任意一个字符串和一个字符,要求从该字符串中删除所有该字符. Input 输入有多组测试数据. 每组两行,第一行是字符串(字符串至少还有一个字符,不多于100个),第二行是一个字符 Output 每组输出一行,删除了所有应删除字符后的字符串 Sample Input ABCDE E ASD Dfg fhd D Sample Output ABCD AS fg

c语言-C语言初学者来求教,关于二分法

问题描述 C语言初学者来求教,关于二分法 原题是要求从一个有15个元素从大到小排列的数组中利用折半查找法查找到一个值x的位置,我写了如下代码,一运行就报错,求大神指正 在此谢过了! #include <stdio.h> main() { int num[15]={15,14,13,12,11,10,9,8,7,6,5,4,3,2,1}; int m=0,n=14,x,p,q; printf("请输入欲定位的数x "); scanf("%d",x); wh

c++-非常简单C++问题:输入任意个实数(10~100个),计算平均值,升序输出所有数(包括平均值在内)

问题描述 非常简单C++问题:输入任意个实数(10-100个),计算平均值,升序输出所有数(包括平均值在内) 我突然发现自己并不知道如何计算一个数组已经被赋值过的元素个数,求教. 解决方案 这个问题涉及数组大小的判定,数组元素排序. 排序是有现成的方法的,比如快速排序,归并排序,直接拿来用就行. 而你所说的无法判定已输入的元素个数,这个问题解决起来也很简单: while(1) { scanf("%d",&x); if (x != END_NUM) { //设定一个End值,当输

字符串-[c语言]关于 scanf() 和 char数组 的小实验的问题

问题描述 [c语言]关于 scanf() 和 char数组 的小实验的问题 写了三个小的几乎一样的test代码,但是输出却不同,不明白为什么,求大神指点.全部代码如下:#include void sub1(void); int main(){ /*test1*/ sub1(); /*test2 */char w0[2]={'a''a'}; char * pc0 = w0; printf("" w1 = %s""w0); /*wrong*/printf("&

C语言,寻找二维数组鞍点,代码个人测试正确, 但是wrong answer, 求大神指点

问题描述 C语言,寻找二维数组鞍点,代码个人测试正确, 但是wrong answer, 求大神指点 Description 给定一个海拔平面图,相当于一个二维数组,数组的每个元素表示一个点的海拔高度.请判断该图中是否存在鞍点,如果存在,则输出该鞍点的位置,即行.列坐标. 本题规定鞍点的定义为:该点的值在它所在的那行中是唯一最大的,且该点的值在它所在的那列中是唯一最小的. Input 输入有多个测试用例,如果把每个测试用例看作一个"块",那么,在一个"块"中: 第一行

c++-初学者求教,关于数组分配内存的问题

问题描述 初学者求教,关于数组分配内存的问题 在c++中对于string这样的类类型,因为字符长度可变,在数组中怎样分配内存空间??? 解决方案 存的是string的指针,他只想实际字符串地址 解决方案二: 字符串分配内存,一般可以用动态分配.但是还要看你的具体要求 解决方案三: string是长度固定的,怎么叫可变? 字符串的相加.赋值等等都会产生一个新的字符串对象. 解决方案四: 动态分配,当空间不够了,就分配一块更大的空间,拷贝内容,删除原来的空间 解决方案五: string类型是一个对字

c语言-一个C语言初学者的疑问

问题描述 一个C语言初学者的疑问 我是一个初学者,希望各位大神能帮我看看这串代码错在哪了,我用的IDE是VS2013,编写C语言代码,拜托了 #include #define N 3 struct Student { int num; char name[20]; float score[3]; float aver; }; int main() { void input(struct Student stu[]); struct Student max(struct Student stu[]