一次作业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;

}

5个回答

我们就是喜欢帮助那些“没有原则”,“不坚持”的人。当然,也有和你想法一样的人,只是比较少,你慢慢等这样的人出现吧。

qwrowr
wwwmmmmmmmmmmmmm 不需要把自己说得那么高尚,单纯的帮助或许存在,但这至少不会是你的目的,你希望得到采纳本身就带有目的性,我不会慢慢地等那样的人出现,这个论坛本就是无意间发现,就像普通情况下百度一些问题看到网页点进去了而已,既然这里只有那么几个人常驻,那自然吸引不了人,如果可以注销账号,我希望我不会再出现在这里,你也不需要再回答我了,我认为我们都已经有些埋怨,以至于不太理性地言语攻击,与其花时间在这里做无谓的争吵,还是现实更重要,很对不起说了这些话,但我相信既然你能回复我那必然有和我一样算是高傲的心吧,说得好听一点也许就是所谓自尊。再见,朋友。
接近 5 年之前 回复

这些题昨天不是都发过了么?

qwrowr
wwwmmmmmmmmmmmmm 昨天只发了其中几道
接近 5 年之前 回复

而且你从来也不采纳答案。你采纳只是点下鼠标,一点也不费事,也不损失什么。
而人家回答你的问题却要大量的时间和思考。

qwrowr
wwwmmmmmmmmmmmmm 回复NoMasp: 是应该经常查看,但并不是所有问题一提出来就会有人回答,力的作用是相互的,既然解答会延迟,那么查看也应该被允许延迟,更何况查看与验证答案也需要时间,
接近 5 年之前 回复
NoMasp
nomasp 回复qwrowr: 既然想问题得到解答自然就应该经常查看咯
接近 5 年之前 回复
qwrowr
wwwmmmmmmmmmmmmm 作为学生,也不可能一直在电脑前,通常提了问题要隔天才有机会看,而且每次不是只能采纳一个答案吗
接近 5 年之前 回复
qwrowr
wwwmmmmmmmmmmmmm 不论正确,我最终都采纳了的,只是学校断网之前我想看哈有没有最好的答案,不一定是及时采纳了而已,
接近 5 年之前 回复

说的很对,老师布置你作业你是必须完成的,但是在这里谁也没有义务一定要回答谁的问题,特别你也看到了,提问的人比回答的人多很多。在这种情况下,那些人品高尚的人,积极采纳的人更容易获得帮助。当然,这是自愿的。你愿意任性,那也是你的选择。反正你也不是很需要答案。

并不是回答了问题就应该被采纳,就像你考试做错了题,并不能希望老师给你打正确仅仅因为你做了,首先它得经得起测验,我在这里问问题是因为我想得到正确的答案,而不是片片断断甚至错误的回答,如果在这里回答问题的人仅仅是想被采纳,那可以不回答我的问题,因为每个回答我都要验证其正确性,那么采纳就是相对比较耗时而且极不容易的事,我当这里是学习的平台,如果损害了回答问题的人的利益,我很抱歉,但我有我的坚持。
如果这样的话导致没有人回答,那我也不觉得遗憾,最终老师会解答,之所以在这里问,或许是为了得到不同的做法,对比多元的思维,取得进步。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问