发布网友 发布时间:2022-04-24 11:18
共5个回答
热心网友 时间:2022-05-22 03:06
1、首先新建一个控制台应用程序。
2、接着准备整型的数组,后面排序好用。
3、然后进行for嵌套,注意内外嵌套的写法。
4、接着在内层嵌套中进行数据比较,然后进行排序。
5、接着就是对排序后的数组进行打印一下。
6、最后我们可以看到冒泡排序后的结果了。
热心网友 时间:2022-05-22 04:24
冒泡排序代码:
#include<stdio.h>
#include<string.h>
void sort(char *a[]);
void print(char *a[]);
int main()
{
char *a[] ={"ceo","define","basic","abc","empty"};
printf("原来的序列是:\n");
print(a);
sort(a);
printf("\n排序后的序列是:\n");
print(a);
printf("\n");
return 0;
}
void sort(char *a[])
{
int i,j;
char *temp;
for(i=0;i<4;i++)//注意是i<4
{
for(j=0;j<4;j++)//注意是j<4,因为下面要+1和后面的那个字符串比较
{
if(strcmp(a[j],a[j+1])>0)//字符串比较:>0表示前面的字符串比后面的大则交换
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
}
void print(char *a[])
{
int i;
for(i=0;i<5;i++)
{
printf("%s ",a[i]);
}
}
printf函数使用注意事项
1、域宽
%d:按整型数据的实际长度输出。
如果想输出指定宽度可以指定域宽,%md-->m域宽,打印出来以后,在控制台上,显示m位;
如果要打印的数的位数如果超过我们设定m则原样输出;
如果要打印的数的位数如果小于设定的位数,则补空白,具体如下:
如果m为正数,则左对齐(左侧补空白);
如果m为负数,则右对齐(右侧补空白)。
2、转义字符
如果想输出字符"%",则应该在“格式控制”字符串中用连续两个%表示。
如:printf("%f%%",1.0/3);输出结果:0.333333%。
热心网友 时间:2022-05-22 05:58
#include <stdio.h>
#include <string.h>
#define N 5
#define MAX_LEN 100 //字符串最大长度
//冒泡排序(升序)
void bubbleSort(char (*pt)[MAX_LEN],int n) //形参pt为指向二维字符数组的指针
{
int i,j; //i表示趟数,j表示第i趟两两比较的次数
char tmp[MAX_LEN]; //临时字符数组
for(i=0;i<n-1;i++)
for(j=0;j<n-1-i;j++)
if(strcmp(pt[j],pt[j+1]) > 0) //字符串进行两两大小比较,如果>0,则执行if语句体
{//两个字符串进行交换操作
strcpy(tmp,pt[j]);
strcpy(pt[j],pt[j+1]);
strcpy(pt[j+1],tmp);
}
}
int main()
{
char str[N][MAX_LEN]; //定义二维字符数组
int i;
printf("输入字符串:\n");
for(i=0;i<N;i++)
scanf("%s",str[i]);
bubbleSort(str,N);//调用排冒泡序函数
printf("输出排序后的字符串:\n");
for(i=0;i<N;i++)
printf("%s\n",str[i]);
return 0;
}
示例运行结果:
热心网友 时间:2022-05-22 07:50
File Edit Options Buffers Tools C++ Help
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void show(char str[][20],int n)
{
int i;
for(i=0;i<n;i++)
printf("%s\n",str[i]);
}
int main()
{
int i,j,n,k;
char str[200][20];
char ch[20];
scanf("%d %d",&n,&k);
for(i=0;i<n;i++)
{
scanf("%s",str[i]);
getchar();
}
for(i=0;i<k;i++)
{
for(j=1;j<n;j++)
{
if(strcmp(str[j-1],str[j])>0)
{
strcpy(ch,str[j-1]);
strcpy(str[j-1],str[j]);
strcpy(str[j],ch);
}
}
}
printf("\n");
show(str,n);
return 0;
}
热心网友 时间:2022-05-22 09:58
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(){
int i,j,N,K;
printf("enter N\n");//字符串个数
scanf("%d",&N);
printf("enter char array\n");
char *str;
str=(char *)malloc(10*(sizeof(char)));
char *ch[N];
for(i=0;i<N;i++){
ch[i]=(char *)malloc(10*sizeof(char));
scanf("%s",ch[i]);//读取输入的字符串
}
for(i=0;i<N-1;i++){
for(j=0;j<N-1-i;j++){
if((strcmp(ch[j],ch[j+1]))>0){
str=ch[j+1];
ch[j+1]=ch[j];
ch[j]=str;
}
}
}
for(i=0;i<N;i++){
printf("%s\n",ch[i]);
}
return 0;
}