这是对二级考试c语言中比较难的但常常考查题型的规律总结
《星与字母题》
1.fun的功能是:删除字符串中所有的*。
#include
void fun( char *a )
{int i,j=0;
for(i=0;a[i]!='\0';i++)
if(a[i]!='*')
a[j++]=a[i]; /*若不是要删除的字符'*'则留下*/
a[j]='\0';
}
main()
{ char s[81];
void NONO ( );
printf("Enter a string:\n");gets(s);
fun( s );
printf("The string after deleted:\n");puts(s);
【考点分析】
要删除字符串中所有*号需要用循环语句遍历字符串,用判断语句判断字符是否为*号,由此可以决定该程序应使用循环判断结构。
【解题思路】
用循环操作从字符串的开始往后逐个进行比较,若不是要删除的字符(用if(a[i]!=′*′)来控制)则保留。变量i和j用来表示原字符串的下标和删除*号后新字符串的下标。注意下标变量j要从0开始,最后还要加上字符串结束标识′\0′。
2.fun的功能是:除了字符串前的*之外,将字符串中其他*全部删除。
#include
void fun( char *a )
{
/* 以下代码仅供参考 */
int i=0,k;
while(a[i]=='*') i++;
k=i;
while(a[i]!='\0') /* 以下程序段实现非*字符前移 */ { int i=0;
char *p=a;
while(*p&&*p=='*')
{
a[i]=*p;
i++;
p++;
}
while(*p)
{
if(*p!='*')