求助,关于c语言的单词输出程序

作者&投稿:农时 (若有异议请与网页底部的电邮联系)
用c语言求输入3个单词,按单词长度从大到小输出单词的程序~

char a[][15] =

{

"asdadgew",

"zdkskss",

"qjksnn"

};

char b[15] = "0";

for (int i = 0; i < 2; i++) {

for (int j = 0; j < 2 - i; j++) {

if (strlen(a[j]) < strlen(a[j+1])) {

strcpy(b, a[j]);

strcpy(a[j], a[j+1]);

strcpy(a[j+1], b);

}

}

}

for (int i = 0;i < 3;i++) {

printf("%s
", a[i]);

}
头文件:#include 和 #include

#include
#include
int main()
{
int i;
int j;

char a[3][100];
char t[100];
printf("请输入3单词,回车分开:");
for(i = 0; i < 3; i++)
{
gets(a[i]);

}
for(i = 0; i < 3-1; i++)
{
for(j = 0; j < 3-1-i;j++)

{
if(strlen(a[j]) < strlen(a[j+1]))
{
strcpy(t,a[j]);
strcpy(a[j],a[j+1]);
strcpy(a[j+1],t);
}
}
}
for(i = 0; i < 3;i++)
puts(a[i]);




}

提供三种方法:
1.有多少个单词,开多少个比较线程进行比较;能达到O(n2)缩短到O(n);...
2.在加载单词库后,维护一个单词链表,将每个单词首字符的地址指针用来链表记录,这样就可以用单词去比较用户输入的一长串字母;但不能将时间复杂度缩小到O(n);
3.综合kmp和Shift-And算法,采取位滑动,和位映射结合的方法;时间复杂度能降低,但...仍然不能从O(n2)降到O(n)

所以,开线程是最好达到目的的实现方法;

单词库存储时进行排序,然后建立索引比如a/A-z/Z,从第一位开始一直到最后一位的索引,如果词库太大可以只建立前面部分的索引

新建一个数组english[20]
让english[0]="zero", english[1]="one", english[2]="two"...
然后,对于输入的数字,如果它小于20, 就直接到english数组中去取对应的值.
如果大于等于20小于100,先把十位上的数字取出来, 根据十位数字生成twenty, thirty, fourty, fifty等十位的英文,再把个位取出来,到english数组中去取个位的英文. 如果在100到1000之间,就先取百位......
总之就是这样了
另外,虚机团上产品团购,超级便宜

int Index_KMP(char *s, char *t, int pos) {
// 利用模式串t的next函数求t在主串s中第pos个字符之后的位置的
// KMP算法。其中,s非空,1<=pos<=strlen(s)
int i = pos;
int j = 1;
while (i<=strlen(s) && j<=strlen(t)) {
if (j==0 || s[i]==t[j])
{ ++i; ++j; }
else j=next[j];
}
if (j>strlen(t)) return i-strlen(t);
else return 0;
}

void get_next(char *t, int next[]) {
// 求模式串t的next函数并存入next数组
int i = 1, j = 0;
next[1]=0;
while (i<strlen(t)) {
if (j==0 || s[i]==t[j]) {
++i; ++j;
if (t[i] != t[j]) next[i]=j;
else next[i]=next[j];
}
else j=next[j];
}
}

数据结构 串的模式匹配里有方法实现 。
参考 数据结构(C语言版) 严蔚敏_吴伟民 。
相信你能看懂的 在书本79页 。
可以达到 O(n + m) 。即差不多O(2n)


关于C语言的一个简单问题
首先,你的程序根本就不能运行,缺少两个逗号。char ch1=164,然后%d输出结果确实是-92,-92和164的二进制都是1010 0100,内存中的数值是同一个,输出使用%d、%u会不同的结果。补码的两个数绝对值之和是256。char ch2=261,然后%d输出的结果是5,因为261转换为二进制后的后八位是5,超过256的...

关于c语言的非常简单..谢谢看一下
c语言中没有三次方,只能用三个连乘表示。函数调用也可以,用pow函数(double pow(double,double)),调用这个函数需要#include <math.h>。支持实数的实数次方,

关于这个C语言的简单程序。
这是C语言的条件表达式,固定格式就是m=a?b:c 它的意思是如果a是true,那么m=b;如果a是false,那么m=c --- 参考:表达式1? 表达式2: 表达式3 其求值规则为:如果表达式1的值为真,则以表达式2 的值作为条件表达式的值,否则以表达式2的值作为整个条件表达式的值。 条件表达式通常用于赋值语句...

关于c语言的几个程序
关于c语言的几个程序 这里求5个程序程序本身非常简单但是由于时间和精力关系不想自己去弄以下是5个程序的要求只要满足所诉要求即可其余的部分越简单越好1试编写在顺序表上实现插入和删除的算法2试编写在单... 这里求5个程序 程序本身非常简单 但是由于时间和精力关系不想自己去弄 以下是5个程序的要求 只要满足所...

关于C语言的一个简单问题
这个是投影B,不是选择,选择是按某些条件,从原关系中找出符合条件的部分记录(也就是选择后属性ABC是不会变化的,但是记录的数量可能有变化),投影则是选择性的显示原关系的部分属性,记录数量是不会变化的

关于才C语言的几道简单问题
大概写了一下,按照一般思路写的。请参考。1--- include<stdio.h> int prt(char c,int a,int b){ int i=0,j=0;for(i=0;i<b;i++){ for(j=0;j<a;j++){ printf("%c",c);} printf("\\n");} return 0;} void main(){ prt('d',3,4);} 2--- include<stdio.h> in...

一些C语言的问题,很紧急,非常感谢您能回答!!!
1.下列关于C语言特点的描述,不正确的是 C 。A)C语言兼有高级语言和低级语言的双重特点,执行效率高 B)C语言可以用来编写应用程序,又可用以编写系统软件 C)C语言的可移植性较差 D)C语言是一种结构式模块化程序设计语言 2.下列叙述中正确的是 A 。A) C语言程序总是从main函数开始...

关于C语言的一个简单的问题 望高手能解决
因为你这个语句中,只定义了a,b和c都没有定义。但是你又让a等于没有定义的b和c,且让这三个值都等于0。这样,就是说你让a等于没有定义的数,而且给没有定义的变量赋值,自然会出错。int a,b,c;a=b=c=0;

关于C语言的一个简单问题
a、b和c都是整型,所以(a+b)\/c=5\/2=2 y开方再×1.2=3.0×1.2=3.6,除以c等于3.6\/2=1.8 x=5.5 所以加在一起就是2+1.8+5.5=9.3啊

关于大一C语言的几个简单问题:求教!
1. 5B,写成16进制表示的 0x5B 就行了,这主要是因为编译环境默认的10进制表示。2. 因为计算机所有信息(包括数据和指令)都是采用二进制编码的(就是说计算机只能识别和执行由0,1组成的二进制的指令)。C语言中有编译过程,实际就是把源程序翻译成二进制形式的目标程序(之后就是连接运行··...

长兴县17347745878: 请设计一个C语言程序,能实现这个功能:输入10个单词,按字典序输出各单词 -
偶刻露尔: #include <stdio.h>#include <string.h> int main() { char a[20][100], temp[100]; int i,j; for(i=0; i<10; i++) scanf("%s", a[i]); for(i=0; i<9; i++) for(j=0; j<9-i; j++) { if(strcmp(a[j], a[j+1]) >0) { strcpy(temp, a[j]); strcpy(a[j], a[j+1]); strcpy(a[j+1], temp); } }//冒泡...

长兴县17347745878: 怎么用c语言输出英文单词啊? -
偶刻露尔: 存储成字符数组 然后用printf或者puts输出 比如1 2 3chars[100] = "English"; printf("%s",s); puts(s); 都可以.

长兴县17347745878: 用c语言求输入3个单词,按单词长度从大到小输出单词的程序 -
偶刻露尔: char a[][15] = { "asdadgew", "zdkskss", "qjksnn" }; char b[15] = "0"; for (int i = 0; i < 2; i++) { for (int j = 0; j < 2 - i; j++) { if (strlen(a[j]) < strlen(a[j+1])) { strcpy(b, a[j]); strcpy(a[j], a[j+1]); strcpy(a[j+1], b);} } } for (int i = 0;i < 3;i++...

长兴县17347745878: 使用C语言编写一个输入一个单词,最后将单词反向输出的程序.(使用strlen()) -
偶刻露尔: #include int main(){char buff[50];int i;scanf("%s",buff);for(i=strlen(buff)-1;...

长兴县17347745878: C语言 将输入的字符串中的单词的个数输出(程序补充) -
偶刻露尔: 用我的程序有以下好处:一、避免第一个单词出现前的空格计算为单词.二、避免字符窜中间的多个连续空格重复计算单词个数.#include<stdio.h> int strwordcount(char p[20]) { int i=0; int count=0; if(p[0]==' ') i++; for(i=1;i<20;i++) { if(p[i]==' '&&p[i-1]!=' ') count++; } return count+1; } void main() { int c; char p[20]; gets(p); c=strwordcount(p); printf("%d\n",c); }

长兴县17347745878: (c语言)输入一组英文单词,按字典顺序排序后输出
偶刻露尔: main() { int i,j,x; char s; scanf(%s,s); for(i=0;i全部

长兴县17347745878: 请用C语言编写一个程序,从键盘上输入任意2个单词,要求将两个字符串连接起来并在屏幕上输出,不要使用strcat函数.例如原来输入China和Hunan,连接后的字符串为ChinaHunan.急求谢谢! -
偶刻露尔: #include<stdio.h> char *fun1(char *s,char *t) { char *s1=s; while(*s)s++; while(*t)*s++=*t++; *s=0; return s1; } void main() { char s[100],t[100]; printf("输入字符串:"); gets(s); printf("输入字符串:"); gets(t); printf("%s\n",fun1(s,t)); }

长兴县17347745878: c语言编程:做出输入英文单词,就能输出此单词的字母个数的程序 -
偶刻露尔: #include <stdio.h> typedef char* string;int main() {string str;int length; printf("请输入单词:\n");scanf("%s",str);length = strlen(str);printf("单词 %s 的长度为:%d",str,length); return 0; }

长兴县17347745878: c程序设计答案输入一英文单词,将其字母按字典顺序排序后输出.如:program,输出agmoprr. -
偶刻露尔: 你好,试试#include #include main() { char a[20]; int i,j,str; char ch; printf("input a word:\n"); scanf("%s",a); str=strlen(a); for(i=0;i{ for(j=0;j { if(a[j]>a[j+1]) { ch=a[j]; a[j]=a[j+1]; a[j+1]=ch; } } } printf("%s\n",a); }

长兴县17347745878: C语言!! 用*号输出单词!! -
偶刻露尔: 我全贴出来吧 记得好评啊 呵呵#include"stdio.h"#include"stdlib.h"#include"string.h" int main()//这里你可能不太明白,在标准C里main必须返回int { int i,j; int length=0;//记录字符串长度 int pass[15];//记录输入数据的字母序号,单词最...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网