最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

計(jì)算機(jī)二級C語言上機(jī)題庫(五)

2021-03-01 08:08 作者:朝顏晚扶桑  | 我要投稿

三、字符題

110、依次取出字符串中所有的小寫字母以形成新的字符串,并取代原字符串。

void fun(char *s)

{int i=0; char *p=s;while(*p){if(*p>=’?a’&&*p<=’?z’)s[i]=*p;i++;}p++;}s[i]=’\0’;}

111、把字符串str中的數(shù)字字符轉(zhuǎn)換成數(shù)字并存放到整型數(shù)組bb中,例如:str=“Bcd123e456hui890”,結(jié)果為:123456890.

int fun(char s[],int bb[],int num)

{int I,n=0;for(i=0;i<num;i++){if(s[i]>=’0’&& s[i]<=’9’)} bb[n]= s[i]-’0’;n++;}}return?n;}

112、若形參ch中是數(shù)字字符“0”—“9”,則“0”轉(zhuǎn)換成“9”,“1”轉(zhuǎn)換成“8,”“2”轉(zhuǎn)換成“7”……,“9”轉(zhuǎn)換成“0”;若是其它字符串則保持不變;并將轉(zhuǎn)換后的結(jié)果為函數(shù)值返回。

Char?fun(char?ch)

{if(ch>=’0’&& ch<=’9’)return 9-(ch-0);return ch;}

113、把s串中所有的字母改寫成該字母的下一個(gè)字母,字母z改寫成字母a。大寫字母仍為大寫字母,小寫字母仍為小寫字母,其它的字符不變。例如:s串中原有的字符串為:Mn123Zxy,則調(diào)用該函數(shù)后,s串中的內(nèi)容為:No.123Ayz。

fun(char?*s)

{?char??*p=s;while(*p){if(*p= =?z)*p=’А’;else if(*p= =?z’)p=?a; else if (isalpha(*p))*p=(*p)+1;p++;}}

114、數(shù)組str全由大小寫字母字符組成。編寫函數(shù):把str中的字母轉(zhuǎn)換成緊接著的下一個(gè)字母,如果原來的字母為“z”或“Z”,則相應(yīng)的轉(zhuǎn)換成“a”或“A”,結(jié)果保存在原函數(shù)中。例如,若輸入“StudentZz”,則輸出“TuvefouAa”。

void fun(char s[])

{int i;for(i=0;s[i]!=\0;i++){if(s[i]= = z|| s[i]= = Z)s[i]-=25;else s[i]+=1;}}

115、給定程序的功能是將大寫字母轉(zhuǎn)換為對應(yīng)小寫字母之后的第五個(gè)字母;若下寫字母為vz,,使小寫字母的值減21。轉(zhuǎn)換后的小寫字母作為函數(shù)值返回。例如,若形參是字母A,則轉(zhuǎn)換后為小寫字母f;若形參是字母W,則轉(zhuǎn)換為小寫字母b。

Char?fun(char?c)

{if(c>=’?A’&& c<=’?Z)c=c+32; if(c>=’?a’&& c<=’?u)c=c+5;else if(c>=’?v’&& c<=’?z’)c=c-21;return c;}

Main()

(char c1,c2;printf(---);c1=getchar();if(isupper(c1)){c2=fun(c1);printf(---,c1,c2);else printf(---);})

116、將字符串tt中的大寫字母都改為對應(yīng)的小寫字母,其它字符不變。例如,若輸入“Are you come from sihuan?”,則輸入“are you come from sichuan?”。

Char?*fun(char?tt[])

{int i;for(i=0; tt[i];i++){if((tt[i]>=A) &&(tt[i]<=Z)) tt[i]+=32;}return (tt);}

117、把一個(gè)字符串中的所有小寫字母字符全部轉(zhuǎn)換成大寫字母字符,其它字符不變,結(jié)果保存到原來的字符串中。如,當(dāng)str[N]=“123 ?abcdef ?ABCDEF!”結(jié)果輸出:“123 ABCDEF ABCDEF!”

Void main()

{int j;char str1[N]=123abcdef ABCDEF!;char *pf=str;clrscr();printf(---);puts(str);j=0;while(*(pf+j)){

if(*(pf+j)>=a&&*(pf+j)<=z){ *(pf+j)= *(pf+j)-32;j++;}else?j++;}printf(---);puts(str);system(pause); }

118、把從主函數(shù)中輸入的由數(shù)字字符組成的字符串轉(zhuǎn)換成一個(gè)無符號長整數(shù),并且逆序輸出。結(jié)果由函數(shù)返回。例如:123456,結(jié)果輸出654321.

?unsignde long fun(char *s)

?{ unsignde long ?t=0;int k;int i=0;i=strlen(s);

for(--i;i>0;i++){k=s[i]-0;t=t*10+k;}return t;}

119、把字符數(shù)組str中ASCII碼為奇數(shù)的小寫字母轉(zhuǎn)換成對應(yīng)的大寫字母,結(jié)果仍保存在原數(shù)組中。若輸入“abcdefg”,則輸出“ABCDEFG”。

Void fun(char s[])

{int i;for(i=0;s[i]!=\0;i++){if(s[i]%2!=0)s[i]-=32;}}

120、把字符數(shù)組str中字符下標(biāo)為奇數(shù)的小寫字母轉(zhuǎn)換成對應(yīng)的大寫字母,結(jié)果扔保存在原數(shù)組中。例如:輸入“acegikm”則輸出“aCeGiKm”。

Void fun(char s[])

{ int i=0;while(s[i]!=\0) {if(s[i]%2!=0)s[i]-=32;i++;}}

121、把字符串中的內(nèi)容逆置。例如:字符串中原有的字符串為abcde,執(zhí)行后的結(jié)果為edcba。

Void fun(char *s)

{ int i=0;n=strlen(s); for(;i<n/2;i++){t=*(s+i); *(s+i)= *(s+n-1-i); *(s+n-1-i)=t;}}

122、把一個(gè)整數(shù)轉(zhuǎn)換成字符串,并倒敘保存在字符串?dāng)?shù)組str中。例如:當(dāng)n=13572468時(shí),str=“86427531”。

Void fun(long int n)

{int i=0;while(n>0){

str[i]=n%10+0;n/=10;i++;} str[i]=\0;}

123、把從主函數(shù)中輸入的字符串str2倒置后接在字符串str1后面。例如:str1=“How do”, str2=“?od uoy”,結(jié)果輸出為“How do you do ”。

void fun(char *str1, char *str2)

{int i=0,j=0,k=0,n;char ch;char *p1=str1; char *p2=str2;while(*(p1+i))i++; while(*(p2+j))j++;n=j--;for(;k<j/2;k++,j--)

{ch=*(p2+k); *(p2+k)= *(p2+j); *(p2+j)=ch;} *(p2+n)=\0; for(;*p2;i++)*(p1+i)=*p2++;*(p1+i)=\0;}

124、把從主函數(shù)中輸入的字符串str2接在字符串str1后面。例如:str1=“How do”, str2=“you do ?”, 結(jié)果輸出為“How do you do ”。

void fun(char *str1, char *str2)

{ int i=0; char *p1=str1; char *p2=str2; while(*(p1+i))i++; for(;*p2;i++)*(p1+i)=*p2++;*(p1+i)=\0;}}

125、把字符串str中的字符向前移動一位,原來的第一個(gè)字符移動到字符串尾,結(jié)果仍保存在原字符串中。例如:輸入“how do you do?”,則輸出結(jié)果為“ow do you do?h”。

Main()

{cha str[N],ch;int i;clrscr();printf(---);gets(str); printf(---);puts(str);ch=str[0];for(i=0;str[i+1];i++) str[i] =str[i+1];str[i]=ch;

printf(---);puts(str);}

126、把字符串str1中下標(biāo)為偶數(shù)的字符保存在字符串str2中并輸出。若str1=“cdefghij”,則str2=“cegi”。

Main()

{char str1[LEN],str2[LEN]; char *p1=str1,*p2=str2;int i=0,j=0;clrscr();printf(---);scanf(%s,str1); printf(---);while(*(p1+j))

{printf(%c,*( p1+j));j++}for(i=0;i<j;i+=2)*p2++=*(str1+i);*p2=\0;printf(the new string is\n,str2);}

127、從一個(gè)字符串中截取前面若干個(gè)給定長度的子字符串。例如:當(dāng)str1=“cdefghij”,然后哦輸入4則str2=“cdef”。

?Main()

{ charstr1[LEN],str2[LEN]; int n, i;clrscr();printf(---);

gets(str1); printf(---);for(i=0;i<n;i++) str2[i]= str1[i]; str2[i]=\0;

printf(the the new string is\n,str2);}

128、若形參ch中是小寫英文字母,則轉(zhuǎn)換成對應(yīng)的大寫英文字母;若ch中是大寫英文字母,則轉(zhuǎn)換成對應(yīng)的小寫英文字母

char fun(char ch)

{if((ch>=a)&&?(ch<=z))return ch-a+A;if(isupper(ch))return ch-a+A;return ch;}

129、把字符串str中的字符按字符的ASCII碼降序排列。例如,如果輸入“cdefgh”,則輸出為“hgfedc”。

Void fun(char s[],int n)

{int i,j;char ch;for(i=0;i<n;i++) for(j=i;j<n;j++)if(s[i]<s[j]){ch= s[j] ;s[j] = s[i]; s[i]=ch;}}

130、用字符串str2替換字符串str1前面的所有字符。例如,如果輸入str1=“abced”, str2=“fk”,則輸出“fkced”。

Main()

{charstr1[81],str2[81] ;char*p1=str1,*p2=str2;clrscr();do{printf(---);gets(str1); printf(---);gets(str2);}

while(strlen(str1)< strlen(str2));while(*p2) *p1++=*p2++; printf(---);puts(str1);}

131、判斷字符ch是否與串str中的某個(gè)字符相同;若相同,什么也不做,若不同則插在串的最后。

Void fun(char *str,char ch)

{while(*str&&*str!=ch)

str++;if(str!=ch)

{str[0]=ch;str[1]=0;}}

Main()

{chars[81],c;printf(----);gets(s); printf(----);c=getchar();fun(s,c); printf(----);}

132、把s串中所有的字符前移一個(gè)位置,串中的第一個(gè)字符移到最后。若s串中原有的字符串為:Mn.123xyZ,則調(diào)用函數(shù)后,s串中的內(nèi)容為:n.123xyZM。

Fun(char *s)

{char b[N];sprintf(b,%s%c,

s+1,*s);strcpy(s,b);}

Main()

{char a[N];printf(---);gets(a); printf(---);puts(a);fun(a); printf(---);puts(a);}

133、將s所指字符串中的所有數(shù)字字符移到所有非數(shù)字字符之后,并保持?jǐn)?shù)字字符串和非數(shù)字字符串原有的先后順序。例如,形參a所指的字符串為:def35adh3kjsdf7。執(zhí)行結(jié)果為:defadhkjsdf3537。

Void fun(char *s)

{int i,j=0,k=0;char t1[80],t2[80] ; for(i=0;s[i]!=\0;i++) if(s[i]>=0&& s[i]<=9){ t2[j]=s[i];j++;}else t1[k++]=s[i];

t2[j]=0; t1[k]=0; for(i=0;i<k;i++)s[i]=t1[i]; for(i=0;i<j;i++) s[k+i]=t2[i];}

134、將s所指字符串中的所有字母字符順序前移,其它字符順序后移,處理后新字符串的首地址作為函數(shù)值返回。例如,s所指字符串為:asd123fgh543df,處理后新字符串為:asdfghdf123543。

Char *fun(char *s)

{ int i,j ,k,n;char *p,*t;n=strlen(s)++;t=(char *)malloc(n*sizeof(char)); pt=(char *)malloc(n*sizeof(char));j=0;k=0;

for(i=0;i<n;i++)if(((s[i]>=a&&( s[i]<=z))|| s[i]>=A?&&( s[i]<=Z))){ t [j]=s[i];j++;}else {p[k]=s[i];k++;}}

for(i=0;i<k;i++) t [j+i]=p[i];t[j+k]=0;return t;}

135、將s所指字符串中的所有數(shù)字字符順序前移,其它字符順序后移,處理后新字符串的首地址作為函數(shù)值返回。例如,s所指字符串為:asd123fgh##43df, 處理后新字符串為:123543asdfgh##df。

Char *fun(char *s)

{ int i,j ,k,n;char *p,*t;n=strlen(s)+1;t=(char *)malloc(n*sizeof(char)); pt=(char *)malloc(n*sizeof(char));j=0;k=0;

for(i=0;i<n;i++){if(sdigit(s[i])){p [j]=s[i];j++;}else {t[k]=s[i];k++;}}

for(i=0;i<k;i++) p[j+i]=t[i];p[j+k]=0;return?p;}

136、將s所指字符串中下標(biāo)為奇數(shù)的字符右移到下一個(gè)奇數(shù)位置,最右邊被移出字符串的字符繞回放到第一個(gè)奇數(shù)位置,下標(biāo)為偶數(shù)的字符不動。例如,形參s所指字符串為:abcdefgh,執(zhí)行結(jié)果為:ahcbedgf。

void fun(char *s)

{ int i,j ,k,n;char c;n=0; for(i=0;s[i]!=\0;i++)n++;if(n%2= =0)k=n-1;else k=n-2;c=s[k]; for(i=k-2;i>=1;i=i-2)s[i+2]= s[i]; s[1]=c;}

137、對形參s所指字符串中下標(biāo)為奇數(shù)的字符按ASCII碼大小遞增排序,并將排序后下標(biāo)為奇數(shù)的字符取出,存入形參p所指字符數(shù)組中,形成一個(gè)新串。例如,形參s所指的字符串為:baawrskjghzlicda,執(zhí)行后p所指字符數(shù)組中的字符串應(yīng)為:aachjlsw。

void fun(char *s,char *p)

{ int i,j ,n,x,t;n=0; for(i=0;s[i]!=\0;i++)n++; for(i=1;i<n-2;i++){t=i; for(j=i+2;j<n;j+=2)if(s[t]> s[j])t=j;if(t!=i){

x= s[i]; s[i]= s[t]; s[t]=x;for(i=1,j=0;i<n;i=i+2,j++)p[j]=s[i]; p[j]=0;}

138、把形參s所指字符串中最右邊的n個(gè)字符復(fù)制到形參t所指字符數(shù)組中,形成一個(gè)新串。若s所指字符串的長度小于n,則將整個(gè)字符串復(fù)制到形參t所指字符數(shù)組中。例如,形參s所指字符串為:abcdefgh,n的值為5,程序執(zhí)行后t所指字符數(shù)組中的字符串為:defgh。

void fun(char *s,int n,char *t)

{int len,i,j=0;len=strlen(s)

;if(n>=len)strcpy(t,s);else {for(i=len-n;i<len-1;i++)t[j++]=s[i]; t[j]=\0;}}

139、把字符串str轉(zhuǎn)換成任意進(jìn)制的數(shù),結(jié)果保存在數(shù)組xx中,由函數(shù)返回轉(zhuǎn)換后數(shù)組xx的實(shí)際長度。其中x表示str原來的進(jìn)制,y表示要轉(zhuǎn)換成的進(jìn)制,輸入str=“1111”,x=2,y=10,結(jié)果輸出15,x=10,y=2,結(jié)果輸出:1111。

Int fun(char *str,int x,int y)

{int sum;int i=0;char *p=str; for(i=0;i<N;i++)xx[i]=0;sum=*p-0;p++;while(*p){ sum=sum*x+*p-0;p++;}i=0;while(sum!=0) {

xx[i]=sum%y;sum=sum/y;i++;}return i;}

140、字符串str由數(shù)字字符0和1組成(長度不超過8個(gè)字符),可看作二進(jìn)制數(shù),編寫函數(shù):把str字符串轉(zhuǎn)換成十進(jìn)制數(shù),結(jié)果由函數(shù)返回。例如,輸入“1001”,結(jié)果輸出:9。

Int fun(char *str)

{int n;char *p=str;n=*p-0;p++;while(*p){n=n*2+*p-0;p++;return n;}}

141、找出形參s所指字符串中出現(xiàn)頻率最高的字母(不區(qū)分大小寫),并統(tǒng)計(jì)其出現(xiàn)的次數(shù)。例如,形參s所指字符串為abcAbsantrless,程序執(zhí)行后的輸出結(jié)果為:letter“a”:3 times letter ?“s”:3 times。

?void fun(char *s)

?{int k[26]={0},n,i,

max=0;char ch;while(*s)

{if(isalpha(*s)){ch=tolower(*s);n=ch-a;k[n]+=1;}s++;if(max<k[n]) max=k[n];

printf(---);for(i=0;i<26;i++)if(k[i]= =max)?printf(---);}}

142、按0到9統(tǒng)計(jì)一個(gè)字符串中的奇數(shù)數(shù)字字符各自出現(xiàn)的次數(shù),結(jié)果保存在數(shù)組num中。若輸入“x=112385713.456+0.909*bc”。則結(jié)果為1=3,3=2,5=2,7=1,9=2.

Void fun(char *tt,int num[])

{int i,j;int bb[10];char *p=tt; for(i=0;i<10;i++){num[i]=0;bb[i]=0;}while(*p){if(*p>=0&&*p<=9)bb[*p-0]++;p++;}

for(i=1,j=0;i<10;i=i+2,j++)num[j]=bb[i];}

143、從字符串str中取出所有數(shù)字字符,并分別計(jì)算,然后把結(jié)果保存在數(shù)組b中并輸出,把其它字符串保存在b[10]中。例如:當(dāng)str=“ab123456789cde090”時(shí),即誒過為:0:1,1:1,2:1,3:1,4:1,5:1,6:1,7:1,8:1,9:2,other character:5。

main()

{int i,b[11];char *str=ab123456789cde090;char *p=str;clrscr();printf(----);puts(str);for(i=0;i<11;i++)b[i]=0;

While(*p){switch(*p){case0:b[0]++;break; case1:b[1]++;break; case2:b[2]++;break; case3:b[3]++;break;

case4:b[4]++;break; case5:b[5]++;break; case6:b[6]++;break; case7:b[7]++;break; case8:b[8]++;break;

case9:b[9]++;break;default: ?b[10]++;}p++;} printf(----);for(i=0;i<10;i++)printf(\n%d:%d,i,b[i]);printf(\nothe character: %d, b[i]);}

144、統(tǒng)計(jì)字符串str中的單詞個(gè)數(shù),結(jié)果有變量num傳回,例如:str=“how do you do”,結(jié)果為:num=4。

Void fun(char *s,int *num)

{int i,n=0;for(i=0;i<*num;i++){if(s[i]>=a&& s[i]<=z&&(s[i+1]=?|| s[i+1]=?\0))n++;}*num=n;}

145、分類統(tǒng)計(jì)一個(gè)字符串原音字母和其它字母的個(gè)數(shù)(不區(qū)分大小寫)。例如,輸入aeiouAOUpqrt,結(jié)果為A:2,E:1,I:1,0:2,U:2,other:4。

Void fun(char *str,int bb[])

{char *p=str;int i=0;for(i=0;i<6;i++)bb[i]=0;?While(*p){switch(*p){case A: case a:bb[0]++;break;

case E: case e:bb[1]++;break; case I: case i:bb[2]++;break; case O: case o:bb[3]++;break;

case U: case u:bb[4]++;break;default :bb[5]++;}p++;}}

146、從“a”到“z”統(tǒng)計(jì)一個(gè)字符串中所有字母字符各自出現(xiàn)的次數(shù),結(jié)果保存在數(shù)組alf中。(不區(qū)分大小寫,不能使用字符串庫函數(shù))。例如,輸入:“A=abc+5*c”,結(jié)果為:a=2,b=1,c=2。

Void fun(char *tt,int alf[])

{int i;char *p=tt; for(i=0;i<26;i++)?alf[i]=0;?While(*p) {if(*p>=A&& *p <=Z)*p+=32; if(*p>=a&& *p <=z)

Alf*p-a]++;p++;}}

147、查找str中值為x的元素,返回該字符序列中值為x的元素個(gè)數(shù),并把這些值為x的元素下標(biāo)依次保存在數(shù)組bb中。例如,在“abcdefahij”中查找“a”,結(jié)果為:2個(gè)“a”,下標(biāo)一次為0、6。

Int fun(char *str,char ch)

{int i=0,n=0;char t=ch;char *p=str;while(*p){if(*p= =t)bb[n++]=i;p++;i++;}return n;}

148、str為一個(gè)字符序列,序列由字符0和1組成。查找該字符序列中0字符連續(xù)出現(xiàn)的最長長度(即0字符的個(gè)數(shù)),如果有幾個(gè)0字符串長度相同,只記錄最后一個(gè)0字符串的相關(guān)信息。通過m和k返回最長0字符串的長度和最后0字符的下標(biāo)。如果輸入“01001000”,結(jié)果為:0字符串最長長度為3,起始和結(jié)尾下標(biāo)依次為5、7。

Void fun(char *str,int *m,int *k)

{int i,j=0;int bb[N];char *p=str;*m=0;*k=0;for(i=0;i<N;i++)bb[i]=0;i=0; while(*(p+i)){if(*(p+i)= =0){ bb[j]++;i++;}else

{j++;i++;}if(*m<=bb[j]){ *m=bb[j];*k=i-1;}}}

149、統(tǒng)計(jì)一個(gè)長度為n的字符串在另一個(gè)字符串出現(xiàn)的次數(shù)。若輸入的字符串為:asd ascasdfg asd as asd mlosd,子字符串為asd,則應(yīng)輸出4。

Int ?fun(char *str, char *substr)

{int n;char *p,*r;n=0;while(*str){p=str;r=substr;while(*r)if(*r= =*p){r++;p++;}else break;if(*r= =\0)n++;str++;}return n;}

150、返回字符數(shù)組中指i定字符的個(gè)數(shù)。

Int fun(char s[],char ch)

{int i=0,n=0;while(s[i])

{if(s[i]==ch)n++;i++;}

return n;}

151、分別統(tǒng)計(jì)字符串中大寫字母和小寫字母的個(gè)數(shù)。例如,給字符串ss輸入:AaaaBBb123CCccccd則輸出結(jié)果應(yīng)為:upper=5,lower=9。

Void fun(char *s,int *a,int *b)

{while(*s){if(*s>=A&&*s<=Z)(*a)++; if(*s>=a&&*s<=z)(*b)++;s++;}}

Main()

{char s[100];int upper=0,lower=0;printf(--);gets(s); fun(s,&upper,&lower);printf(\nupper=%dlower=%d\n,upper,lower);}

152、對指定字符串在字符串a(chǎn)中出現(xiàn)的次數(shù)進(jìn)行統(tǒng)計(jì),統(tǒng)計(jì)的數(shù)據(jù)存到b數(shù)組中。其中:字符“Z”出現(xiàn)的次數(shù)存放到b[0]中,字符“Y”出現(xiàn)的次數(shù)存放到b[1]中,字符“X”出現(xiàn)的次數(shù)存放到b[2]中,字符“W”出現(xiàn)的次數(shù)存放到b[3]中,字符“V”出現(xiàn)的次數(shù)存放到b[4]中,其它字符出現(xiàn) 的次數(shù)存放在b[5]中。例如,當(dāng)a中的字符串為“AYYZXW1Y+ZWVP”,調(diào)用函數(shù)后b中存放數(shù)據(jù)應(yīng)是:2、3、1、2、1、4。

Void fun(char *a,int b[])

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

b[i]=0;for(i=0;i<strlen(a);i++)if(a[i]>=V&&?a[i]<=Z)b[4-(a[i]-V)]++;else?b[5]++;}

Main()

{int I,b[6];char a[100]={---};fun(a,b);printf(---);for(i=0;i<6;i++)printf(%d,b[i]); printf(\n);}

153、統(tǒng)計(jì)形參s所指字符串中數(shù)字字符出現(xiàn)的次數(shù),例如,形參s所指的字符串為:abcdef35adgh3kjsdf7。輸出結(jié)果為:4

Void fun(char *s,int *t)

{int i,n;n=0;for(i=0;s[i]!=NULL;i++) if(a[i]>=0&& a[i]<=9)n++;*t=n;}

154、將形參s所指字符串中數(shù)字字符轉(zhuǎn)換成對應(yīng)的數(shù)值,計(jì)算出這些數(shù)值的累加和作為函數(shù)值返回。例如,形參s所指字符串為abs5def126jkm3,程序執(zhí)行后的輸出結(jié)果為:22。

Int fun(char *s)

{int sum=0;while(*s)

{isdigit(*s)sum+=*s-48;s++;}return sum;}

155、按條件刪除一個(gè)字符串指定字符一半的數(shù)目,如果該字符串所包含的指定字符串的個(gè)數(shù)是奇數(shù),則不予刪除,如果其數(shù)目是偶數(shù),則刪除原字符串后半部分的指定字符。其中,a指向原字符串,刪除后的字符串存放在b所指的數(shù)組中,c中存放指定的字符。例如:當(dāng)a輸入“abababa”,c=“a”時(shí)b的輸出為“ababa”,則b的輸出為“ababa”。

Void fun(char a[],char b[],char c)

{int i=0,j=0;int n=0;int m=0;while(a[i]!=\0){if(a[i]= =c)n++;i++}i=0;if(n%2){while(a[j]!=\0){ b[j]= a[j];j++;}j++;} b[j]=\0;

}else { while(a[i]!=\0){ b[j++]= a[i]; if(a[i]= =c)m++;if((m>n/2)&&( a[i]= =c))j- -;i++;}?b[j]=\0;}}

156、只保留字符串中的大寫字母,刪除其它字符。

void fun(char *s)

{int i=0,j=0;char *p=s;while(*(p+i)){if(*(p+i)>=A&&*(p+i)<=Z){s[j++]=*(p+i);}i++;}s[i]\0;m=j;}

157、把字符串下標(biāo)能被2或3整除的字符從字符串str中刪除,把剩余的字符重新保存在字符串str中。例如,若輸入“abcdefghijk”,則輸出為“bfh”。

?void fun(char s[],int n)

?{int i,k;k=0;for(i=0;i<n;i++){s[k++]=s[i];if((i%2= =0)|| (i%3= =0))k--;}s[k]=\0;}

158、把字符下標(biāo)為非素?cái)?shù)的字符從字符串str中刪除,把字符下標(biāo)為素?cái)?shù)的字符重新保存在字符串str中,例如,輸入“abcdefghijkl”,輸出“cdfhl”。

void fun(char s[],int n)

{int i,j,k,flag;k=0; for(i=0;i<n;i++){if(i>1) s[k++]=s[i];flag=1;for(j=2;j<I;&&flag;j++)if(i%j= =0){flag=0;k--;}s[k]=\0;}}

159、刪除字符數(shù)組中小于等于指定字符的字符,指定字符從鍵盤輸入,結(jié)果仍保存在數(shù)組中,例如,輸入“abcdefghij”,指定字符為“d”,則結(jié)果輸出“defghij”。

void fun(char s[],char ch)

{int i=0;j=0;while(s[i]){if(s[i]<ch)i++;else {s[j++]=s[i];i++;} } s[j]=\0;}

160、把ASCII碼為偶數(shù)的字符從字符串str中刪除,結(jié)果仍然保存在字符串str中,例如,輸入abcdef,則輸出ace。

void fun(char s[],int n)

{int i,j;j=0;for(i=0;i<n;i++){ if(s[i]%2! =0)?s[j++]=s[i]; }s[j]=\0;}

161、把ASCII碼為奇數(shù)的字符從字符串str中刪除,結(jié)果仍然保存在字符串str中,例如,輸入abcdef,則輸出bdf。

void fun(char s[],int n)

{inti,j;j=0;for(i=0;i<n;i++)

{ if(s[i]%2= =0)?s[j++]=s[i]; }s[j]=\0;}}

162、從鍵盤輸入一個(gè)字符串及一個(gè)指定字符,然后把這個(gè)字符串及后面的所有字符全部刪除。結(jié)果仍然保存在原串中。例如,輸入“abcdef”,指定字符為“e”,則輸出為“abcd”。

?main()

{int i=0;char str[N];char ch;printf(---);gets(str);printf(---);scanf(%c,%ch);while(str[i]!=\0){if(str[i]= =ch)break;i++;}

str[i] =\0;?printf(---);puts(str);}

163、把字符串str1中的非空格字符拷貝到字符串str2中。例如,str1=“glad to see you!”,則str2=“gladtoseeyou!”。

main()

{static char str1[N]=--;

char str2[N];int i=0,j=0;clrscr();printf(--);puts(str1);while(str1[i]){if(str1[i]!=?)str2[j++]=str1[i];

i++;}printf(---);for(i=0;i<j;i++)printf(%c,str2[i]);}

164、把一個(gè)二維字符數(shù)組每行字符串最大的字符拷貝到字符數(shù)組s中。如果str[3]={“dfjh”,“efknls”,“owys”},則s=“hsy”。

main()

{int i=0;char *str[3]={---};char **p;char s[8];p=str;for(i=0;i<3;i++){s[i]=*p[i];while(*p[i]){if(s[i]<*p[i]) s[i]= *p[i];

p[i]++;}}s[i]=\0;printf(---);puts(s);}

165、從鍵盤輸入若干字符放到一個(gè)字符數(shù)組中當(dāng)按回車鍵時(shí)結(jié)束輸入,最后輸出這個(gè)字符數(shù)組中的所有字符。

main()

{int i=0;char s[81];char *p=s;printf(--);for(i=0;i<80;i++){s[i]=getchar();if(s[i]= = \n)break;s[i]=\0; printf(--);

While(*p)putchar(*p++);}

166、把一個(gè)字符串中的字符(字母)按從大到小排序,并把這個(gè)全部由字母組成的字符串保存在原串中,函數(shù)返回這個(gè)字符串的長度。輸入“crxbr2.3”,如果為bcirx,字符串長度為5。

Int fun(char *str)

{int i=0,j=0,k=0,m=0;char t;char *p=str;while(*p) {if((*p>=A&&*p<=Z)||?(*p>=a&&*p<=z))*(str+i++)=*p;p++;}

*(str+i)=\0;p=str;while(*(p+j)){k=j;m=j;while(*(p+k)){if(*(p+k)<*(str+m)){t=*(str+m); *(str+m)= *(p+k); *(p+k)=t;}k++;} j++;}return i;}

167、從鍵盤輸入一組字符串,以“*”結(jié)束輸入,并顯示出這個(gè)字符串。例如,輸入abcdefghi*,結(jié)果顯示abcdefghi。

Main()

{int i= -1;j=0;char str[N];printf(--);do{i++;scanf(%c,&str[i]);}while(str[i]!=*); printf(--);while(j<i){printf(%c,str[j]);j++;}

168、判斷一個(gè)數(shù)是否為回文數(shù)。當(dāng)字符串是回文時(shí),函數(shù)返回字符串:yes!否則函數(shù)返回字符串:no!,并在主函數(shù)中輸出。

char *fun(char *str)

{char *p1,*p2;int i,t=0; p1=str; p2=str+strlen(str)-1;for(i=0;i<=?strlen(str)/2;i++)if(*p1++!=*p2---){t=1;break;}if(t= =0) return yes!;else return no!; }

169、判斷形參s所指字符串是否為回文,若是函數(shù)返回值為1,不是函數(shù)返回值為0.

int fun(char *s)

{char *lp,*rp;lp=s;rp=s+strlen(s)-1;while(---){lp++;rp- -;}if(lp<rp)return 0;else return 1;

170、比較字符串str1和str2的大小,并返回比較的結(jié)果。例如:當(dāng)str1=“cdef”, str2=“ced”時(shí),函數(shù)返回fun返回“>”。

char *fun(char *str1, char *str2)

{ char *p1=str1,*p2=str2; while(*p1&&*p2){if(*p1<*p2)return <; if(*p1>*p2)return >;p1++;p2++;}

if(*p1= =*p2)return ?= =; f(*p1= =\0) return <;else return >}

171、利用指針數(shù)組對形參ss所指字符串?dāng)?shù)組中的字符串按由長到短的順序排序,并輸出結(jié)果。Ss所指字符串?dāng)?shù)組中共有N個(gè)字符串,且串長小于M。

Void fun(char (*ss)[M])

{char *ps[N],*tp;int i,j,k;for(i=0;i<N;i++) ps[i] = ss[i]; for(i=0;i<N-1;i++)

{k=i;for(j=i+1;j<N1;j++)if(strlen(ps[k])< strlen(* (ps+j)

)k=j;tp= ps[i];ps[i]=

ps[k];ps[k]=tp;}printf(---);for(i=0;i<N;i++)put(ps[i];)

172、用冒泡法對6個(gè)字符串進(jìn)行排序。

Fun(char *pstr[6])

{int i,j;char *p;} for(i=0;i<5;i++){ for(j=i+1;j<6;j++){if(strcmp(*(pstr+i), *(pstr+j))>0){p=*(pstr+i);pstr[i]= pstr[j];*(pstr+i)=p;}

173、將僅在字符串s中出現(xiàn)而不在字符串t中出現(xiàn)的字符,和僅在字符串t中出現(xiàn)而不在字符串s中出現(xiàn)的字符,構(gòu)成一個(gè)新字符串放在u中,u中的字符按原字符串中字符順序排序,不去掉重復(fù)字符。例如:當(dāng)s=“112345”,t=“24677”時(shí),u中的字符為“1135677”。

Void fun(char *s, char *t, char *u)

{int i,j,s1,t1;s1=strlen(s);

t1=strlen(t); for(i=0;i<s1;i++){ for(j=0;j<t1;j++)if(s[i]= = t[j])break;if(j>=t1)*u++=s[i];}

for(i=0;i<ts1;i++){ for(j=0;j<s1;j++) if(t[i]= = s[j])break; if(j>=s1)*u++=t[i];}*u=\0;}

174、將既在字符串s中出現(xiàn),又在字符串t中出現(xiàn)的字符形成一個(gè)新字符串放在u中,u中的字符按原字符串中字符順序排序,不去掉重復(fù)字符。例如:當(dāng)s=“122345”,t=“2467”時(shí),u中的字符為“24”。

Void fun(char *s, char *t, char *u)

{int i,j,s1,t1,k,u1=0;

s1=strlen(s);t1=strlen(t); for(i=0;i<s1;i++){ for(j=0;j<t1;j++)if(s[i]= = t[j])break;if(j<t1){for(k=0;k<u1;k++) if(s[i]= = u[k])break; if(k>=u1) u[u1++]=s[i];}?u[u1]=\0;}

175、將未在字符串s中出現(xiàn)而在字符串t中出現(xiàn)的字符,形成一個(gè)新字符串放在u中,u中的字符按原字符串中字符順序排序,不去掉重復(fù)字符。例如:當(dāng)s=“12345”,t=“2467”時(shí),u中的字符為“67”。

Void fun(char *s, char *t, char *u)

{ int i,j,s1,t1,k,u1=0;s1=

strlen(s);t1=strlen(t); for(i=0;i<t1;i++){ for(j=0;j<s1;j++)if(t[i]= = s[j])break;if(j>=s1)

for(k=0;k<u1;k++) if(t[i]= = u[k])break; f(k>=u1) u[u1++]=t[i];}?u[u1]=\0;}

176、將在字符串s中出現(xiàn),而未在字符串t中出現(xiàn)的字符形成一個(gè)新字符串放在u中,u中的字符按原字符串中字符順序排序,不去掉重復(fù)字符。例如:當(dāng)s=“112345”,t=“24677”時(shí),u中的字符為“1135”。

Void fun(char *s, char *t, char *u)

{int i,j,s1,t1;s1=strlen(s);t1=strlen(t); for(i=0;i<s1;i++){ for(j=0;j<t1;j++)if(s[i]= = t[j])break;if(j>=t1)*u++=s[i];}*u=\0;}

177、將在字符串s中下標(biāo)為奇數(shù)位置上的字符,緊隨其后重復(fù)出現(xiàn)一次,放在一個(gè)字符串t中,t中字符按原字符串中字符出現(xiàn)的逆序排列。(注意0為偶數(shù))例如:當(dāng)s中字符串為“1234567”時(shí),則t中字符串應(yīng)為:“664422”。

void fun(char *s, char *t)

{int i,j,s1;s1=strlen(s);if(s1%2)s1- =2;else s1- -;for(i=s1,j=0;i>=0;i- =2){t[2*j]=s[i]; t[2*j+1]=s[i];i++;} t[2*j]=\0;}

178、將在字符串s尾部開始,按逆序把在其中出現(xiàn)的每相鄰的兩個(gè)字符交換位置,并依次把每個(gè)字符緊隨其后重復(fù)出現(xiàn)一次,放在一個(gè)字符串t中,例如:當(dāng)s中字符串為“12345”時(shí),則t中字符串應(yīng)為:“4455223311”。

void fun(char *s, char *t)

{int i,j,s1;s1=strlen(s); for(i=s1-1,j=0;i>=0;i- =2){if(i-1>=0)t[j++]=s[i-1]; if(i-1> =0)t[j++]=s[i-1]; t[j++]=s[i]; t[j++]=s[i];t[j]=?’\0;}

main()

{char s[100],t[100];printf(---);scanf(%s,s);fun(s,t);printf(---);}

179、將在字符串s尾部開始,按逆序把在其中出現(xiàn)的每相鄰的兩個(gè)字符,緊隨其后重復(fù)出現(xiàn)一次,放在一個(gè)字符串t中,若字符串s中頭部有剩余的單個(gè)字符也重復(fù),放在t的最后。例如:當(dāng)s中字符串為“1234567”時(shí),則t中字符串應(yīng)為:“664422”。

?void fun(char *s, char *t)

{int i,j,s1;s1=strlen(s); for(i=s1-1,j=0;i>=0;i- =2){if(i-1>=0)t[j++]=s[i-1]; if(i-1> =0)t[j++]=s[i-1]; t[j++]=s[i]; if(i-1> =0)t[j++]=s[i-1];t[j]=\0;}

main()

{char s[1000],t[1000];printf(---);scanf(%s,s);fun(s,t);printf(---);}

180、將在字符串s中出現(xiàn),而未在字符串t中出現(xiàn)的字符形成一個(gè)新字符串放在u中,u中的字符按原字符串中字符順序按逆序排列,不去掉重復(fù)字符。例如:當(dāng)s=“112345”,t=“2467”時(shí),u中的字符為“5311”。

Void fun(char *s, char *t, char *u)

{int i,j,s1,t1,u1;char r,*up=u;s1=strlen(s);t1=strlen(t); for(i=0;i<s1;i++){ for(j=0;j<t1;j++)if(s[i]= = t[j])break;if(j>=t1)

*u++=s[i];}*u=\0;u1=strlen(up); for(i=0;i<u1/2;i++){r=up[i]; up[i]= up[u1-1-i]; up[u1-1-i]=r;}}

181、把在字符串s中出現(xiàn)的每隔字符,緊隨其后重復(fù)出現(xiàn)一次,形成一個(gè)新串放在t中,且在t中把原相鄰字符的位置進(jìn)行了交換。例如:當(dāng)s中的字符串為:“12345”時(shí),則t中的字符串應(yīng)為:“2211443355”。

void fun(char *s, char *t)

{int i,j,s1;s1=strlen(s);for(i=0,j=0;i<s1;i+ =2){if(i+1<s1){t[2*j]=s[i+1]; t[2*j+1]=s[i+1];j++;} t[2*j]=s[i]; t[2*j+1]= s[i];j++;}

t[2*s1]=\0;}

main()

{char s[100],t[100];printf(---);scanf(%s,s);fun(s,t);printf(---);}

182、求出形參ss所指字符串?dāng)?shù)組中最長字符的長度,其余字符串左邊用字符*補(bǔ)齊,使其與最長的字符串等長。

Void fun(char (*ss)[N])

{int k=0,i,j,n,len;for(i=0;i<M;i++){len=strlen(ss[i]);if(i= =0) n=len;if(len>n){n=len;k=i;}} for(i=0;i<M;i++) if(i! =k){m=n;

????len=strlen(ss[i]); for(j=len;j>=0;j--)ss[i][m- -]=ss[i][j]; for(j=0;j<n-len;j++)ss[i][j]=*;}}

183、求出形參ss所指字符串?dāng)?shù)組中最長字符的長度,其余字符串右邊用字符*補(bǔ)齊,使其與最長的字符串等長

Void fun(char (*ss)[N])

{ int i,j,n,len=0; for(i=0;i<M;i++){n=strlen(ss[i]);if(i= =0) len= n;?if(len<n) len =n;}for(i=0;i<M;i++);for(j=0;j<len-n;j++)

ss[i][n+j]=*; ss[i][n+1+j]=\0;}}

184、在形參s所指字符串中的每個(gè)數(shù)字字符之后插入一個(gè)*號。例如,形參s所指字符串為:def35adh3kjsdf7*。執(zhí)行結(jié)果為:def3*5adh3*kjsdf7*。

?????Void fun(char *s)

?????{int I,j,n;for(i=0;s[i]!=\0;i++)if(s[i]>=0&&?s[i]<=9){n=0;while(s[i+1+n]!=0)n++;for(j=i+n+1;j>i;j--) s[j+1]= s[j];

s[j+1]=*;i=i+1;}}

185、在形參s所指字符串中尋找與參數(shù)c形同的字符,并在其后插入一個(gè)與之相同的字符,若找不到相同字符則函數(shù)不做任何額處理。例如,s所指字符串為:baacda,c中的字符為:a,執(zhí)行后s所指字符串為:baaaacdaa。

Void fun(char *s,char c) ?

{int i,j,n;for(i=0;s[i]!=0;i++)if(s[i]= =c){n=0;while(s[i1+n]!=\0?)n++;for(j=i+n+1;j>i;j--) s[j+1]= s[j]; s[j+1]=c;i=i+1;}}

186、將a和b所指的兩個(gè)字符串轉(zhuǎn)換成面值相同的整數(shù),并進(jìn)行相加作為函數(shù)值返回,規(guī)定字符串中只含9以下數(shù)字字符。例如,主函數(shù)中輸入字符串:32486和12345,在函數(shù)中輸出的函數(shù)值為:44831.

long ctod(char *s)

{long d=0;while(*s)if(

isdigit(*s)){d=d*10+*s-0;s++;}return d;}

long fun(char *a, char *b)

{return ctod(a)+ ctod(b);}


計(jì)算機(jī)二級C語言上機(jī)題庫(五)的評論 (共 條)

分享到微博請遵守國家法律
南江县| 马边| 靖安县| 三河市| 乐平市| 宁海县| 德庆县| 东至县| 饶河县| 南涧| 金沙县| 广水市| 宁化县| 东阳市| 左云县| 元阳县| 清丰县| 绍兴县| 合肥市| 昔阳县| 连云港市| 任丘市| 凤冈县| 海宁市| 乌鲁木齐县| 论坛| 张家界市| 义乌市| 漯河市| 阿克陶县| 桓台县| 呼图壁县| 台北市| 抚州市| 会宁县| 池州市| 炉霍县| 武夷山市| 镇康县| 库车县| 新巴尔虎右旗|