全国计算机等级考试题库二级C操作题100套(第18套)
第18套:
給定程序中,函數fun的功能是:將形參s所指字符串中的所有字母字符順序前移,其他字符順序后移,處理后新字符串的首地址作為函數值返回。
例如,s所指字符串為:asd123fgh543df,處理后新字符串為:asdfghdf123543。
請在程序的下劃線處填入正確的內容并把下劃線刪除,使程序得出正確的結果。
注意:源程序存放在考生文件夾下的BLANK1.C中。
不得增行或刪行,也不得更改程序的結構!
給定源程序:
#include <stdio.h> #include <stdlib.h> #include <string.h> char *fun(char *s) { int i, j, k, n; char *p, *t; n=strlen(s)+1; t=(char*)malloc(n*sizeof(char)); p=(char*)malloc(n*sizeof(char)); j=0; k=0; for(i=0; i<n; i++) { if(((s[i]>='a')&&(s[i]<='z'))||((s[i]>='A')&&(s[i]<='Z'))) { t[j]=__1__; j++;} else { p[k]=s[i]; k++; } } for(i=0; i<__2__; i++) t[j+i]=p[i]; t[j+k]= __3__; return t; } main() { char s[80]; printf("Please input: "); scanf("%s",s); printf("\nThe result is: %s\n",fun(s)); }解題思路:
第一處:函數中申請了兩個內存空間,其p是存放字母字符串,t是存放非字母字符串,根
據條件可知,p依次存放字母字符串,其位置由j來控制,所以應填:s[i]。
第二處:利用for循環再把t中的內容依次追加到p中,其中t的長度為k,所以應填:k。
第三處:字符串處理好后必須添加字符串結束符,所以應填:’\0’。
給定程序MODI1.C中函數 fun 的功能是:將s所指字符串中最后一次出現的與
t1所指字符串相同的子串替換成t2所指字符串,所形成的新串放在w所指的數組中。
在此處,要求t1和t2所指字符串的長度相同。
例如,當s所指字符串中的內容為:“abcdabfabc”,t1所指子串中的內容為: “ab”,t2所指子串中的內容為:"99"時, 結果,在w所指的數組中的內容應為: “abcdabf99c”。
請改正程序中的錯誤,使它能得出正確的結果。
注意:不要改動main函數,不得增行或刪行,也不得更改程序的結構!
給定源程序:
#include <stdio.h> #include <string.h> int fun (char *s, char *t1, char *t2 , char *w) { int i; char *p , *r, *a; strcpy( w, s ); while ( w ) { p = w; r = t1; while ( *r ) IF ( *r == *p ) { r++; p++; } else break; if ( *r == '\0' ) a = w; w++; } r = t2; while ( *r ){ *a = *r; a++; r++; } } main() { char s[100], t1[100], t2[100], w[100]; printf("\nPlease enter string S:"); scanf("%s", s); printf("\nPlease enter substring t1:"); scanf("%s", t1); printf("\nPlease enter substring t2:"); scanf("%s", t2); if ( strlen(t1)==strlen(t2) ) { fun( s, t1, t2, w); printf("\nThe result is : %s\n", w); } else printf("\nError : strlen(t1) != strlen(t2)\n"); }解題思路:
第一處:判斷w指針所指的值是否是結束符,應改為:while(*w)。
第二處:if錯寫成If。
函數fun的功能是:將s所指字符串中ASCII值為奇數的字符刪除,串中剩余字符形成一個新串放在t所指的數組中。
例如,若s所指字符串中的內容為:“ABCDEFG12345”,其中字符A的ASCII碼值為奇數、…、字符1的ASCII碼值也為奇數、… 都應當刪除,其它依此類推。最后t所指的數組中的內容應是:“BDF24”。
注意: 部分源程序存在文件PROG1.C中。
請勿改動主函數main和其它函數中的任何內容,僅在函數fun的花括號中填入你編寫的若干語句。
給定源程序:
#include <stdio.h> #include <string.h> void fun(char *s, char t[]) { } main() { char s[100], t[100]; printf("\nPlease enter string S:"); scanf("%s", s); fun(s, t); printf("\nThe result is: %s\n", t); NONO(); }解題思路:
本題是從一個字符串按要求生成另一個新的字符串。我們使用for循環語句來解決這個問題。
參考答案:
void fun(char *s, char t[]) { int i, j = 0 ; for(i = 0 ; i < strlen(s); i++) if(s[i] % 2==0) t[j++] = s[i] ; t[j] = 0 ; }總結
以上是生活随笔為你收集整理的全国计算机等级考试题库二级C操作题100套(第18套)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 编写一个函数func(),将此函数的输入
- 下一篇: 视觉SLAM十四讲 罗德里格斯公式推导