程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> strlen-一次作業C語言作業題,已經做了六道,後面的題可能與前面的有關系。

strlen-一次作業C語言作業題,已經做了六道,後面的題可能與前面的有關系。

編輯:編程綜合問答
一次作業C語言作業題,已經做了六道,後面的題可能與前面的有關系。

1.(示例)寫一個函數,接收一個字符串作為形參,然後顯示它的每個字母,每個字母單獨一行。這種從開頭起,每次選擇一個字符,對它做一些處理,再繼續,直到結束。這種處理的模式稱為“遍歷”
traversal(char s[]){
int i;
for (i=0; s[i]!=’\0’; i++)
printf(“%c\n”,s[i]);
}

traversal(char s[]){
int i;
int len;

len=strlen(s);
for (i=0; i printf(“%c\n”,s[i]);
}
main(){
char s[200];
gets(s);
traversal(__________);
}
2.寫一個函數,接收一個字符串作為形參,並倒序顯示它的字母,每個字母單獨一行。
3.(示例)寫一個函數find(char word[], char letter),判斷字符letter是否位於單詞word中,如果存在,返回該字符在word中的下標,如果不存在,返回-1。
int find(char word[], char letter){
int i;
for (i=0; word[i]!=’\0’; i++)
if (word[i]==letter)
return i;
return -1;
}
4.修改find函數,讓它接收第三個參數,表示從word的那個下標開始搜索。例如,字符串s=”blahblahblah”, 待查找字符為’a’, find(s,’a’)返回值為2,而三參數版本find(s, ‘a’, 4)返回值為6,表示從數組下標為4的位置開始搜尋字符’a’。
5.(示例)計算字母’a’在字符串中出現的次數
char word[]=”banana”;
count=0;
for (i=0; word[i]!=’\0’; i++)
if (word[i]==’a’)
count++;
printf(“%d”,count);
6.將上面這段代碼封裝為函數count, count接收字符串和要統計的字母作為形參。提示:函數頭為int count(char s[], char letter)
7.重寫count函數,不直接遍歷字符串,使用前面的三參數版本的find函數。查閱庫函數,寫出以下功能對應的庫函數名稱:
a)將一個字符串轉變為全部字母都是大寫的字符串。ANSI C並沒有這個庫函數,我們教材上正文中有。
b)在一個字符串中搜索指定的字符c,並返回該字符的地址
c)在一個字符串中搜索另一個字符串(子串)出現的位置,返回該子串所在的位置(地址)
9.(閱讀)編寫一個查找子串位置的函數。
#include

int strindex(char s[], char t[]){
int i,j,k;

for (i=0; s[i]!='\0'; i++){
    j=i; k=0;
    while( s[j]==t[k] && t[k]!=0 ){
        j++;
        k++;
    }
    if (t[k]=='\0'&&k>0) 
        return i;
}
return -1;

}

main(){
char s[]="I am a boy", t[]="am";
printf("%d",strindex(s,t));
}
//思考一個問題,什麼情形下while循環會退出。考察以下情形的執行情況,s=”ddabdd”, t=”ab”; 又如s=”ddab”, t=”ab”; 又如s=”dda”, t=”ab”。

10.(閱讀)編寫一個字符串比較函數。 如果s在字典序上大於t,返回整數,等於t,返回0, 小於t,返回負數。
int strcmp(char s[], char t[]){
int i;
for (i=0; s[i]==t[i]; i++)
if (s[i]==’\0’)
return 0;
return s[i]-t[i];
}
11.擴展以上函數,使得函數在做字符串比較的時候不區分大小寫。即strcmp(“banana”, “BaNaNa”)==0;
12.(改錯)以下程序比較兩個字符串是否互為倒序, 請多使用調試技術去發現錯誤。
int is_reverse(char s[], char t[]){
int i,j;

if (strlen(s)!=strlen(t))
    return 0;

for (i=0, j=strlen(t); j>0 ; i++, j--)
    if (s[i]!=t[j])
        return 0;

return 1;

}

最佳回答:


我們就是喜歡幫助那些“沒有原則”,“不堅持”的人。當然,也有和你想法一樣的人,只是比較少,你慢慢等這樣的人出現吧。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved