从键盘输入n(n<10)个整数,然后根据提示选择输入'A'或者'D',如果输入为'A'

从键盘输入n(n<10)个整数,然后根据提示选择输入’A’或者’D’,如果输入为’A’,将这6个数按从小到大的顺序输出;如果输入为’D’,则按从大到小的顺序输出。
求大神看看我这个程序哪里错了,ch没赋上值,
如果把
printf("Input A or D: ");
scanf("%s",&ch);
放在char ch; 之后,就能赋上值 程序可以运行了,但不是题目要求的输入顺序了
我的程序:
#include<stdio.h>
void swap2(int*,int *);
void bubble(int a[],int n);
int main(void)
{
int a[10];
int i=0,n;
char ch;

printf("Input n: ");
scanf("%d",&n);
printf("Input %d integers: ",n);
while(i<n)
{
scanf("%d",&a[i]);
i++;
}

printf("Input A or D: ");
scanf("%s",&ch);
if(ch=='A'){
bubble(a,n);
printf("After sorted:");
for(i=0;i<n;i++)
printf("%d ",a[i]);
}
else
{
bubble(a,n);
printf("After sorted:");
for(i=n-1;i>-1;i--)
printf("%d ",a[i]);
}
return 0;
}
void bubble(int a[],int n)
{
int i,j,t;
for(i=1;i<n;i++)
for(j=0;j<n-i;j++)
if(a[j]>a[j+1]){
t=a[j];a[j]=a[j+1];a[j+1]=t;
}
}

#include <stdio.h>

void swap2(int*, int *);

void bubble(int a[], int n);

int main(void)
{
int a[10] = {0};            //善意提醒1:数组要初始化一下
int i = 0, n = 0;           //善意提醒2:变量要初始化一下
char ch = 0;                //善意提醒3:同上

printf("Input n: ");
scanf("%d", &n);
printf("Input %d integers: ", n);
while (i < n)
{
scanf("%d", &(a[i])); //错误1:取地址取错误了(否则会篡改其它变量的值,本程序改了ch的值)
i++;
}

printf("Input A or D: ");
scanf("%c", &ch);        //消除上一个'/n'
scanf("%c", &ch);        //错误2:格式应该是%c而非%s(否则会篡改其它变量的值,本程序改了n的值)
if (ch == 'A')
{
bubble(a, n);
printf("After sorted:");
for (i = 0; i < n; i++)
printf("%d ", a[i]);
}
else
{
bubble(a, n);
printf("After sorted:");
for (i = n - 1; i > -1; i--)
printf("%d ", a[i]);
}
return 0;
}
void bubble(int a[], int n)
{
int i, j, t;
for (i = 1; i < n; i++)
for (j = 0; j < n - i; j++)
if (a[j] > a[j + 1])
{
t = a[j];
a[j] = a[j + 1];
a[j + 1] = t;
}
}

运行结果:

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-05-26
scanf("%s",&ch);改为scanf("%c",&ch);%s是字符串的占位符,你这里要的是字符而已。