計(jì)算機(jī)二級C語言上機(jī)題庫(五)
三、字符題
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è)字母;若下寫字母為v—z,,使小寫字母的值減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){case’0’:b[0]++;break; case’1’:b[1]++;break; case’2’:b[2]++;break; case’3’:b[3]++;break;
case’4’:b[4]++;break; case’5’:b[5]++;break; case’6’:b[6]++;break; case’7’:b[7]++;break; case’8’:b[8]++;break;
case’9’: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);}