C语言编程题,输入5个字符串,然后排序

作者&投稿:鄞牲 (若有异议请与网页底部的电邮联系)
用C语言编程从键盘输入五个字符串,按从小到大的顺序对它们进行排序。~

/*比较笨重的冒泡排序法,用到string中的串比较strcmp和串拷贝strcpy。amount是字符串的数量,length是字符串的长度,不管你是否习惯这么写,这样表示都是有好处的。我的编译器是visual studio 2008 C++。*/

#include
#include

int main()
{
const int amount=5;
const int length=20;
char string[amount][length];

for(int i=0;i<amount;i++)
{
scanf("%s",string[i]);
}

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

for(int j=0;j<i;j++)
{
if(strcmp(string[i],string[j])<0)
{
char tmp[length];
strcpy(tmp,string[i]);
strcpy(string[i],string[j]);
strcpy(string[j],tmp);
}
}
}

for(int i=0;i<amount;i++)
{
printf("%s
",string[i]);
}
return 0;
}

#include
#include
void main()
{
void sort(char (*p)[20]);
char a[5][20];//五行20列
int i;
printf("请输入5个字符串:
");
for(i=0;i<5;i++)//这里输入五个字符串
gets(a[i]);
sort(a);//调用函数进行排列

}


void sort(char (*p)[20])
{
char a[20];
int i,j;
for(i=0;i<4;i++)//这里把每一行看做一个元素五个要进行4次比较
for(j=0;j<20;j++)//这里是上下相邻的两行之间对应元素进行比较
{
if(p[i][j]>p[i+1][j])//遇到上行大于交换上下两行
{
strcpy(a,p[i]);
strcpy(p[i],p[i+1]);
strcpy(p[i+1],a);
}
break;
}
printf("五个串按从小到大排列如下:
");
for(i=0;i<5;i++)
puts(p[i]);
printf("
");

}

#define LINEMAX 20/*定义字符串的最大长度*/

int main()

{int i;

char**p,*pstr[5],str[5][LINEMAX];

for(i=0;i&lt;5;i++)

pstr&lt;i&gt;=str&lt;i&gt;;/*将第i个字符串的首地址赋予指针数组pstr的第i个元素*/

printf("input 5 strings:
");

for(i=0;i&lt;5;i++)

scanf("%s",pstr&lt;i&gt;);

p=pstr;

sort(p);

printf("strings sorted:
");

for(i=0;i&lt;5;i++)

printf("%s
",pstr&lt;i&gt;);

}

sort(char**p)/*冒泡法对5个字符串排序函数*/

{int i,j;

char*temp;

for(i=0;i&lt;5;i++)

{for(j=i+1;j&lt;5;j++)

{if(strcmp(*(p+i),*(p+j))&gt;0)/*比较后交换字符串地址*/

{temp=*(p+i);

*(p+i)=*(p+j);

*(p+j)=temp;

}

}

}

return 0;

}

扩展资料:

printf()函数的调用格式为:printf("&lt;格式化字符串&gt;",&lt;参量表&gt;)。

其中格式化字符串包括两部分内容:一部分是正常字符,这些字符将按原样输出;另一部分是格式化规定字符,以"%"开始,后跟一个或几个规定字符,用来确定输出内容格式。

参量表是需要输出的一系列参数,其个数必须与格式化字符串所说明的输出参数个数一样多,各参数之间用","分开,且顺序一一对应,否则将会出现意想不到的错误。

比如:

int a=1234;

printf("a=%d
",a);

输出结果为a=1234。

scanf()是C语言中的一个输入函数。与printf函数一样,都被声明在头文件stdio.h里,因此在使用scanf函数时要加上#include&lt;stdio.h&gt;。

int scanf(const char*restrict format,...);

函数scanf()是从标准输入流stdin(标准输入设备,一般指向键盘)中读内容的通用子程序,可以说明的格式读入多个字符,并保存在对应地址的变量中。

如:

scanf("%d%d",&a,&b);

函数返回值为int型,如果a和b都被成功读入,那么scanf的返回值就是2。



你能不能把怎么个升序排序说的清楚点 按首字母的字典顺序? 你那个如图1就是白瞎的

#include <stdio.h>
#include <string.h>

int main()
{
char strs[5][80];
char buf[80];
printf("Input 5 strings:\n");
int i = 0, j, k;
while (i < 5)
{
gets(buf);
for (j = 0; j < i; j++)
if (strcmp(buf, strs[j]) <= 0) break;

for (k = i; k > j; k--)
strcpy(strs[k], strs[k - 1]);

strcpy(strs[j], buf);
i++;
}

printf("-----------------\n");
for (i = 0; i < 5; i++) printf("%s\n", strs[i]);

return 0;
}

运行结果如下:
Input 5 strings:
hello
my
friend
Are you ready?
help!
-----------------
Are you ready?
friend
hello
help!
my

#include<stdio.h>
#include<string.h>

int main()
{
char str[5][80];
char temp[80];
int i,j;
printf("Please input 5 strings:\n");
for (i=0;i<5;i++)
{
gets(str[i]);
}
for (i=0;i<5;i++)
{
for (j=i+1;j<5;j++)
{
if (strcmp(str[i],str[j])>0)
{
strcpy(temp,str[i]);
strcpy(str[i],str[j]);
strcpy(str[j],temp);
}
}
}
printf("The strings:\n");
for (i=0;i<5;i++)
{
puts(str[i]);
}
return 0;
}
完美运行。
望采纳!!

这个有点难饿


C语言编程:输入一个正整数,输出如下图形,例如输入5,输出的图形如下:
include<stdio.h> int main(){ int i,j,k,n;printf("请输入一个数字:");scanf("%d",&n);for(i=1,k=-1;i<=n;i++,k+=2){ for(j=0;j<n-i;j++) printf("%c",32);printf("%d",i);if(k>0){ for(j=0;j<k;j++) printf("%c",32);printf("%d",i);} printf(...

C语言编程,输入五个学生的五科成绩,求每科的平均分,最高分,最低分...
<stdio.h>main(){double a[8][5]={0};int i,j;for(i=0;i<5;i++){for(j=0;j<5;j++)scanf("%lf",&a[i][j]);}for(j=0;j<5;j++){for(i=0;i<5;i++)a[5][j]+=(a[i][j]\/5.0);printf("课程%d的平均分=%g\\n",j+1,a[5][j]);}for(i=0;i<5;i++...

C语言编程题:任意输入五个同学的成绩(设为整数)及学号,找出他们的最...
{ printf(" 请输入学号,姓名,成绩\\n");scanf("%d%s%f",&(a[i].number),a[i].name,&(a[i].scores));} sort(a,3);} 刚写好的,希望采纳,应该看得懂的哈,不过c++写更简单,c的结构不支持封装函数的

C语言 用结构体类型数组编程实现输入5个学生的学号姓名平时成绩期中成 ...
\/*平时成绩比例*\/float sco2Ratio = 0.2; \/*期中成绩比例*\/float sco3Ratio = 0.7; \/*期末成绩比例*\/stu[stuIndex].totalScore = stu[stuIndex].score1 * sco1Ratio +stu[stuIndex].score2 * sco2Ratio +stu[stuIndex].score3 * sco3Ratio;}\/*输出学生成绩*\/void printInfo (stud...

c语言编程题键盘输入5个数据到一个数组中,并求出最小值输出 求大神帮忙...
include <stdio.h>#include <stdlib.h>int main(){ int arr[5]; int i; for(i=0;i<5;++i) { scanf("%d",&arr[i]); } int min = arr[0]; for(i=1;i<5;++i) { if(arr[i] < min) { min = arr[i]; } } printf("%d...

c语言分析题? 输入5个整数,求和,要求用数组实现
include <stdio.h> include <stdlib.h>int main(int agrc,char *agrv[]){ int a[5],t = 0,i; \/\/定义一个数组,一个循环变量,一个结果 for (i = 0; i < 5; i++) \/\/输入五个数 scanf("%d",&a[i]);for (i = 0; i < 5; i++) \/\/把输入的数加起来 t...

C语言编程题:从键盘上输入5个整数,程序输出5个数中最大的数与最小的数...
\/\/满意请采纳#include<stdio.h>int main(){int a[5]={0},i,max,min;for(i=0;i<5;i++){scanf("%d",&a[i]);}max=min=a[0];for(i=0;i<5;i++){if(maxa[i])min=a[i];}printf("max=%d,min=%d\\n",max,min);return 0;} ...

用C语言编程从键盘输入一个正整数,判断其个位数是否为5,若是5则输出...
include <stdio.h> int main(){ int five;printf("输入一个整数:");scanf("%d",&five);while(five>10){ five = five%10;} if(five == 5)printf("yes");else printf("no");return 0;}

c语言编程 输入5个数 求出最大值和最小值
include<math.h> int max(int x,int y){ if(x>y)return x;else return y;} int min(int x,int y){ if(x<y)return x;else return y;} int main(){ int x,y,a,b,c,d,e,f,g,h,i,t,o,p,l;printf("输入任意五个整数:\\n");scanf("%d%d%d",&a,&b,&c,&d,&e);f...

C语言编程题:有5个学生,每个学生有3门课成绩,从键盘上输入以上数据(包 ...
unsigned int Uint32;typedef struct stu{char name[NAME_MAX];char stu_number[NUMBER_MAX];Uint32 chinese;Uint32 math;Uint32 english;} stu;int main(void){stu students[STUDENTS_MAX];int idx=0;printf("输入5个学生的信息\\n");for(idx=0;idx<STUDENTS_MAX;idx++){printf("name:"...

东兴市19896035336: C语言编程题,输入5个字符串,然后排序 -
宇文逸独一: #include#include int main() { char str[5][80]; char temp[80]; int i,j; printf("Please input 5 strings:\n"); for (i=0;i { gets(str[i]); } for (i=0;i { for (j=i+1;j { if (strcmp(str[i],str[j])>0) { strcpy(temp,str[i]); strcpy(str[i],str[j]); strcpy(str[j],temp); } } } printf("The strings:...

东兴市19896035336: c语言书上的一道编程题,输入5个字符串,并按字母顺序排列后输出.程序如下: -
宇文逸独一: for(i=0;j<5;i++) { k=i; for(j=i+1;j<5;j++) 第一个for循环 for(i=0;j<5;i++),改成 for(i=0;i<5;i++)就没问题了 应该是书排版错误,如果是for(i=0;j<5;i++),下面的循环里面j已经等于5了,这个循环只执行了一次,相应的排序也只做了一次,设计肯定不是这样的,因此断定是排版错误,你自己分析分析

东兴市19896035336: 一道c语言程序题: 输入5个字符串,按字典顺序将其重新排列输出.用字符串指针实现. -
宇文逸独一: #include<stdio.h>#include<string.h> void main() { void sort(char (*p)[20]); char a[5][20];//五行20列 int i; printf("请输入5个字符串:\n"); for(i=0;i<5;i++)//这里输入五个字符串 gets(a[i]); sort(a);//调用函数进行排列 } void sort(char (*p)[20]) ...

东兴市19896035336: C语言题目:编一个程序,输入5个字符,从中找出最大的字符并输出. -
宇文逸独一: 呵呵!! 将 max=*p[0]; 改为for(i=0;i max=p[i];就好了!!你可以看看!!!

东兴市19896035336: 用c语言编写程序,通过键盘输入5个字符串,存放在5*5的二维数组中,分别统计这些字符串中出现的数字,小写字母,大写字母,空格,其他字符的个数,并将这些字符打印出来 -
宇文逸独一: 下面是我的回答,供你参考,希望能够帮到你. #include <stdio.h> #include <stdlib.h> int main() { char c[5][5],ch; int i,j,D=0,X=0,KG=0,S=0,QT=0; for(i=0; i<5; i++) { for(j=0; j<5; j++) { scanf("%c",&c[i][j]); if(c[i][j]=='\n') scanf("%c",&c[i][j]); } } for(i=...

东兴市19896035336: C语言要求通过键盘输入5字符串,再调用函数sort给字符串从小到大排列,再调用print函数完成字符串输出. -
宇文逸独一: 看你代码原意,是想定义一个字符串数组strs.但是你写的char *strs[5];表示的是一个维度为5的指针数组.你可以把strs直接改成字符串数组,char strs[5][N],但你后面的函数参数类型也要跟着改.如果你不想改动其他函数,还继续使用指针数...

东兴市19896035336: 编写一段C语言程序,输入5个字符串;要求 -
宇文逸独一: #include <stdio.h> #include <stdlib.h> #include <string.h>#define N 5int comp1(const void *a, const void *b) {return strlen(*(char **)a) - strlen(*(char **)b); }int comp2(const void *a, const void *b) {return strcmp(*(char **)a, *(char **)b); }int main(...

东兴市19896035336: 用C语言编程从键盘输入五个字符串,按从小到大的顺序对它们进行排序. -
宇文逸独一: /*比较笨重的冒泡排序法,用到string中的串比较strcmp和串拷贝strcpy.amount是字符串的数量,length是字符串的长度,不管你是否习惯这么写,这样表示都是有好处的.我的编译器是visual studio 2008 C++.*/#include <stdio.h>#include <...

东兴市19896035336: c语言从键盘任意输入5个字符串,请按字典排序后,再输出. -
宇文逸独一: 如果是这个isortSring(char **p,int n)可以写

东兴市19896035336: C语言中从键盘上输入五个字符串,按从小到大的顺序对它们进行排序!!(TC2.0) -
宇文逸独一: 抱歉,是我疏忽了!呵呵! 下面还是举例来说明:去掉else后的问题在到底在哪里,为什么结果不对了.依旧a[0]="12345",a[1]="12452"; 前两个相等故不做if.第三四个a[1]值大,此处就本应该结束循环不再比较了,但是由于去掉了else...

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