c語言計算機二級選擇題?計算機二級C語言 編程題 删除*類問題,我來為大家科普一下關于c語言計算機二級選擇題?下面希望有你要的答案,我們一起來看看吧!
計算機二級C語言 編程題 删除*類問題
第1題 假定輸入的字符串中隻包含字母和*号。請編寫函數fun,它的功能是:除了字符串前導和尾部的*号之外,将串中其它*号全部删除。形參h已指向字符串中第一個字母,形參p已指向字符串中最後一個字母。在編寫函數時,不得使用C語言提供的字符串函數。
例如,字符串中的内容為:****A*BC*DEF*G********,删除後,字符串中的内容應當是:****ABCDEFG********。在編寫函數時,不得使用C語言提供的字符串函數。
注意:部分源程序存在文件prog.c中。
請勿改動主函數main和其它函數中的任何内容,僅在函數fun的花括号中填入你編寫的若幹語句。
解題思路:
知識點:字符型數組、指針
對主函數說明如下:
main()
{ char s[81],*t,*f;
printf("Enter a string:\n");
//從鍵盤上得到字符串,存入數組s中
gets(s);
//讓指針f、t都指向s數組
t=f=s;
//本循環,循環體隻有t ,執行結束,指針t指向串尾
while(*t) t ;
//指針t減1,指向倒數第1個字符
t--;
//如果是*号則向前移動指針,直到指向倒數第1個非*字符
while (*t=='*') t--;
//f指針本來是指向首地址的,當是*向後指,直到指向正向第1非*字符
while (*f=='*') f ;
//用三個地址做參數調用函數
fun(s,f,t);
printf("The string after deleted:\n");puts(s);
NONO();
}
參考答案(以控制下标的方式)
說明:形參a,h,p,實際上指向同一數組的不同位置,它們之間運算可以得到字符下标,
分三段:第1段下标從0到h-a 第2段下标從h-a到p-a,第3段下标從p-a到串尾,第1、3段的字符直接保存,
第2段的字符單獨處理。
void fun(char *a,char *h,char *p)
{
int i,t=0;
for(i=0;a[i];i )
{
if(i<=h-a)
a[t ]=a[i];
else if(i<p-a)
{
if(a[i]!='*')
a[t ]=a[i];
}
else
a[t ]=a[i];
}
a[t]='\0';
}
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!