不知道是哪哈出了问题,冒泡排序和选择排序怎么弄啊?不是很明白调用函数以及为定义字符n
冒泡排序示例参考:
#include<stdio.h>
// 从后往前冒泡
void sort(int a[],int n)
{
int i,j,t,noswap;
for(i=0;i< n-1; i++)
{
noswap=1; // 是否交换标识 1:没交换 【说明已排序好了】 2:交换了
for(j=n-1;j>i;j--)
if(a[j-1]>a[j])
{
t=a[j-1];
a[j-1]=a[j];
a[j]=t;
noswap=0;
}
if(noswap)
break;
}
}
// 从前往后冒泡
void sort1(int a[],int n)
{
int i,j,t,noswap;
for(i=0;i< n-1; i++)
{
noswap=1; // 是否交换标识 1:没交换 【说明已排序好了】 2:交换了
for(j=0;j<n-1-i;j++)
if(a[j+1]<a[j])
{
t=a[j+1];
a[j+1]=a[j];
a[j]=t;
noswap=0;
}
if(noswap)
break;
}
}
int main()
{
int n;
printf("Input n:");
scanf("%d", &n);
printf("Input %d numbers:", n);
int a[n];
for (int i = 0; i < n; i++)
{
scanf("%d", &a[i]);
}
sort1(a, n);
printf("Sorting results:");
for (int i = 0; i < n; i++)
{
printf("%d ", a[i]);
}
return 0;
}
不知道你这个问题是否已经解决, 如果还没有解决的话:题目描述
小C很喜欢倒着写单词,现在给你一行小C写的文本,你能把每个单词都反转并输出它们吗?
输入
输入包含多组测试样例。第一行为一个整数T,代表测试样例的数量,后面跟着T个测试样例。
每个测试样例占一行,包含多个单词。一行最多有1000个字符。
输出
对于每一个测试样例,你应该输出转换后的文本。
样例输入
3
olleh !dlrow
I ekil .bulcmca
I evol .mca
样例输出
hello world!
I like acmclub.
I love acm.
【思路】:大循环中--当遇到空格或者结束的标志--直接令 k 为此时的(i-1)进行逆序输出----由于这样不会输出空格,则紧跟着逆序输出完成后,进行输出空格。
【C源程序如下】:
#include<stdio.h>
#include<string.h>
int main()
{
int N,len;
int i,j,k;
char a[1000];
scanf("%d",&N);
while(N>=0)
{
gets(a);
len=strlen(a);
j=0;
for(i=0;i<=len;i++)
{
if(a[i]==' '||a[i]=='\0')
{
for(k=i-1;k>=j;k--)//当遇到是空格或者整个字符结束的时候,直接让k等于前一个数,逆序输出
printf("%c",a[k]);
if(a[i]!='\0')
printf(" ");//因为条件是不为空格的情况,所以还要逆序完之后直接输出
j=i;//记录遇见空格或者标点符号时,的i
}
}
printf("\n");
N--;
}
return 0;
}