2023年計算機二級C語言十套上機題14

2021-12-30 00:39:27 字數 1382 閱讀 4115

2023年計算機二級c語言十套上機題14

2. 改錯題

下列給定程式中,函式fun()的功能是:在字串str中找出ascⅱ碼值最小的字元,將其放在第乙個位置上,並將該字元前的原字元向後順序移動。例如,呼叫fun()函式之前給字串輸入fagagbdh,呼叫後字串中的內容為afaggbdh。

請改正程式中的錯誤,使它能得到正確結果。

注意:不要改動main函式,不得增行或刪行,也不得更改程式的結構。

試題程式:

#include

/**********************found***********************/

void fun(char p)

char min, *q;

int i=0;

min=p[i];

while (p[i]!=0)

if (min>p[i])

/**********************found***********************/

p=q+i;

min=p[i];

i++;

while(q>p)

{*q=*(q-1);

q--;

p[0]=min;

main()

{ char str[80];

printf("enter a string: ");

gets(str);

printf("nthe original string: ");

puts(str);

fun(str);

printf("nthe string after moving: ");

puts(str);

printf("nn");

答案及評析:(1)錯誤:void fun(char p)正確:void fun(char *p)(2)錯誤:p=q+i;正確:q=p+i;

【解析】錯誤:由於本題中函式的功能是對字串進行處理,而不是對單個字元進行處理,因此,函式的引數應為字串指標。

錯誤2:使指標q指向ascii碼最小的字元

本題解答需要3個步驟:

(1)找到字串中ascii碼值最小的字元,並儲存。

(2)將該字元複製,並將該字元前面的字串順次後移。

(3)將ascii碼值最小的字元賦給字串的第1個字元。找到ascii碼值最小的字元可以通過定義乙個字元min,該字元初始時等於字串的第1個字元,若字串的下乙個字元小於min,則將下乙個字元賦給min,如此迴圈到字元尾,即可得到ascii碼值最小的字元,同時令指標q指向最小字元。之後對最小字元前面的子串順次後移,可採用while語句實現。

此題需要熟練掌握和靈活應用c語言的字元與整型變數的關係以及字串操作。 

2023年計算機二級C語言十套上機題12

2011年計算機二級c語言十套上機題12 3.程式設計題 請編寫乙個函式fun 它的功能是 比較兩個字串的長度,不得呼叫c語言提供的求字串長度的函式 函式返回較短的字串。若兩個字串長度相等,則返回第1個字串。例如,輸入nanjing nanchang 為回車鍵 函式將返回nanjing。注意 部分源...

2023年計算機二級C語言十套上機題8

2011年計算機二級c語言十套上機題8 2.改錯題 下列給定程式中,fun 函式的功能是 根據形參m,計算下列公式的值。t 1 1 2 1 3 1 4 1 m 1 m 例如,若輸入5,則應輸出0.783333。請改正程式中的錯誤,使它能得到正確結果。注意 不要改動main函式,不得增行或刪行,也不得...

2023年計算機二級C語言十套上機題5

2011年計算機二級c語言十套上機題5 2.改錯題 下列給定的程式中,函式fun 的功能是 計算並輸出k以內最大的6個能被7或11整除的自然數之和。k的值由主函式傳入,若k的值為500,則函式的值為2925。請改正程式中的錯誤,使它能得到正確結果。注意 不要改動main函式,不得增行或刪行,也不得更...