导航:首页 > 源码编译 > 编译原理字符串排序

编译原理字符串排序

发布时间:2022-04-04 08:12:07

Ⅰ 用C++对字符串的排序

没说不让用STL吧

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>

void temp(vector<string>& list)
{
sort(list.begin(),list.end());
}

int temp_1(vector<string>& list, string str)
{
vector<string>::iterator iter;
iter=find(list.begin(), list.end(), str);
return iter!=list.end();
}
int main()
{
vector<string> list;
string target("nice");
list.push_back("aaaa");
list.push_back("zzzz");
list.push_back("nice");
list.push_back("dddd");
list.push_back("cccc");

temp(list);
for(int i=0;i<list.size();i++)
cout<<list[i]<<endl;
cout<<temp_1(list, target)<<endl;
}

Ⅱ sort()函数对字符串字典序的排序问题

structnode{
charstr[20];
friendbooloperator<(nodea,nodeb){
returnstrcmp(a.str,b.str)<0;
}
}s[55];
intmain(){
intn;
while(scanf("%d",&n)&&n){
for(inti=0;i<n;++i)scanf("%s",s[i].str);
sort(s,s+n);
for(inti=0;i<n;++i)printf("%s ",s[i].str);
}
return0;
}

Ⅲ C语言简单字符串排序程序,谁帮忙下,会加分的

#include<stdio.h>
#include<search.h>
#include<string.h>
int compare(const void *a,const void *b)
{
if(strlen((char *)a)!=strlen((char *)b))
return strlen((char *)a)-strlen((char*)b);
return (strcmp((char *)a,(char *)b));
}
int main(void)
{
int i;
char mon[8][10]={"January","February","March","April","May","June","July","September"};
qsort(mon,8,sizeof(char)*10,compare);
for(i=0;i<8;i++)
puts(mon[i]);
return 0;
}
参考:http://ke..com/view/982231.htm

Ⅳ 编写函数实现字符串排序

修改完毕
函数错了;
1:判断语句错了
2:字符串是不能直接赋值的,
修改如下:
WIN-TC编译通过

#include<stdio.h>
#include<string.h>
void pai(char a[],char b[],char c[])
{
char t[100];
if(strcmp(a,b)>0) {strcpy(t,a);strcpy(a,b);strcpy(b,t);}
if(strcmp(a,c)>0) {strcpy(t,a);strcpy(a,c);strcpy(c,t);}
if(strcmp(b,c)>0) {strcpy(t,b);strcpy(b,c);strcpy(c,t);}
}
void main()
{
char str1[100],str2[100],str3[100];
printf("Enter three strings:");
gets(str1);
gets(str2);
gets(str3);
pai(str1,str2,str3);
puts(str1);
puts(str2);
puts(str3);
getchar();
}

Ⅳ C++用字符串变量做选择法排序,降序,编译没错,运行起来没效果.请雷锋指点。具体见图片。

你的代码写的有问题,请参考这个例子。
#include <iostream>
#include <string>
using namespace std;

void sort_name(string a[]);

int main(void){
//int i,j,k;
int i;
string m[12]={"January","February","March","April","May","June",
"July","August","September","October","November","December"},tmp;
sort_name(m);
for(i=0;i<12;cout << m[i++] << ' ');
cout << endl;
return 0;
}

void sort_name(string a[]) {
int i,j,k;
string tmp;
for(i=0;i<12;i++){
for(k=i,j=k+1;j<12;j++)
if(a[k]>a[j]) k=j;
if(k!=i){
tmp=a[i];
a[i]=a[k];
a[k]=tmp;
}
}
}

Ⅵ 对字符串排序处理

#include <iostream>
#include <string>
using namespace std;
#define N 5 //假设只有5个单词

int main()
{
int i=0,j=0,k=0,d=0,m=0;
string c[N];//存放单词
string str[26][N];
cout<<"请输入"<<N<<"个单词:"<<endl;
for (i=0;i<N;i++)
{
cin>>c[i];
}
for (j=9;j>=0;j--)//根据基数排序法
{
for (i=0;i<N;i++)
{

k=c[i][j]-97;
if (k<0)
{
k=0;
}
str[k][m++]=c[i];
}
for(i=0,k=0;i<N&&k<26;k++)
for(d=0;d<N;d++)
if (str[k][d][0]>96&&str[k][d][0]<123||str[k][d][0]>64&&str[k][d][0]<91)
{
c[i++]=str[k][d];
str[k][d][0]=32;
}
m=0;
}
cout<<"结果:"<<endl;
for (i=0;i<N;i++)
{
cout<<c[i]<<endl;
}
return 0;
}

Ⅶ C语言:按照字符串的长度排序的问题

编译有误

Ⅷ 汇编 编写一个冒泡排序的方法,把一个字符串里面的字符进行排序。编译没错误,可是运行一下就出错了。

DATA SEGMENT
A DB 32 DUP(0)
M DB 'input A string:',0AH,0DH,'$'
N DB 0AH,0DH,'$'
DATA ENDS

CODE SEGMENT
ASSUME DS:DATA,CS:CODE
START:
MOV AX,DATA
MOV DS,AX

MOV DX,OFFSET M
MOV AH,09H
INT 21H

MOV BX,0
MOV CX,32
L: MOV AH,01H
INT 21H
MOV A[BX],AL
INC BX
LOOP L

MOV CX,32
LOOP1:
MOV DI,CX
MOV BX,0
LOOP2:
MOV AL,A[BX]
CMP AL,A[BX+1]
JLE CONTI
XCHG AL,A[BX+1]
MOV A[BX],AL
CONTI:
INC BX
LOOP LOOP2
MOV CX,DI
LOOP LOOP1

MOV DX,OFFSET N
MOV AH,09H
INT 21H

MOV BX,0
MOV CX,32
X: MOV DL,A[BX]
MOV AH,02H
INT 21H
INC BX
LOOP X

MOV AH,4CH
INT 21H
CODE ENDS
END START

这个汇编的排序是没问题的。。。
看别人的程序太麻烦了。。我就直接编了一个
排序没问题,你当做参考吧。。不知道符合你的要求不

Ⅸ C语言字符串排序

#include <stdio.h>
#include <string.h>
#include <malloc.h>
#define MAX 10

void stsrt(char *str[],int num);
void ASC(char *str[],int num);
void length_add(char *str[],int num);
void word_length(char *str[],int num);

int main(void) {
char *s[MAX],t[80];
int i = 0,n;
printf("输入%d个字符串 :\n",MAX);
for(i = 0; i < MAX; ++i) {
if(gets(t) && t[0] != '\0') {
s[i] = (char *)malloc(80 * sizeof(char));
strcpy(s[i],t);
}
else break;
}
while(i < MAX && gets(s[i]) && s[i][0] != '\0') i++;
puts("选择:");
puts("1.输出初始字符串行表");
puts("2.按ASCⅡ码顺序输出字符串");
puts("3.按长度递增顺序输出字符串");
puts("4.按字符串第一个单词长度输出字符串");
puts("5.结束");
while(scanf("%d",&n) != 5) {
switch(n) {
case 1:stsrt(s,i);break;
case 2:ASC(s,i);break;
case 3:length_add(s,i);break;
case 4:word_length(s,i);break;
case 5:return 0;
default:puts("输入错误!");
}
}
return 0;
}

void stsrt(char *str[],int num) { //1.输出初始字符串行表
int n;
for(n = 0;n < num;n++) puts(str[num]);
}

void ASC(char *str[],int num) {//2.按ASCⅡ码顺序输出字符串
int top,seek;
char *temp;
for(top = 0;top < num - 1;top++) {
for(seek = top + 1;seek < num;seek++)
if(strcmp(str[top],str[seek]) > 0) {
temp = str[top];
str[top] = str[seek];
str[seek] = temp;
}
}
for(int n = 0;n < num;n++) puts(str[n]);
}

void length_add(char *str[],int num) { //3.按长度递增顺序输出字符串
char *temp;
int top,seek;
for(top = 0;top < num - 1;top++) {
for(seek = top + 1;seek < num;seek++)
if(strlen(str[top]) > strlen(str[seek])) {
temp = str[top];
str[top] = str[seek];
str[seek] = temp;
}
}
for(int n = 0;n < num;n++) puts(str[n]);
}

void word_length(char *str[],int num) {//4.按字符串第一个单词长度输出字符串
char *temp;
int top,seek,n,j,len[MAX];
for(n = 0; n < num; ++n) {
len[n] = 0;
j = 0;
while((str[n][j] != ' ') && str[n][j]) {
++len[n];
++j;
}
}
for(top = 0;top < num - 1;top++) {
for(seek = top + 1; seek < num;seek++) {
if(len[top] > len[seek]) {
temp = str[top];
str[top] = str[seek];
str[seek] = temp;
}
}
}
for(n = 0;n < num;n++) puts(str[n]);
}

Ⅹ 怎么用汇编语言对字符串进行排序

; 本程序通过编译,运行正确
Code Segment
Assume CS:Code,DS:Code
; -------------------------------------
; 功能:显示指定地址(Str_Addr)的字符串
; 入口:
; Str_Addr=字符串地址(要求在数据段)
; 用法: Output Str_Addr
; 用法举例:Output PromptStr
Output MACRO Str_Addr
lea dx,Str_Addr
mov ah,9
int 21h
EndM
; -------------------------------------
; 功能:把AX中的二进制无符号数转换成显式的十进制ASCII码,并送显示屏显示
; 入口:AX=二进制数
; 出口:在当前光标位置显示转换后的ASCII码数字
Dec_ASCII Proc Near
push dx
push bx
push di
mov bx,10
lea di,@@Temp_Save[6]
mov byte ptr [di],'$'
dec di
cld
@@Divide: xor dx,dx
div bx
or dl,30h
mov [di],dl
dec di
test ax,0ffffh
jnz @@Divide
inc di
push di
pop dx
mov ah,9
int 21h
pop di
pop bx
pop dx
ret
@@Temp_Save db 7 p(?)
Dec_ASCII EndP
; -------------------------------------
Vowel db 'aeiou'
Prompt_Str db 'Please input a string or phrase: $'
Vowel_Prom db 13,10,13,10,'Vowels: $'
Conso_Prom db 13,10,'consomants: $'
Start: push cs
pop ds
push cs
pop es ;使数据段、附加段与代码段同段
Input_Str: Output Prompt_Str ;提示输入字符串
lea dx,Buffer ;字符串缓冲区地址
mov ah,0ah
int 21h
lea si,Buffer[1] ;实际输入的字符数地址
cld
lodsb
test al,0ffh
jz Input_Str ;若直接回车,没有输入任何字符,则请重新输入
mov cl,al
xor ch,ch
xor bx,bx ;计数器清零,bh=元音字母计数器,bl=辅音字母计数器
Vowel_conso:lodsb
or al,20h ;转换成小写
cmp al,'a'
jb Next_One ;小于'a',不是字母,不计数
cmp al,'z'
ja Next_One ;大于'z',不是字母,不计数
push cx
lea di,Vowel ;元音字符串地址
mov cx,5 ;元音字母个数
repnz scasb ;扫描当前字母是否是元音字母
jcxz $+6
inc bh ;元音字母计数
jmp short $+4
inc bl ;辅音字母计数
pop cx
Next_One: loop Vowel_conso
Output Vowel_Prom ;提示显示元音字母个数
mov al,bh
xor ah,ah
call Dec_ASCII ;显示元音字母个数
Output Conso_Prom ;提示显示辅音字母个数
mov al,bl
xor ah,ah
call Dec_ASCII ;显示辅音字母个数
mov ah,7 ;不带回显的键盘输入,即等待按键(暂停),结束程序
int 21h
Exit_Proc: mov ah,4ch ;结束程序
int 21h
Buffer db 255,0 ;字符串缓冲区
Code ENDS
END Start ;编译到此结束

阅读全文

与编译原理字符串排序相关的资料

热点内容
高速哪个app比较准确 浏览:203
王者荣耀安卓怎么购买转移号 浏览:950
改变自己pdf 浏览:958
php自动安装程序 浏览:418
linux命令行开机 浏览:422
程序员图鉴刷屏 浏览:643
vector源码java 浏览:75
中文编程网页 浏览:782
文件加密如何进行比对 浏览:555
阿里云服务器计算型通用型区别 浏览:945
夜嗨app怎么不能更新 浏览:538
qd65y压缩机参数配置 浏览:940
中级会计教材pdf 浏览:477
弱签名算法md5 浏览:364
进行系统硬件设置的文件夹是 浏览:756
dwrg什么文件夹 浏览:677
小米电视如何加密wifi 浏览:343
java私钥解密 浏览:959
犯过罪还能当程序员吗 浏览:986
参数名称java 浏览:17