『壹』 c語言程序 中文按首字母排序
#include <stdio.h>
#include <string.h>
#define MAX_NAME 20 //最大名字長度
#define MAX_NUM 100 //最大學生人數
void sort_bubble(char (*pc)[MAX_NAME],int n)//排序函數
{
int i,j;
char str[MAX_NAME];
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(strcmp(pc[i],pc[j])>0)
{
strcpy(str,pc[i]);
strcpy(pc[i],pc[j]);
strcpy(pc[j],str);
}
}
}
}
void display_name(char (*pc)[MAX_NAME],int n)//顯示這n個姓名
{
int i;
for(i=0;i<n;i++)
{
printf("%s\n",pc[i]);
}
}
int main()
{
int i=1,n;
char str[MAX_NUM][MAX_NAME];
printf("請輸入學生總數:");
scanf("%d",&n);
while(i<=n)
{
printf("請輸入第%d個學生姓名:",i);
scanf("%s",str[i++-1]);
}
printf("排序前的學生名單如下:\n");
display_name(str,n);
sort_bubble(str,n);
printf("排序後的學生名單如下:\n");
display_name(str,n);
return 0;
}
說明:
1:採用的是冒泡排序,用快速排序當然快些,但我忘了
2:已驗證通過,結果正確。
3:隨意輸入人數和姓名,只要數組不越界就沒有問題!
4:兩個函數:排序和顯示
5:給分+好評
『貳』 利用c語言編制輸入姓名後按字母順序排列
試了試,可以排序啊。有幾個簡單的錯誤不知道是不是因為你提問時打錯了。第一個,printf提示是不能直接用漢語的吧。還有就是if(strcmp(name[min],name[j]>0))括弧加的不大對,if(strcmp(name[min],name[j])>0)然後,我輸入就可以了。什麼內存錯誤,沒有發現。如果有問題,請及時補充。
『叄』 C語言 字母排列
1、該排序演算法是選擇排序演算法
2、在i位置為大寫字母時進行第二層遍歷
3、如果判斷不為大寫字母,不需要j++之後continue,否則會跳過一個字母
修改後代碼如下,修改位置注釋給出:
//1072字母排列
#include<stdio.h>
#include<string.h>
intmain()
{
chara[65];
inti,j,b,min;
gets(a);//讀取一行內容
b=strlen(a);
//冒泡排序法,i為前面的字元,j為後一個字元
for(i=0;i<b-1;i++)
{
if(a[i]<'A'||(a[i]>'Z')||a[i]=='')continue;/////judge
for(j=i+1;j<b;j++)
{
if(a[j]<'A'||(a[j]>'Z')||a[j]=='')
{
//j++;//delete
continue;
}
if(a[i]>a[j])//從小到大排序,小的排左邊,大的排右邊
{
min=a[j];
a[j]=a[i];
a[i]=min;
}
}
}
for(i=0;i<b;i++)
printf("%c",a[i]);
return0;
}
『肆』 C語言字母排序問題
#include<stdio.h>
#include<string.h>/*string包含gets,puts,strlen函數*/
void main()
{
char n[500];/*定義具有五百個字元的數組n,可以根據字元串的長度適當調整*/
int i,j,x,temp;
printf("輸入n個字元串:");/*屏幕輸出"輸入n個字元串:"*/
gets(n);/*鍵盤敲入數組n*/
x=strlen(n);/*將n數組的字元長度賦給x*/
for(i=0;i<=x-1-1;i++)/*冒泡法排序:進行數組的ascii碼排序,共需進行x-1-1組排序,
0到x-1為數組n的長度x,故只需進行x-1-1組排序*/
for(j=0;j<x-1-i;j++)/*第j組排序要排序為j<x-1-i次*/
{
if(n[j]>n[j+1])/*如果這個數比下面一個數大,則這兩個數互換*/
{
temp=n[j];
n[j]=n[j+1];
n[j+1]=temp;
}
}
puts(n);/*輸出排序後的字元數組n*/
}
在vc++6.0運行了下,可以。
『伍』 如何用C語言給字母排序
這個其實就是排序,因為char類型跟int類型一樣的也是數字,可以比較大小的,然後輸出就可以了。
『陸』 C語言如何設計一個對輸入的字母進行排序的C語言程序
字母是ASCII表示的,你可以直接比大小A~Z對應65~90,a~z是對應97~122,寫程序時你先判斷是大小還是小寫,再統一轉換為大小或小寫,然後直接比較就行了
『柒』 C語言中輸入一串字元,怎樣讓它按照字母從小到大的順序排列
這可以把字元串輸入到字元數組中,然後採用排序的方法來實現:
(需要包含<string.h>頭文件)
char t,s[200];
int i,i;
gets(s);
for(i=0;i<strlen(s)-1;i++)
for(j=0;j<strlen(s)-1-i;j++)
if(s[j]>s[j+1])
{t=s[j]; s[j]=s[j+1]; s[j+1]=t;}
puts(s);
『捌』 C語言:將輸入的字元串按首字母順序排列。
#include<stdio.h>
#include<string.h>
void sort(char *a[]);
void print(char *a[]);
int main()
{
char *a[] ={"ceo","define","basic","abc","empty"};
printf("原來的序列是: ");
print(a);
sort(a);
printf(" 排序後的序列是: ");
print(a);
printf(" ");
return 0;
}
void sort(char *a[])
{
int i,j;
char *temp;
for(i=0;i<4;i++)//注意是i<4
{
for(j=0;j<4;j++)//注意是j<4,因為下面要+1和後面的那個字元串比較
{
if(strcmp(a[j],a[j+1])>0)//字元串比較:>0表示前面的字元串比後面的大則交換
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
}
void print(char *a[])
{
int i;
for(i=0;i<5;i++)
{
printf("%s ",a[i]);
}
}
運行效果:
(8)c語言編譯按字母排序擴展閱讀:
return 0的用法:
return的作用是結束正在運行的函數,並返回函數值。return後面可以跟一個常量,變數,或是表達式。
函數的定義一般是這樣的,例如:
inta(inti)//第一個int是函數的返回值的類型,也就是return後面跟的值的類型,a是函數的名稱,括弧里的是傳遞給函數的參數,int是參數的類型,i是參數的名字
{
...//省略函數體內容
returnb;//b必須與函數頭的返回值一致(此處為int型)
}
簡單函數舉例:
intaddOne(intb)
{
returnb+1;
}
該函數的作用是取得一個數,將這個數加上1,再將結果返回
調用時這樣:
intresult=addOne(2);//此時result的值為3
函數括弧里的參數也可以為變數或能算出值的表達式
以上就是一個基本的函數,一般的函數都有返回值,也就是return後面跟的值,返回值可以為各種數據類型,如:int,float,double,char,a[](數組),*a(指針),結構或類(c++)
但不是所有函數都有返回值,如果某個函數無返回值,那麼返回值的位置則為「void」關鍵字,此時函數體中無返回值,即無return的值。但是函數中也可出現return,即一個空的return句子,其作用是使函數立即結束,如voidprint()//括弧中為空表示無傳遞參數、
{
printf("a");
printf("b");
return;//函數執行到此處結束
printf("c");
}//該函數只執行到return語句處,即屏幕上輸出的為"ab"
『玖』 c語言一個文本內所有單詞按首字母排序
先將文本里的所有單詞賦值給二維字元串變數string[i][j],取每個的單詞的首字母例如string[i][0]進行比較排序,排序演算法網上多得是,可以自己找一種做
for(i=0;i<9;i++) /* 冒泡法排序 */
for(j=0;j<10-i-1;j++)
if(a[j]>a[j+1])
{t=a[j];/* 交換a[i]和a[j] */
a[j]=a[j+1];
a[j+1]=t;
}