我正在使用microsoft visual studio 2012并尝试进行冒泡排序。这是我的代码:
#include "stdafx.h"
#include "String.h"
#include <iostream>
#include <string.h>
using namespace std;
int main()
{
int array[100], n, c, d, swap;
printf("enter numbers of elements\n");
scanf_s("%d",&n);
printf("enter %d integers\n", n);
for (c = 0; c < n; c++){
scanf_s("%d", array);
}
for (c = 0; c < (n - 1); c++)
{
for (d = 0; d < n - c - 1; d++)
{
if (array[d]>array[d + 1]){
swap = array[d];
array[d] = array[d + 1];
array[d + 1] = swap;
}
}
}
printf("sorted list in ascending order:\n");
for (c = 0; c < n; c++){
printf("%d\n", &array[c]);
}
getchar();
return 0;
}
首先,我不能让控制台停留在一个关键的条目上。 getchar()
似乎没有用,但我没有任何错误。另外,当我看到控制台一秒钟时,我可以说这些数字被列为&#34; -310892&#34;。我不知道为什么。
答案 0 :(得分:2)
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
int main(void)
{
int array[100],n,c,d,flag,swap;
printf("Enter the no. of elements\n");
scanf("%d",&n);
for(c=0;c<n;c++)
{
scanf("%d",&array[c]); // here you have to add & for assigning a address to variable in memory
}
for(c=0;c<(n-1);c++)
{
flag=0;
for(d=0;d<n-c-1;d++)
{
if(array[d]>array[d+1])
{
swap=array[d];
array[d]=array[d+1];
array[d+1]=swap;
flag=1;
}
}
if(flag==0)
break;
}
printf("sorted elements in ascending order:\n");
for(c=0;c<n;c++)
{
printf("%d\t",array[c]);// you want to print the element not its address so no need of &
}
getch();
return 0;}
答案 1 :(得分:0)
我修正了其他人提到的拼写错误并添加了system("pause")
。在VS 2010上为我工作得很好。没有访问VS 2012进行测试。这是你的代码:
#include <string.h>
#include <stdio.h>
int main()
{
int array[100], n, c, d, swap;
printf("enter numbers of elements\n");
scanf("%d",&n);
printf("enter %d integers\n", n);
for (c = 0; c < n; c++){
scanf("%d", &array[c]);
}
for (c = 0; c < (n - 1); c++)
{
for (d = 0; d < n - c - 1; d++)
{
if (array[d]>array[d + 1]){
swap = array[d];
array[d] = array[d + 1];
array[d + 1] = swap;
}
}
}
printf("sorted list in ascending order:\n");
for (c = 0; c < n; c++){
printf("%d\n", array[c]);
}
system("pause"); // <---- Added this!!!
return 0;
}
希望它也适合你。
答案 2 :(得分:0)
关于您的冒泡排序实施:
scanf_s
循环中的for
始终将数字读入数组的第一个位置。printf
循环中的for
需要一个整数,但是你提供了一个地址。为防止控制台消失,您可以将getchar()
替换为system("pause")
,但这不可移植。
纠正这些事情,泡泡排序对我有用:
#include "stdafx.h"
#include "String.h"
#include <iostream>
using namespace std;
#include <string.h>
int main() {
int array[100], n, c, d, swap;
printf("enter numbers of elements\n");
scanf_s("%d",&n);
printf("enter %d integers\n", n);
for (c = 0; c < n; c++) {
scanf_s("%d", &array[c]);
}
for (c = 0; c < (n - 1); c++) {
for (d = 0; d < n - c - 1; d++) {
if (array[d] > array[d + 1]) {
swap = array[d];
array[d] = array[d + 1];
array[d + 1] = swap;
}
}
}
printf("sorted list in ascending order:\n");
for (c = 0; c < n; c++){
printf("%d\n", array[c]);
}
system("pause");
return 0;
}