设计一个函数,对n个字符串由大到小的顺序排
列,n由程序读入,字符串的输出和输入都在mai
n函数中进行。
#include <stdio.h>
//字符串比较函数
int mystrcmp(const char *str1,const char *str2)
{
while(*str1 == *str2) {
if(*str1 == '\0')
return 0;
str1++;
str2++;
}
return *str1 - *str2;
}
//自己实现的字符串拷贝函数
char *mystrcpy(char *dest, const char *src)
{
char *p=dest;
while(*src != '\0') {
*dest = *src;
dest++;
src++;
}
*dest = '\0';
return p;
}
//按照字符串由大到小排序,冒泡排序
void sort(char str[][100], int n)
{
int i, j;
char t[100];
for(i=0; i<n; i++) {
for(j=0; j<n-1-i; j++) {
if(mystrcmp(str[j], str[j+1]) < 0) { //前一个字符串比后一个要小,交换两个字符串
mystrcpy(t, str[j]);
mystrcpy(str[j], str[j+1]);
mystrcpy(str[j+1], t);
}
}
}
}
int main()
{
int n, i;
printf("请输入字符串个数:\n");
scanf("%d", &n);
char str[n][100];
printf("请输入%d个字符串:\n", n);
for(i=0; i<n; i++) {
scanf("%s", str[i]);
}
sort(str, n);
printf("排序后的字符串:\n");
for(i=0; i<n; i++) {
printf("%s\n", str[i]);
}
return 0;
}
字符串由大到小是指字符串长度吗,还是ASCII值呀
#include <stdio.h>
#include <string.h>
void sorts(char s[][100],int n)
{
char t[100];
for(int i=0;i<n-1;i++)
for(int j=0;j<n-1-i;j++)
{
if(strcmp(s[j],s[j+1]) < 0)
{
strcpy(t,s[j]);
strcpy(s[j],s[j+1]);
strcpy(s[j+1],t);
}
}
}
int main()
{
char s[100][100];
int n;
scanf("%d",&n);
getchar();
for(int i=0;i<n;i++)
gets(s[i]);
sorts(s,n);
for(int i=0;i<n;i++)
puts(s[i]);
}
#include <stdio.h>
//自己实现的字符串比较函数
int mystrcmp(const char *str1,const char *str2)
{
while(*str1 == *str2) {
if(*str1 == '\0')
return 0;
str1++;
str2++;
}
return *str1 - *str2;
}
//自己实现的字符串拷贝函数
char *mystrcpy(char *dest, const char *src)
{
char *p=dest;
while(*src != '\0') {
*dest = *src;
dest++;
src++;
}
*dest = '\0';
return p;
}
//按照字符串由大到小排序,冒泡排序
void sort(char str[][100], int n)
{
int i, j;
char t[100];
for(i=0; i<n; i++) {
for(j=0; j<n-1-i; j++) {
if(mystrcmp(str[j], str[j+1]) < 0) { //前一个字符串比后一个要小,交换两个字符串
mystrcpy(t, str[j]);
mystrcpy(str[j], str[j+1]);
mystrcpy(str[j+1], t);
}
}
}
}
int main()
{
int n, i;
printf("请输入字符串个数:\n");
scanf("%d", &n);
char str[n][100];
printf("请输入%d个字符串:\n", n);
for(i=0; i<n; i++) {
scanf("%s", str[i]);
}
sort(str, n);
printf("排序后的字符串:\n");
for(i=0; i<n; i++) {
printf("%s\n", str[i]);
}
return 0;
}
#include<stdio.h>
#include<windows.h>
#pragma warning (disable:4996)
void main()
{
int a[100];
int i;
int n;
printf("请输入需要排序的整数个数(不超过100个):");
scanf("%d", &n);
printf("请输入需要排序的整数(共%d个):",n);
for (i = 0; i < n; i++){
scanf("%d", &a[i]);
}
for (int j = 0; j < n-1; j++){
for (i = 0; i < n-j-1; i++){
if (a[i] < a[i + 1]){
int j = a[i + 1];
a[i + 1] = a[i];
a[i] = j;
}
}
}
printf("\n输出排序后的数:");
for (i = 0; i < n; i++){
printf("%d ", a[i]);
}
printf("\n");
system("pause");
}
#include <stdio.h>
//自己实现的字符串比较函数
int mystrcmp(const char *str1,const char *str2)
{
while(*str1 == *str2) {
if(*str1 == '\0')
return 0;
str1++;
str2++;
}
return *str1 - *str2;
}
//自己实现的字符串拷贝函数
char *mystrcpy(char *dest, const char *src)
{
char *p=dest;
while(*src != '\0') {
*dest = *src;
dest++;
src++;
}
*dest = '\0';
return p;
}
//按照字符串由大到小排序,冒泡排序
void sort(char str[][100], int n)
{
int i, j;
char t[100];
for(i=0; i<n; i++) {
for(j=0; j<n-1-i; j++) {
if(mystrcmp(str[j], str[j+1]) < 0) { //前一个字符串比后一个要小,交换两个字符串
mystrcpy(t, str[j]);
mystrcpy(str[j], str[j+1]);
mystrcpy(str[j+1], t);
}
}
}
}
int main()
{
int n, i;
printf("请输入字符串个数:\n");
scanf("%d", &n);
char str[n][100];
printf("请输入%d个字符串:\n", n);
for(i=0; i<n; i++) {
scanf("%s", str[i]);
}
sort(str, n);
printf("排序后的字符串:\n");
for(i=0; i<n; i++) {
printf("%s\n", str[i]);
}
return 0;
}