计算机二级 C语言 一道题求解释

2006年秋浙江省高等学校计算机等级考试试卷(二级C)

#include <stdio.h>
void main()
{char c, s[80]="Happy New Year";
int i; void f(char *s,char c);
c=getchar();
f(s,c);
puts(s);
}
void f(char *s,char c)
{ int k=0,j=0;
while(s[k]!='0'{
if(s[k]!=c){
s[j]=s[k];
j++;
}
k++;
}
s[j]=‘\0’;
}

1.输入字母a,输出?
1.输入字母e,输出?
1.输入字母p,输出?
1.输入字母b,输出?
答案我有的,主要是看不懂,求讲解!!!跪谢!!!

这个简单啊
只需要了解函数void f(char *s,char c)的作用是什么你就清晰了。
#include <stdio.h>
void main()
{char c, s[80]="Happy New Year"; //s中储存了一串字符串
int i;
void f(char *s,char c);//声明函数f
c=getchar();//输入c
f(s,c);//调用f函数,并将s,c传参到函数
puts(s);//输出s
}
void f(char *s,char c)//函数f定义部分
{ int k=0,j=0;
while(s[k]!='0'){ //循环执行,直到s[k]的的字符为'0',s[k]的字符为'0'时表示字符串结尾了
if(s[k]!=c){ //判断s[k]是否等同于你输入的字符c
s[j]=s[k]; /*不等同的情况下将s[k]的值赋给s[j](这里的意思就是将字符串s的字符串重新排列)*/
j++; //j自增1
}
//等同的情况下不做任何动作,即忽略等同于输入的字符的字符,也就是去掉该字符
k++; //k自增1
}
s[j]='\0'; //循环结束后在新的s字符串后面加上结束符
}

f函数的功能就是将s字符串中所包含你输入的字符去掉再重新排列,所以答案是:
1,输入a:hppy new yer;
2,输入e:happy nw yar;
3,输入p:hay new year;
4,输入b:happy new year
还不懂的话可以追问~
温馨提示:答案为网友推荐,仅供参考
相似回答