c语言中从键盘输入N个字符串,将字符串按从小到大的顺序排列并输出

作者&投稿:酉汪 (若有异议请与网页底部的电邮联系)
c语言中从键盘输入N个字符串,将字符串按从小到大的顺序排列并输出~

1
输入字符串;
2
对字符串进行排序;
3
输出。
排序中需要注意:
1
用strcmp比较字符串;
2
用strcpy执行字符串的赋值。
代码如下:
#define N 50
int main()
{
char s[N][100];
int i,j;
for(i = 0; i < N; i ++)
scanf("%s",s[i]);
for(i = 0; i < N-1; i ++)
{
for(j = i+1; j < N; j ++)
{
if(strcmp(s[i],s[j])>0)
{
char t[100];
strcpy(t,s[i]);
strcpy(s[i],s[j]);
strcpy(s[j],t);
}
}
}
for(i = 0; i < N; i ++)
puts(s[i]);
}

/*比较笨重的冒泡排序法,用到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;
}

代码如下:

#define N 10 int main(){char str[N][100]; int i,j; for(i = 0; i < N; i ++)  scanf("%s",str[i]); for(i = 0; i < N-1; i ++) { for(j = i+1; j < N; j ++){ if(strcmp(str[i],str[j])>0) { char temp[100]; strcpy(temp,str[i]); strcpy(str[i],str[j]); strcpy(str[j],temp);} } } for(i = 0; i < N; i ++)  puts(str[i]);}。

运行代码:

执行结果:

扩展资料

在C语言编程中,常常需要对字符串比较和排序,经常遇到对字符串整体的控制等操作,strcmp 比较str1和str2的大小,而其它的c函数strlen(),字符串拷贝函数strcpy()/strncpy(),字符串比较函数 strcmp(),字符串连接函数strcat()/strncat()等,都可以帮助我们快速方便的对字符串操作。

参考资料:百度百科-C语言



1 输入字符串;

2 对字符串进行排序;

3 输出。

排序中需要注意:

1 用strcmp比较字符串;

2 用strcpy执行字符串的赋值。

代码如下:

#define N 50
int main()
{
    char s[N][100];
    int i,j;
    for(i = 0; i < N; i ++)
        scanf("%s",s[i]);
    for(i = 0; i < N-1; i ++)
    {
        for(j = i+1; j < N; j ++)
        {
            if(strcmp(s[i],s[j])>0)
            {
                char t[100];
                strcpy(t,s[i]);
                strcpy(s[i],s[j]);
                strcpy(s[j],t);
            }
        }
    }
     for(i = 0; i < N; i ++)
        puts(s[i]);
}


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

char a[100][200]; //定义最大100个,每个200个字符的字符串数组
int i,j,n=10;//n为实际字符串个数
void sort()
{
char temp[200];
for(j=0;j<n;j++)
for(i=0;i<n-j-1;i++)
{
if(strcmp(a[i],a[i+1])>0)
{
strcpy(temp,a[i]);
strcpy(a[i],a[i+1]);
strcpy(a[i+1],temp);
}
}
}

void main()
{
printf("请输入字符串个数n的值:\n");
scanf("%d",&n);
getchar(); //清除回车符
for(i=0;i<n;i++)
{
printf("\n第%d个字符串:",i+1);
gets(a[i]);
}
printf("\n排序前:\n");
for(i=0;i<n;i++)
puts(a[i]);
sort();
printf("\n排序后:\n");
for(i=0;i<n;i++)
puts(a[i]);
}

你说的N是固定的还是任意指定的 还是不指定任意输入字符后确定的
其实这很简单 如果是N固定 直接用数组就行 如果是不指定的话 会用到malloc和realloc函数 排序用冒泡排序就行了

字符串? 小到大~~~字母是按那个对应的算?还是只算数字的?


C语言由键盘输入正数n(n<30),要求输出具有n行的如下图案。
int n,i,j; printf("请输入n(0<n<30)的值:\\n"); scanf("%d",&n); for(i=0;i<n;i++) { for(j=0;j<n;j++) { if(i<n\/2) \/\/前n\/2行 { \/\/什么情况下输出空格n为奇数和偶数两种情况都包含进去了 if((n%2==1&&j>n\/2-i&&j<n\/2+i)||(n%2==0&&j>n\/2-1-i&&j<n\/...

从键盘输入n个数(n=100,n个数中可能有重复的数),输出n个数中不重复的...
c 语言程序:include <stdio.h> int fun(int *a, int n){ int i,j,k,m;m = n;for (i=1;i<m;i++){ for (j=0;j<i;j++) { if (a[i]==a[j]){ for(k=i+1;k<m;k++) a[k-1]=a[k]; m=m-1;i=i-1;break;} };};return m;} int main(){ int a[100]...

C语言,从键盘输入n(n<10)本书的名称和定价存入结构数组中,查找定价最...
1、首先,定义5个整型变量,实现程序的运算。2、输入方阵的边长,保存在变量n中。3、定义两个整型数组,保存方阵的各元素,以及各数字是否已输出的判断。4、用两层for循环,控制方阵的各元素。5、产生方阵范围内的随机数值,保存在变量r中。6、如果产生的数值已存在,则重新获取随机数。7、将随机数...

用C语言编写一个程序:从键盘输入n(0<N<100)个整数,计算并输出其中出现...
int N;int arr[MAX];record rd;int ct;int find;\/\/ 初始化结构体 for (i = 0; i < MAX; i++){ rd.counter[i] = 0;rd.number[i] = 0;} \/\/ 输入整数的个数N printf("Enter N (0<N<100): ");scanf("%d", &N);\/\/ 采用数组记录输入的整数 printf("Enter %d number :...

C语言编程,从键盘上输入n(n<=20)个整数存入一维数组
include<stdio.h> void negasort(int *array,int n);\/\/逆序存放函数 int main(){ int arry[20];int n;printf("请输入数组元素个数:");scanf("%d",&n);printf("请输入数组元素:");for(int i=0;i<n;i++)scanf("%d",arry+i);negasort(arry,n);\/\/调用逆序存放函数 for(int j=...

c语言从键盘上输入一正整数n在以上含的正整数序列中找出20个各位数之...
c语言从键盘上输入一正整数n在以上含的正整数序列中找出20个各位数之和为5的整数  我来答 你的回答被采纳后将获得: 系统奖励15(财富值+成长值)+难题奖励20(财富值+成长值)1个回答 #热议# 职场上受委屈要不要为自己解释?听不清啊 高粉答主 2018-06-29 · 繁杂信息太多,你要学会辨别 知道顶级...

从键盘输入一个正整数N,请输出大于N的第3个素数用C语言怎么做
include<stdio.h> void main(){ int n,i,flag=0;scanf("%d",&n);while (n++){ for (i=2;i<=n;i++)\/\/判断素数 if ((n)%i==0)break;if (n==i){ flag++;if (flag==3)\/\/输出第三个素数并推出while循环 { printf("第三个素数:%d\\n",n);break;} else n++;} } } ...

从键盘输入一个整数N(N>=0),然后再输入N个整数, 按从小到大的顺序输出...
include<stdio.h> int main(void){ int n,i,j,t;printf("please enter anumber:\\n");scanf("%d",&n);int a[n];printf("please enter %d number:\\n",n);for(i=0;i<n;i++){ printf("enter %dth number:",i+1);scanf("%d",&a[i]);} for(i=0;i<n-1;i++)for(j=0...

从键盘输入n(n>0)个整数,求其和(先输入个数,在输入相应的具体数)用c+...
using namespace std;int main(){ int n;cin >> n;int sum = 0, a;while (n--){ cin >> a;sum += a;} cout << sum << endl;}

用c语言.从键盘上输入N个整数,按逆序输出这些数。
include"stdio.h"define N 10 main(){ int a[N]={...},i;printf("请输入数值:\\n");for(i=0;i<N;i++)scanf("%d",a[i]);printf("逆序输出的结果为:\\n");for(i=N-1;i>=0;i--)printf("%3d",a[i]);}

任城区17011765853: c语言 如何从键盘输入字符串?????? -
咎狄转移: c语言从键盘输入字符串的步骤如下: 1.首先我们新建一个dev C++的项目. 2.接下来在项目中新建C语言程序文件. 3.然后在C语言文件中声明一个字节数组. 4.接下来我们通过printf函数提示用户输入字符串,通过scanf接收用户输入的字符串. 5.接着在通过printf函数输出用户输入的内容. 6.最后运行C语言程序,我们输入内容以后就可以输出了.这样就解决了c语言从键盘输入字符串的问题了.

任城区17011765853: c语言,对字符串数组进行排序,从键盘中输入一个6行的字符串,并将这六行的字符 -
咎狄转移: 参考代码:#include <stdio.h>#include <string.h>#define N 100 int main() { char str[N][N], tmp[N]; int i, j, n; printf("输入要输入的字符串的个数:\n"); scanf("%d", &n); for (i = 0; i < n; i++) { scanf("%s", str[i]); } for (i = 0; i < n - 1; i++) { for (j = ...

任城区17011765853: c语言编程,从键盘输入字符串,并在字符串第m个字符截取n个字符,例如输入字符串“welcome”,m=2,n=3则截取的字符串elc
咎狄转移: #include <stdio.h> #include <string.h> void _intercept(char *des, char *sor, unsigned m, unsigned n){ if (m + n - 1 <= strlen(sor)){ for (unsigned i = 1; i < m; ++i) sor++; for (unsigned i = 1; i <= n; ++i) *(des++) = *(sor++); } } int main(void){ char sor[8] ...

任城区17011765853: c语言从键盘上输入N个整数保存在数组中,用选择法排序将其按升序排列并将结果显示 -
咎狄转移: #include <stdio.h> #include<stdlib.h> #define N 10 void main() { int i,j,temp; int *a=(int *)malloc(sizeof(int)*N);//因为你的N我不知道好大,所以就是这样定义数组. for(i=0;i<N;i++) { scanf("%d",&a[i]); } for(i=0; i<N-1; i++) {for(j=i+1; j<N; j++){if(...

任城区17011765853: C语言:如何给多个字符串定义,但不初始化,从键盘上输入数据? -
咎狄转移: /*二维字符数组中就包含了很多个字符串,可以定义一个二维字符数组,再用for循环输入数据*/char 2_d_character_array[50][10]; //这样就可以输入50个汉字或英文单词了,后面的10是字符 串的长度 int a;char b[10];for (a=0;a<50;a++) //这...

任城区17011765853: C语言:输入N个字符串,以空字符串结束,并对其进行选择排序与冒泡排序方法排序. -
咎狄转移: // 冒泡排序 int BubbleSort(int a[], int len) {int i, j, temp, CompareNum=0; for(i=0; i for(j=0; j { if(a[j] > a[j+1]) // 将较大的值放到后面 {temp = a[j]; a[j] = a[j+1]; a[j+1] = temp; } CompareNum++; // 比较次数加1 } return CompareNum; }// 选择排序 void ...

任城区17011765853: 用C语言,从键盘上输入两个字符串和整数n,将第二个字符串插在第一个字符串的n位置开始处并输出. -
咎狄转移: #include#include void main() { char s1[50],s2[50],s[100]; int n,i; printf("请输入第一个字符串:\n"); gets(s1); printf("请输入第二个字符串:\n"); gets(s2); printf("请输入插入位置,注意不要大于%d:\n",strlen(s1)); scanf("%d",&n); for(i=0;is[i]=s1[i]; for(i=0;i{ s[n+strlen(s2)+i]=s1[n+i]; s[n+i]=s2[i]; } puts(s); }

任城区17011765853: C语言编程题:输入N个英文单词,建立字符串数组,按字典顺序输出这些英文单词,要求用指针实现. -
咎狄转移: #include #defineN5 voidswap(char*p1,char*p2){ chartemp[100]; strcpy(temp,p1); strcpy(p1,p2); strcpy(p2,temp); } intmain(){ inti,j; charstr1[N][100],*str[N]; for(i=0;iscanf("%s",*(str1+i)); } for(i=0;istr[i]=*(str1+i); } for(i=0;ifor(j=i+1;jif(strcmp(str[i],str[j])>...

任城区17011765853: c语言编程题:输入n个字符串,按有小到大顺序输出. -
咎狄转移: #include#include int main(){ int i,k,t; char tem[1000],a[10][1000]; //声明字符串二维数组 和交换用的中间数组 for(i=0;i scanf("%s",a[i]); for(i=0;i for(k=i;k if(strcmp(a[i],a[k])==1){ //利用strcmp函数比较俩个字符串的大小 a>b 值为1 a strcpy(tem,a[i]); ...

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