十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
#include iostream
肇源网站制作公司哪家好,找成都创新互联!从网页设计、网站建设、微信开发、APP开发、响应式网站设计等网站项目制作,到程序开发,运营维护。成都创新互联从2013年创立到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选成都创新互联。
#include map
#include cstdio
#include string
using namespace std ;
mapstring,string m ;
int main( )
{
char s[42] , *p , *q ;
int i ;
while( gets( s ) s[0] != '\0' )
{
p = strtok( s , " " ) ;
q = strtok( NULL , " " ) ;
m[q] = p ;
}
while( ~scanf("%s", s ) )
{
if( m.find( s ) != m.end() )
printf("%s\n", m[s].c_str() ) ;
else
printf("eh\n") ;
}
return 0 ;
}
如果使用的是冒泡排序,那么和整数排序唯一的不同就是这个部分:
if(a[j]a[j+1])
swap(a[j],a[j+1]);
那么在字符串排序的时候,需要用到一个库函数叫strcmp(char a[],char b[]);
这个函数在cstring库中[或者c语言中在string.h库中]
这个函数的用法就是输入字符串a,b,判断a,b的字典序大小.
若a的字典序小返回负值
若a的字典序和b相同返回0
若a的字典序大于b的字典序返回正数
然后你将上面冒泡的部分改一下的话就是:
if(strcmp(a[j],a[j+1])0)
swap(a[j],a[j+1]);
这样的话就可以实现冒泡排序了.
如果你使用的是系统快排的话,你可以用string,也可以定义一个结构体
struct Node{
char ch[1000];
}s[12];
bool cmp(const Node A,const Node B){
return strcmp(A.ch,B.ch)0;
}
int main(){
...
sort(s+1,s+10+1,cmp);
...
}
这样的话也是可以实现的.
常用词汇:
1、short:修饰int,短整型数据,可省略被修饰的int。
2、long:修饰int,长整型数据,可省略被修饰的int。
3、long long:修饰int,超长整型数据,可省略被修饰的int。
4、signed:修饰整型数据,有符号数据类型。
5、unsigned:修饰整型数据,无符号数据类型。
6、restrict:用于限定和约束指针,并表明指针是访问一个数据对象的唯一且初始的方式。
7、return:用在函数体中,返回特定值(如果是void类型,则不返回函数值)。
8、continue:结束当前循环,开始下一轮循环。
9、break:跳出当前循环或switch结构。
10、goto:无条件跳转语句。
11、if:条件语句,后面不需要放分号。
12、else:条件语句否定分支(与if连用)。
13、switch:开关语句(多重分支语句)。
14、case:开关语句中的分支标记,与switch连用。
15、default:开关语句中的“其他”分支,可选。
常用函数:
1、int isalpha(int ch) 若ch是字母('A'-'Z','a'-'z'),返回非0值,否则返回0。
2、int isalnum(int ch) 若ch是字母('A'-'Z','a'-'z')或数字('0'-'9'),返回非0值,否则返回0。
3、int abs(int i) 返回整型参数i的绝对值。
4、double cabs(struct complex znum) 返回复数znum的绝对值。
5、double fabs(double x) 返回双精度参数x的绝对值。
6、long labs(long n) 返回长整型参数n的绝对值。
参考资料来源:百度百科—C语言
#include stdio.h
#include string.h
const int MAXLEN = 100;
const int MAXSIZE = 10;
void sort(char title[][MAXLEN],int n) {//排序
int i,j,k;
char tstr[MAXLEN];
for(i = 0; i n - 1; ++i) {
k = i;
for(j = i + 1; j n; ++j) {
if(strcmp(title[k],title[j]) 0)
k = j;
}
if(k != i) {
strcpy(tstr,title[k]);
strcpy(title[k],title[i]);
strcpy(title[i],tstr);
}
}
}
void show(char s[][MAXLEN],int n) {
int i;
for(i = 0; i n; ++i)
printf("%s",s[i]);
puts(" ");
}
int main(void) {
char s[MAXSIZE][MAXLEN];
int i;
for(i = 0; i MAXSIZE; ++i) {
printf("string(%02d/%d):",i + 1,MAXSIZE);
fgets(s[i],MAXLEN,stdin);
}
printf("排序前:\n");
show(s,MAXSIZE);
sort(s,MAXSIZE);
printf("排序后:\n");
show(s,MAXSIZE);
return 0;
}
用二维数组记录书名,再声明一个指针数组并使各元素分别指向各书名,然后对指针数组元素按其指向的书名的字典顺序排序。这样比直接拷贝书名的效率会高些。举例如下:
//#include "stdafx.h"//If the vc++6.0, with this line.
#include "stdio.h"
#include "string.h"
#define N 10
void mysort(char *s[],int n){
int i,j,k;
for(i=0;in;i++){
for(k=i,j=k+1;jn;j++)
if(strcmp(s[k],s[j])0)
k=j;
if(i!=k){
s[i]=(char *)((unsigned)s[i]^(unsigned)s[k]);//交换指针
s[k]=(char *)((unsigned)s[k]^(unsigned)s[i]);
s[i]=(char *)((unsigned)s[i]^(unsigned)s[k]);
}
}
}
int main(void){
char book[N][30],*pbook[N];
int i,k;
for(i=0;iN;pbook[i]=book[i++]);
printf("Please enter 10 book-name...\n");
for(i=0;iN;pbook[i]=book[i++])
scanf("%s",book+i);
mysort(pbook,N);
for(k=i=0;iN;printf(++k%5 ? "%s " : "%s\n",pbook[i++]));//打出来看看......
if(k%5) printf("\n");
return 0;
}