当我在Visual Studio中使用Ctrl + F5
运行我的代码时出现此错误:
Debug Error !
Program: name of my program bla bla
Run-Time Check Failure#2-S
我的代码
// fig07_26.cpp : definisce il punto di ingresso dell'applicazione console.
// Programma di ordinamente multifunzione che fa uso dei puntatori a funzioni
#include <stdio.h>
#define SIZE 10
//Prototipi di funzione
void bubble(int work[], const int size, int(*compare) (int a, int b));
int ascending(int a, int b);
int descending(int a, int b);
int main()
{
int order; // 1 per ordinamento ascendente 2 per quello discendente
int counter; // contatore
// inizializza il vettore a
int a[SIZE] = { 2,5,3,6,1,5,8,0,6,1 };
printf("Enter 1 to sort ascending order\n" "Enter 2 to sort descending order: \n");
scanf_s("%d", &order);
printf("\nData items printed in original order");
for (counter = 1; counter < SIZE; counter++) {
printf("%5d", a[counter]);
}
// Ordina il vettore in ordine ascendente; passa la funzione ascending
// come argomento per specificare l'ordinamento ascendente
if (order == 1) {
bubble(a, SIZE, ascending);
printf("\nData items in ascending order");
}
else
{
bubble(a, SIZE, descending);
printf("\nData items in descending order");
}
// visualizza il vettore ordinato
for (counter = 0; counter < SIZE; counter++) {
printf("%5d", a[counter]);
}
printf("\n");
return 0;
}
/** Bubble sort multifunzione: Il parametro compare è un puntatore a una funzione di comparazione che determina il senso
dell'ordinamento **/
void bubble(int work[], const int size, int (*compare) (int a, int b)) {
int pass; //contatore dei passaggi
int count; //contatore dei confronti
void swap(int *element1Ptr, int *element2Ptr); // prototipo
// ciclo per controllare i passaggi
for (pass = 1; pass < size; pass++) {
// ciclo per controllare i confronti
for (count = 0; count < size; count++)
{
// Scambia gli elementi adicenti se non sono in ordine
if ( (*compare) (work[count], work[count + 1]) ) {
swap(&work[count], &work[count + 1]);
}
}
}
}
// Scambia i valori nelle locazioni di memoria puntate da element1Ptr e element2Ptr
void swap(int *element1Ptr, int *element2Ptr) {
int hold; // variabile temporanea
hold = *element1Ptr;
*element1Ptr = *element2Ptr;
*element2Ptr = hold;
}
// Determina se gli elementi non sono in ordine rispetto a un ordinamento ascendente
int ascending(int a, int b) {
return b < a; // effettua uno scambio se b è minore di a
}
// Determina se gli elementi sono in ordine rispetto a un ordinamento discendente
int descending(int a, int b) {
return b > a;
}