C语言程序算法

Python013

C语言程序算法,第1张

#include <stdio.h>

char * dict[]={

"bland",

"blank",

"bleak",

"bleed",

"blend",

"blind",

"blink",

"blond",

"blood",

"bloom",

"blown",

"blows",

"brand",

"brank",

"bread",

"break",

"bream",

"breed",

"brown",

"clank",

"clink",

"dread",

"dream"

}

#define MAX_DICT 23

checkin(char * input){

int i

for(i=0i<MAX_DICTi++)

{

if(strcmp(input,dict[i])==0)return i

}

return -1

}

getNext(char * input,int count,int indexes[])

{

int i,j,len,dest,k,cc

char new[100]

len=strlen(input)

for(i=0i<leni++)

{

strcpy(new,input)

for(j=0j<26j++)

{

new[i]='a'+j

cc=0

for(k=0k<countk++){

if(strcmp(dict[indexes[k]],new)==0){

cc=1

break

}

}

if(cc==1)continue//已经变换过

dest=checkin(new)

if(dest>=0)return dest//找到可以变换的词

}

}

return -1//没有可以变换的词

}

main(){

char input[100],new[100],output[100],road[1024]

int index,i,j,dest,count,indexes[MAX_DICT]

strcpy(input,"")

while(strcpy(input,"quit")!=0)

{

printf("请输入变换字符串:")

scanf("%s",input)

if(strcmp(input,"quit")==0)break

printf("请输入目标字符串:")

scanf("%s",output)

if(strcmp(output,"quit")==0)break

index=checkin(output)

if(index<0){

printf("%s 不在字典里!\n",output)

continue

}

index=checkin(input)

if(index<0){

printf("%s 不在字典里!\n",input)

continue

}

strcpy(road,"")

strcpy(new,input)

count=0

indexes[count]=index

count++

while(1)

{

dest=-1

dest=getNext(new,count,indexes)

if(dest<0){

printf("不存在变换系列\n")

break

}

else if(strcmp(dict[dest],output)==0){//找到目标字符串

printf("%s,%s%s\n",input,road,output)

break

}

else{//变换过程,如果成功变换则输出

strcat(road,dict[dest])

strcat(road,",")

strcpy(new,dict[dest])

indexes[count]=dest

count++

}

}

}

}

1.输入语句:scanf("控制格式",接受值列表),其中控制格式常用的有:%d,%c,%s,%f,分别

表示整型,字符型,字符串和浮点型.

例如int

achar

cscanf("%d

%c",&a,&c)表示向a和c输入值

2.赋值语句:=号,如将b赋值为10,为b=10

3.条件:if(布尔表达式){程序}else{程序}(注:此结构可嵌套)

switch(离散量){case

常量:...case

常量:...}

例:int

ascanf("%d",&a)

if(a>10)

{printf("大于10")}

else

{printf("小于10")}

例:switch(months)

{

case

1:printf("1月有31天")break

case

3:printf("3月有31天")break

....

default:break

}

4.循环:for结构,while结构,do-while结构

for(初始化判断变化)

{

}

while(条件)

{

}

do

{

}while(条件)

printf("n=%uP[%u]=%f\n",&n,&n,&P[n])//这个输出的是n和P[n]的地址.

改成

printf("n=%dP[%d]=%f\n",n,n,P[n])