tft每日頭條

 > 科技

 > c語言計算機二級選擇題

c語言計算機二級選擇題

科技 更新时间:2024-12-25 19:12:51

c語言計算機二級選擇題?計算機二級C語言 編程題 删除*類問題,我來為大家科普一下關于c語言計算機二級選擇題?下面希望有你要的答案,我們一起來看看吧!

c語言計算機二級選擇題(計算機二級C語言)1

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每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved