C语言编程题: 输入10个字符串,将其从大到小排序后输出。

作者&投稿:斗欢 (若有异议请与网页底部的电邮联系)
c语言: 输入10个字符串,用选择排序法对十个字符串按大到小排序并输出~

#include
#include
#include
#define N 10/* 设定要输入的字符串个数,可更改 */

int cmp(char *p1,char *p2) /* 字符串比较函数 */
{int i=0;
while (*(p1+i)==*(p2+i))
if (*(p1+i++)=='\0') return 0; /* 这里是先判断*(p1+i)=='\0',然后再是i++ */
return (*(p1+i)-*(p2+i));
}

void sort(char *a[N]) /*排序函数*/
{char *temp;
int i,j;
for(i=0;i<N-1;i++)/* 选择排序 */
for(j=i+1;j<N;j++)
if(cmp(a[i],a[j])<0)
{temp=a[i];/* 交换的是字符串的地址,不是字符串的内容,可更改 */
a[i]=a[j];
a[j]=temp;
}
}
int main(void )
{int i;
char s[N][81],*p[N];/* 设定每个字符串不超过80字节 */
printf("Please input %d strings one by one:
",N);
for(i=0;i<N;i++)
{gets(s[i]);
p[i]=s[i];
}
sort(p);
printf("
The sequence after sort is:
");
for(i=0;i<N;i++)
printf("%s
",p[i]);
getch();
return 0;
}

运行结果:
Please input 10 strings one by one:
asdf
dfggf
jkhl
uiop
ghjk
aaaa
vnbmkgh
bbbb
dgfjyt
cccc

The sequence after sort is:
vnbmkgh
uiop
jkhl
ghjk
dgfjyt
dfggf
cccc
bbbb
asdf
aaaa

#define LINEMAX 20/*定义字符串的最大长度*/
int main()
{int i;
char**p,*pstr[5],str[5][LINEMAX];
for(i=0;i<5;i++)
pstr<i>=str<i>;/*将第i个字符串的首地址赋予指针数组pstr的第i个元素*/
printf("input 5 strings:
");
for(i=0;i<5;i++)
scanf("%s",pstr<i>);
p=pstr;
sort(p);
printf("strings sorted:
");
for(i=0;i<5;i++)
printf("%s
",pstr<i>);
}
sort(char**p)/*冒泡法对5个字符串排序函数*/
{int i,j;
char*temp;
for(i=0;i<5;i++)
{for(j=i+1;j<5;j++)
{if(strcmp(*(p+i),*(p+j))>0)/*比较后交换字符串地址*/
{temp=*(p+i);
*(p+i)=*(p+j);
*(p+j)=temp;
}
}
}
return 0;
}

扩展资料:printf()函数的调用格式为:printf("<格式化字符串>",<参量表>)。
其中格式化字符串包括两部分内容:一部分是正常字符,这些字符将按原样输出;另一部分是格式化规定字符,以"%"开始,后跟一个或几个规定字符,用来确定输出内容格式。
参量表是需要输出的一系列参数,其个数必须与格式化字符串所说明的输出参数个数一样多,各参数之间用","分开,且顺序一一对应,否则将会出现意想不到的错误。
比如:
int a=1234;
printf("a=%d
",a);
输出结果为a=1234。
scanf()是C语言中的一个输入函数。与printf函数一样,都被声明在头文件stdio.h里,因此在使用scanf函数时要加上#include<stdio.h>。
int scanf(const char*restrict format,...);
函数scanf()是从标准输入流stdin(标准输入设备,一般指向键盘)中读内容的通用子程序,可以说明的格式读入多个字符,并保存在对应地址的变量中。
如:
scanf("%d%d",&a,&b);
函数返回值为int型,如果a和b都被成功读入,那么scanf的返回值就是2。

#include<stdio.h> 

void swap1(int *p,int n){ 

int temp; 

for(int i=0;i<n-1;i++) 

for(int j=i+1;j<n;j++) 

if(p[i]>p[j]){ 

temp=p[i]; 

p[i]=p[j]; 

p[j]=temp; 

void swap2(int *p,int n){ 

int temp; 

for(int i=0;i<n-1;i++) 

for(int j=i+1;j<n;j++) 

if(p[i]<p[j]){ 

temp=p[i]; 

p[i]=p[j]; 

p[j]=temp; 

int main(){ 

char n;int a[15]; 

while(~scanf("%c",&n)){ 

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

scanf("%d",&a[i]); 

getchar(); 

if(n=='A') swap1(a,10); 

else swap2(a,10); 

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

if(i==0)printf("%d",a[i]); 

else printf(" %d",a[i]); 

printf("
"); 

运行效果:

扩展资料:

printf函数使用注意事项

1、域宽

%d:按整型数据的实际长度输出。

如果想输出指定宽度可以指定域宽,%md--&gt;m域宽,打印出来以后,在控制台上,显示m位;

如果我们要打印的数的位数如果超过我们设定m则原样输出;

如果我们要打印的数的位数如果小于我们设定的位数,则补空白,具体如下:

如果m为正数,则左对齐(左侧补空白);

如果m为负数,则右对齐(右侧补空白)。

2、转义字符

如果想输出字符"%",则应该在“格式控制”字符串中用连续两个%表示。

如:printf("%f%%",1.0/3);输出结果:0.333333%。



#include<stdio.h>
#include<string.h>
void main()
{
int n,,a,b;
char ch[100];
char fu[10][100];
printf("请输入十个字符串\n");
for(n=0;n<10;n++)
scanf("%s",fu[n]);
for(a=0;a<9;a++)
for(b=1;b<9-a;b++)
{

if(strcmp(fu[a],fu[b+a])>0)
{

strcpy(ch, fu[a]);
strcpy(fu[a], fu[b+a]) ;
strcpy(fu[b+a], ch) ;

}
}
for(n=0;n<10;n++)
printf("%s\n",fu[n]);

}

#include <string.h>
#include <stdio.h>
int main()
{
char a[10][20];
for(int i=0;i<10;i++)
scanf("%s",a[i]);
for(int i=0;i<9;i++)
for(int j=0;j<9-i;j++)
if(strcmp(a[j],a[j+1])>0)
{
char t[10];
strcpy(t,a[j]);
strcpy(a[j],a[j+1]);
strcpy(a[j+1],t);
}
for(int i=0;i<10;i++)
printf("%s\n",a[i]);
return 0;
}

望采纳


尼勒克县17314827841: C语言题,求解从键盘上输入10个字符,分别统计其中字母(不区分大、小写)、数字字符和其他字符的个数. 本人初学者,请不要用太深的程序编写,谢谢 -
类荣赛若:[答案] 授之以鱼不如授之以渔,我教你方法吧 你要统计的是三种量,所以的事先定义好三个变量来保存结果,假设字母数为a,数字字符为b,其他字符为c,用if来比较每次输入的字符的ASICC码与限定界限的比较结果来决定a,b,c是否加1 字母的ASICC码...

尼勒克县17314827841: C语言编程题: 输入10个字符串,将其从大到小排序后输出. -
类荣赛若: #include<stdio.h> void swap1(int *p,int n){ int temp; for(int i=0;i<n-1;i++) for(int j=i+1;j<n;j++) if(p[i]>p[j]){ temp=p[i]; p[i]=p[j]; p[j]=temp; } } void swap2(int *p,int n){ int temp; for(int i=0;i<n-1;i++) for(int j=i+1;j<n;j++) if(p[i]<p[j]){ temp=p[i]; p[i]=p[j]; p[j]=...

尼勒克县17314827841: C语言程序题目:输入10个字符串,统计第一个字符是'a'的字符串的个 -
类荣赛若: 123456789101112 #include <stdio.h> intmain(intargc,char*argv[]){ chara[10][100],i,k; printf("Input 10 strings...\n"); for(k=i=0;i<10;i++){ scanf("%100s",a[i]); if(*a[i]=='a') k++; } printf("\n%d\n",k); return0; }

尼勒克县17314827841: C语言编程从键盘上输入一含有10个字符上的字符串,将其下标为1、3、5、7、9的字符改为大写字母后输出 .悬 -
类荣赛若: int main() {char str[100];memset(str, 0, 100); // 数组清零 do{printf("%Input the string:\n");gets(str);}while(strlen(str) < 10); // less than 10 charactors for(int i = 1; i <= 9; i++){if(i % 2 != 0){printf("%c", toupper(str[i]));}}printf("\n"); }

尼勒克县17314827841: c程序设计题:从键盘输入十个字符串,用选择排序法从大到小排列,并输出结果. 我的程序是这样的: -
类荣赛若: #include<stdio.h> #include<string.h> int main() {char str[10][100],temp[100]; //temp定义字符串int i,j,k; //int 和i靠的很近 printf("输入10个字符串\n"); for(i=0;i<10;i++) gets(str[i]); printf("\n"); for(i=0;i<9;i++) { k=i; for(j=i+1;j<10;j++) if(strcmp(str...

尼勒克县17314827841: 用c语言编写程序:从10个字符串中,查找最长的字符串.每个字符串不超 -
类荣赛若: 先输入10个字符串,然后依次计算字符串长度,找到最长的一个,并把这个字符串输出即可.代码如下:#include <stdio.h>#include <string.h> int main() { char s[10][100]; int i; int max_i, max_len = 0; for(i = 0; i < 10; i ++) scanf("%s",a[i]);//输入...

尼勒克县17314827841: 任意输入10个字符串,求出这10个字符串的最大值,并显示出来 用c语言 -
类荣赛若: #include #include void main() { char *p[10],*max,a[50]; int i; for(i=0;i

尼勒克县17314827841: C语言:从键盘输入10个字符串,找出最长的一串. -
类荣赛若: 得到每个字符串的长度,比较就可以了.有直接得到字符串长度的函数.int strlen(char*p);也可以自己实现这个函数.

尼勒克县17314827841: c程序输入10个字符串,并输出第一个字符串的前1个字符,第二个字符串的前2个字符 -
类荣赛若: #includeint main() { int i,j; char str[10][81]; //可以根据情况改第二个范围81 for(i=0;i<10;i++) { for(j=0;j<81;j++) scanf("%c",&str[i][j]); fflush(stdin); //清空键盘缓冲区 } for(i=0;i<10;i++) printf("%c",str[i][i]); return 0; }

尼勒克县17314827841: C语言:在主函数中输入十个等长的字符串,对这十个字符串进行排序,要求使用指针. -
类荣赛若: 在主函数中输入十个(可等长)的字符串,对这十个字符串进行排序(字典顺序输出与输入的不一样 对指针数组分配个长度 可以这样 { s[i] = (

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