聲明一個(gè)字符串指針數(shù)組存放每個(gè)字符串的首地址,調(diào)用庫(kù)函數(shù)qusort按題目要求對(duì)字符串指針排序,不移動(dòng)源字符串。關(guān)鍵是要設(shè)計(jì)一個(gè)好的比較函數(shù),精巧地解決“按長(zhǎng)度、長(zhǎng)度相等時(shí)按大小”排序的問(wèn)題。舉例代碼如下:
為那坡等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及那坡網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為成都做網(wǎng)站、網(wǎng)站制作、那坡網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!
//#include?"stdafx.h"http://If?the?vc++6.0,?with?this?line.
#include?"stdio.h"
#include?"string.h"
#include?"stdlib.h"
#define?N?10 //字符串個(gè)數(shù)
#define?LN?21 //限制字符串長(zhǎng)度為20
int?mycmp(const?void?*a,const?void?*b){//比較函數(shù)
char?*pa=*(char?**)a,*pb=*(char?**)b;
int?x=int(strlen(pa)-strlen(pb));//依長(zhǎng)度比較
return?x???x?:?strcmp(pa,pb);//長(zhǎng)度相等時(shí)依大小比較
}
int?main(void){
int?i=0,j=0;
char?*f[N],w[LN*N];//聲明指針數(shù)組f和字符串總空間
printf("Input?%d?string(s)(length=%d)...\n",N,LN);
while(iN){//輸入并將字符串首址賦給f[i]
if(scanf("?%[1234567890]",f[i]=w+j)0??strlen(f[i])LN)
i++,j+=LN;
else?printf("Error,?redo:?Required?length?less?than?%d:",LN);
}
qsort(f,N,sizeof(char?*),mycmp);//調(diào)用庫(kù)函數(shù)對(duì)字符串指針排序
for(i=0;iN;printf("%s\n",f[i++]));//輸出...
return?0;
}
沒(méi)有這樣的庫(kù)函數(shù),都比較簡(jiǎn)單的,自己寫個(gè)好了
如果是字符串?dāng)?shù)組,strchrstring.h可以查找某個(gè)字符是否在這個(gè)字符串?dāng)?shù)組中
沒(méi)有的。C語(yǔ)言是較為基礎(chǔ)的源語(yǔ)言,函數(shù)庫(kù)不包含更多的函數(shù),用雙重for循環(huán)已經(jīng)是最簡(jiǎn)便也是最簡(jiǎn)潔的表現(xiàn)形式了。但就字符而言,無(wú)論是存儲(chǔ)還是輸入都更為麻煩,所以庫(kù)函數(shù)用的多。
給你學(xué)習(xí)C語(yǔ)言的建議是:不要偷懶,多想想怎么用最基礎(chǔ)的語(yǔ)言寫代碼,這對(duì)程序思維的培養(yǎng)以及日后進(jìn)一步的學(xué)習(xí)代碼都是有好處的。
滿意請(qǐng)采納!有問(wèn)題隨時(shí)可以交流!
#include
"stdio.h"
void
input(int
a[10])
//給一維數(shù)組輸入數(shù)據(jù)
{
int
i;
for(i=0;i10;i++)
scanf("%d",a[i]);
}
void
output(int
a[10])
//輸出一維數(shù)組輸入數(shù)據(jù)
{
int
i;
for(i=0;i10;i++)
printf("%d
",a[i]);
}
int
main()
{
int
b[10];
input(b);
//調(diào)用input函數(shù)給數(shù)組b賦值
output(b);//調(diào)用output函數(shù)輸出數(shù)組b中的值
}
給你看一下我的代碼
#includestdio.h
void main(){
int a[10],b[10],i,j,temp;
for(i=0;i10;i++){
printf("請(qǐng)輸入第%d個(gè)數(shù):",(i+1));
scanf("%d",a[i]);
//保存數(shù)組,因?yàn)檩斎胪陻?shù)組要冒泡排序,排序后的元素順序可能和原數(shù)組不一樣
b[i]=a[i];
}
//冒泡排序,求最大值
for(i=0;i9;i++){
for(j=0;j9-i;j++){
if(a[j]a[j+1]){ //這里控制的升序還是降序,我這是降序
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
//查找最大值在原數(shù)組的位置
for(i=0;i10;i++){
if(b[i]==a[0]){ //降序的話最大值是a[0],升序的話最大值是a[9]
break; //一旦找到最大值,馬上跳出循環(huán)
}
}
printf("最大值是%d,它在原數(shù)組中是第%d個(gè)元素!\n",a[0],(i+1));
}
#include?stdio.h
/*比較兩個(gè)字符串*/
/*src、dst相等?return?1*/
/*src比dst短?return?-2*/
/*src比dst長(zhǎng)?return?2*/
/*src、dst長(zhǎng)度一致但不相等?return?-1*/
int?stringCmp?(char?*src,?char?*dst)?{??
if?(strlen?(src)??strlen?(dst))
return?-2;
else?if?(strlen?(src)??strlen?(dst))
return?2;
else?{
while?(*src??*dst)?{
if?(*src?!=?*dst)
return?-1;
src++;
dst++;
}
return?1;
}
}
/*合并兩個(gè)字符串*/
void?mergeString(char*?str1,?char*?str2,?char*?merge)?{
while?(*merge++?=?*str1++);?/*復(fù)制str1并將指針移動(dòng)到字符串的末尾的下一個(gè)位置*/
merge--;?/*退到字符串的末尾*/
while?(*merge++?=?*str2++);?/*從末尾(\0)的位置開(kāi)始將str2拷貝進(jìn)來(lái)*/
*merge?=?'\0';
}
int?main(void)?{
char?*str1_1="hel",*str1_2="lo",?*merge1;
char?*str2_1="ness",*str2_2="happy",?*merge2;
char?*str3_1="hi",*str3_2="hi",?*merge3;
char?*str4_1="hello",*str4_2="world",?*merge4;
puts?("第1組字符串:");
puts?(str1_1);
puts?(str1_2);
if?(stringCmp?(str1_1,?str1_2)?==?1)
puts?(str1_1);
else?if?(stringCmp?(str1_1,?str1_2)?==?-2)?{
mergeString?(str1_2,?str1_1,?merge1);
puts?(merge1);
}
else?if?(stringCmp?(str1_1,?str1_2)?==?2?||?stringCmp?(str1_1,?str1_2)?==?-1)?{
mergeString?(str1_1,?str1_2,?merge1);
puts?(merge1);
}
putchar?('\n');
puts?("======================================================");
putchar?('\n');
puts?("第2組字符串:");
puts?(str2_1);
puts?(str2_2);
if?(stringCmp?(str2_1,?str2_2)?==?1)
puts?(str2_1);
else?if?(stringCmp?(str2_1,?str2_2)?==?-2)?{
mergeString?(str2_2,?str2_1,?merge2);
puts?(merge2);
}
else?if?(stringCmp?(str2_1,?str2_2)?==?2?||?stringCmp?(str2_1,?str2_2)?==?-1)?{
mergeString?(str2_1,?str2_2,?merge2);
puts?(merge2);
}
putchar?('\n');
puts?("======================================================");
putchar?('\n');
puts?("第3組字符串:");
puts?(str3_1);
puts?(str3_2);
if?(stringCmp?(str3_1,?str3_2)?==?1)
puts?(str3_1);
else?if?(stringCmp?(str3_1,?str3_2)?==?-2)?{
mergeString?(str3_2,?str3_1,?merge3);
puts?(merge3);
}
else?if?(stringCmp?(str3_1,?str3_2)?==?2?||?stringCmp?(str3_1,?str3_2)?==?-1)?{
mergeString?(str3_1,?str3_2,?merge3);
puts?(merge3);
}
putchar?('\n');
puts?("======================================================");
putchar?('\n');
puts?("第4組字符串:");
puts?(str4_1);
puts?(str4_2);
if?(stringCmp?(str4_1,?str4_2)?==?1)
puts?(str4_1);
else?if?(stringCmp?(str4_1,?str4_2)?==?-2)?{
mergeString?(str4_2,?str4_1,?merge4);
puts?(merge4);
}
else?if?(stringCmp?(str4_1,?str4_2)?==?2?||?stringCmp?(str4_1,?str4_2)?==?-1)?{
mergeString?(str4_1,?str4_2,?merge4);
puts?(merge4);
}
putchar?('\n');
puts?("======================================================");
putchar?('\n');
getch?();?/*屏幕暫留*/
return?0;
}
運(yùn)行結(jié)果
網(wǎng)站欄目:c語(yǔ)言數(shù)組庫(kù)函數(shù) c語(yǔ)言數(shù)學(xué)庫(kù)函數(shù)
URL網(wǎng)址:http://www.rwnh.cn/article12/hicpgc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開(kāi)發(fā)、手機(jī)網(wǎng)站建設(shè)、網(wǎng)站策劃、網(wǎng)站設(shè)計(jì)公司、建站公司、ChatGPT
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)