<samp id="uu9tx"></samp>
        <samp id="uu9tx"><tr id="uu9tx"><nav id="uu9tx"></nav></tr></samp>
        <delect id="uu9tx"><legend id="uu9tx"><meter id="uu9tx"></meter></legend></delect>
                <samp id="uu9tx"><tr id="uu9tx"><meter id="uu9tx"></meter></tr></samp><nav id="uu9tx"></nav>
                <samp id="uu9tx"></samp>
                  <samp id="uu9tx"><tr id="uu9tx"><meter id="uu9tx"></meter></tr></samp>
                  江蘇省高校計算機等級考試命題研究院 江蘇省高校計算機等級考試輔導
                  全國計算機二級C題庫第41--50套

                   

                  本題目如果下載后發現有錯誤的地方,請聯系網站管理員:QQ121431055

                   

                  考試時,上機操作題目有三套,基本操作題、簡單應用題、綜合應用題

                   

                  41套:

                  給定程序中,函數fun的功能是:計算x所指數組中N個數的平均值(規定所有

                  數均為正數),平均值通過形參返回主函數,將小于平均值且最接近平均值的數作

                  為函數值返回,在主函數中輸出。

                  例如,有10個正數:46 30 32 40 6 17 45 15 48 26,平均值為:

                  30.500000

                  主函數中輸出:m=30.0

                  請在程序的下劃線處填入正確的內容并把下劃線刪除,使程序得出正確的結

                  果。

                  注意:源程序存放在考生文件夾下的BLANK1.C中。

                  不得增行或刪行,也不得更改程序的結構!

                  給定源程序:

                  #include

                  #define N 10

                  double fun(double x[],double *av)

                  { int i,j; double d,s;

                  s=0;

                  for(i=0; i

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

                  __1__=s/N;

                  d=32767;

                  for(i=0; i

                  if(x[i]<*av && *av - x[i]<=d){

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

                  d=*av-x[i]; j=__2__;}

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

                  return __3__;

                  }

                  main()

                  { int i; double x[N],av,m;

                  for(i=0; i4.0f ",x[i]);}

                  printf("\n");

                  m=fun(x,&av);

                  printf("\nThe average is: %f\n",av);

                  printf("m=%5.1f ",m);

                  printf("\n");

                  }

                  解題思路:

                  第一處:計算好的平均值通過形參av返回,所以應填:*av。

                   

                   

                  第二處:計算小于平均值且最接近平均值的位置j,所以應填:i。

                  第三處:返回該數,所以應填:x[j]。

                  ***************************************************

                  給定程序MODI1.C中函數fun的功能是:根據整型形參n,計算如下公式的值。

                  例如,若 n=10,則應輸出: 0.617977。

                  請改正程序中的語法錯誤,使它能得出正確的結果。

                  注意:不要改動 main 函數,不得增行或刪行,也不得更改程

                  序的結構!

                  給定源程序:

                  #include

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

                  int fun ( int n )

                  { float A=1; int i;

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

                  for (i=2; i

                  A = 1.0/(1+A);

                  return A ;

                  }

                  main( )

                  { int n ;

                  printf("\nPlease enter n: ") ;

                  scanf("%d", &n ) ;

                  printf("A%d=%f\n", n, fun(n) ) ;

                  }

                  解題思路:

                  第一處:函數的返回是浮點型數,所以應改為:float fun(int n)。

                  第二處:for的終止條件應是i<=n。

                  ***************************************************

                  程序定義了N×N的二維數組,并在主函數中自動賦值。請編寫函數fun,函數

                  的功能是:使數組右上三角元素中的值乘以m 。

                  例如:若m的值為2,a 數組中的值為

                  | 1 9 7 | | 2 18 14|

                  a = | 2 3 8 | 則返回主程序后a數組中的值應為 | 2 6 16|

                  | 4 5 6 | | 4 5 12|

                  注意: 部分源程序存在文件PROG1.C文件中。

                  請勿改動主函數main和其它函數中的任何內容, 僅在函數fun的花括號中填入

                  你編寫的若干語句。

                  給定源程序:

                  #include

                  #include

                  #define N 5

                  int fun ( int a[][N], int m )

                  {

                  }

                   

                   

                  main ( )

                  { int a[N][N], m, i, j;

                  printf("***** The array *****\n");

                  for ( i =0; i

                  { for ( j =0; j

                  { a[i][j] = rand() ; printf( "M", a[i][j] ); }

                  printf("\n");

                  }

                  do m = rand() ; while ( m>=3 );

                  printf("m = M\n",m);

                  fun ( a ,m );

                  printf ("THE RESULT\n");

                  for ( i =0; i

                  { for ( j =0; j

                  printf("\n");

                  }

                  NONO ( );

                  }

                   

                  解題思路:

                  本題是利用兩重循環給二維數組右上三角元素中的值乘以m。

                  參考答案:

                  int fun ( int a[][N], int m )

                  {

                  int i, j;

                  for(i = 0 ; i < N ; i++)

                  for(j = i ; j < N ; j++)

                   

                   

                  a[i][j] *= m ;

                  }

                   

                  ※※※※※※※※※※※※※※※※※※※※※※※※※

                  42套:

                  給定程序中,函數fun的功能是: s所指字符串中的所有數字字符移到所有

                  非數字字符之后,并保持數字字符串和非數字字符串原有的先后次序。例如,形

                  s所指的字符串為:def35adh3kjsdf7。執行結果為:defadhkjsdf3537。

                  請在程序的下劃線處填入正確的內容并把下劃線刪除,使程序得出正確的結

                  果。

                  注意:源程序存放在考生文件夾下的BLANK1.C中。

                  不得增行或刪行,也不得更改程序的結構!

                   

                   

                  給定源程序:

                  #include

                  void fun(char *s)

                  { int i, j=0, k=0; char t1[80], t2[80];

                  for(i=0; s[i]!='\0'; i++)

                  if(s[i]>='0' && s[i]<='9')

                  {

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

                  t2[j]=s[i]; ___1___;

                  }

                  else t1[k++]=s[i];

                  t2[j]=0; t1[k]=0;

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

                  for(i=0; i

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

                  for(i=0; i<___3___; i++) s[k+i]=t2[i];

                  }

                  main()

                  { char s[80]="ba3a54j7sd567sdffs";

                  printf("\nThe original string is : %s\n",s);

                  fun(s);

                  printf("\nThe result is : %s\n",s);

                  }

                  解題思路:

                  t2是存放數字字符串,t1是存放非數字字符串。

                  第一處:t2存放數字字符串的位置是由j來控制的,每添加一個,j必須加1,所以應填:j++。

                  第二處:利用for循環把t1字符串添加到原字符串s中,所以應填:s[i]=t1[i]。

                  第三處:利用for循環把t2字符串添加到原字符串s的尾部,其中數字字符串的長度為j,所

                  以應填:j。

                  ***************************************************

                  給定程序MODI1.C中函數 fun 的功能是:用冒泡法對6個字符串按由小到大

                  的順序進行排序。

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

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

                  給定源程序:

                  #include

                  #include

                  #define MAXLINE 20

                  fun ( char *pstr[6])

                  { int i, j ;

                  char *p ;

                  for (i = 0 ; i < 5 ; i++ ) {

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

                  for (j = i + 1, j < 6, j++)

                  {

                  if(strcmp(*(pstr + i), *(pstr + j)) > 0)

                  {

                   

                   

                  p = *(pstr + i) ;

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

                  *(pstr + i) = pstr + j ;

                  *(pstr + j) = p ;

                  }

                  }

                  }

                  }

                  main( )

                  { int i ;

                  char *pstr[6], str[6][MAXLINE] ;

                  for(i = 0; i < 6 ; i++) pstr[i] = str[i] ;

                  printf( "\nEnter 6 string(1 string at each line): \n" ) ;

                  for(i = 0 ; i < 6 ; i++) scanf("%s", pstr[i]) ;

                  fun(pstr) ;

                  printf("The strings after sorting:\n") ;

                  for(i = 0 ; i < 6 ; i++) printf("%s\n", pstr[i]) ;

                  }

                  解題思路:

                  第一處:for循環語句中缺少分號。

                  第二處:應該把pstr+j位置上的值賦值給*(pstr+i)上,所以應改為:

                  *(pstr+i)=*(pstr+j);。

                  ***************************************************

                  請編寫函數fun,它的功能是:求出ss所指字符串中指定字符的個數,并返回

                  此值。

                  例如,若輸入字符串: 123412132,輸入字符為: 1,則輸出:3。

                  注意: 部分源程序在文件PROG1.C中。

                  請勿改動主函數main和其它函數中的任何內容,僅在函數fun的花括號中填入

                  你編寫的若干語句。

                  給定源程序:

                  #include

                  #include

                  #define M 81

                  int fun(char *ss, char c)

                  {

                  }

                  main()

                  { char a[M], ch;

                  printf("\nPlease enter a string:"); gets(a);

                  printf("\nPlease enter a char:"); ch = getchar();

                  printf("\nThe number of the char is: %d\n", fun(a, ch));

                  NONO ( );

                  }

                   

                  解題思路:

                  本題是考察考生怎樣從字符串中找出指定字符的個數。使用while循環語句來字符串是否結

                  束,如果沒有結束,則判斷當前字符是否是指定的字符,如果是指定的字符,則個數cnt1,

                  直至字符串結束為止,最后由函數返回。

                  參考答案:

                  int fun(char *ss, char c)

                  {

                  int cnt = 0 ;

                  char *p = ss ;

                  while(*p) {

                  if(*p == c) cnt++ ;

                  p++ ;

                  }

                  return cnt ;

                  }

                   

                  ※※※※※※※※※※※※※※※※※※※※※※※※※

                  43套:

                  給定程序中,函數fun的功能是:在形參ss所指字符串數組中查找與形參t

                  指字符串相同的串,找到后返回該串在字符串數組中的位置(下標值),未找到

                  則返回-1。ss所指字符串數組中共有N個內容不同的字符串,且串長小于M。

                  請在程序的下劃線處填入正確的內容并把下劃線刪除, 使程序得出正確的結

                  果。

                  注意:源程序存放在考生文件夾下的BLANK1.C中。

                  不得增行或刪行,也不得更改程序的結構!

                  給定源程序:

                  #include

                  #include

                  #define N 5

                  #define M 8

                  int fun(char (*ss)[M],char *t)

                  { int i;

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

                  for(i=0; i< __1__ ; i++)

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

                  if(strcmp(ss[i],t)==0 ) return __2__ ;

                  return -1;

                  }

                  main()

                  { char ch[N][M]={"if","while","switch","int","for"},t[M];

                  int n,i;

                  printf("\nThe original string\n\n");

                  for(i=0;i

                  printf("\nEnter a string for search: "); gets(t);

                  n=fun(ch,t);

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

                  if(n== __3__) printf("\nDon't found!\n");

                  else printf("\nThe position is %d .\n",n);

                  }

                  解題思路:

                  本題是考察在字符串查找指定的子串。

                  ,

                  第一處:利用for循環,從幾個字符串中進行查找,程序中已經給定了N個字符串,所以應

                  填:N。

                  第二處:在字符串已經找到,則返回字符串數組中的位置(下標值),所以應填:i。

                  第三處:如果沒有發現,則顯示沒有找到信息,所以應填:-1。

                  ***************************************************

                   

                   

                  給定程序MODI1.C中函數fun的功能是:從整數155之間,選出能被3整除、

                  且有一位上的數是5的那些數,并把這些數放在b所指的數組中,這些數的個數作為

                  函數值返回。規定,函數中a1放個位數,a2放十位數。

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

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

                  給定源程序:

                  #include

                  fun( int *b )

                  { int k,a1,a2,i=0;

                  for(k=10; k<=55; k++) {

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

                  a2=k/1O;

                  a1=k-a2*10;

                  if((k%3==0 && a2==5)||(k%3==0 && a1==5))

                  { b[i]=k; i++; }

                  }

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

                  return k;

                  }

                  main( )

                  { int a[100],k,m;

                  m=fun( a );

                  printf("The result is :\n");

                  for(k=0; k

                  }

                  解題思路:

                  第一處: 取當前變量k的十位數字上的數,所以應改為:a2=k/10;。

                  第二處: 要求統計個數并存入變量i中,最后返回i,所以應改為:return i;。

                  ***************************************************

                  假定輸入的字符串中只包含字母和*號。請編寫函數fun,它的功能是:將字

                  符串尾部的*號全部刪除,前面和中間的*號不刪除。

                  例如,字符串中的內容為:****A*BC*DEF*G*******,刪除后,字符串中的內

                  容應當是:****A*BC*DEF*G。在編寫函數時,不得使用C語言提供的字符串函數。

                  注意: 部分源程序在文件PROG1.C文件中。

                  請勿改動主函數main和其它函數中的任何內容,僅在函數fun的花括號中填入

                  你編寫的若干語句。

                  給定源程序:

                  #include

                  void fun( char *a )

                  {

                  }

                  main()

                  { char s[81];

                  printf("Enter a string:\n");gets(s);

                  fun( s );

                  printf("The string after deleted:\n");puts(s);

                  NONO();

                   

                   

                  }

                  解題思路:

                  本題是考察字符串的移動。

                  1. 使用while循環語句和字符串指針p掃描出尾部的*號。

                  2. 定義兩個字符串中間變量st,其中s是存放*號后面的字符串,t是存放*號字符串。

                  3. 最后利用字符串拷貝和連接,重新組成字符串a。

                  參考答案:

                  void fun( char *a )

                  {

                  char *p = a ;

                  while(*p) p++ ; p-- ;

                  while(*p == '*') p-- ;

                  p++ ;

                  *p = 0 ;

                  }

                   

                  ※※※※※※※※※※※※※※※※※※※※※※※※※

                  44套:

                  函數fun的功能是進行數字字符轉換。若形參ch中是數字字符'0''9',

                  '0'轉換成'9','1'轉換成'8','2'轉換成'7',……,'9'轉換成'0';若是其它

                  字符則保持不變;并將轉換后的結果作為函數值返回。

                  請在程序的下劃線處填入正確的內容并把下劃線刪除,使程序得出正確的結

                  果。

                  注意:源程序存放在考生文件夾下的BLANK1.C中。

                  不得增行或刪行,也不得更改程序的結構!

                  給定源程序:

                  #include

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

                  ___1___ fun(char ch)

                  {

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

                  if (ch>='0' && ___2___)

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

                  return '9'- (ch-___3___);

                  return ch ;

                  }

                  main()

                  { char c1, c2;

                  printf("\nThe result :\n");

                  c1='2'; c2 = fun(c1);

                  printf("c1=%c c2=%c\n", c1, c2);

                  c1='8'; c2 = fun(c1);

                  printf("c1=%c c2=%c\n", c1, c2);

                  c1='a'; c2 = fun(c1);

                  printf("c1=%c c2=%c\n", c1, c2);

                  }

                  解題思路:

                  第一處:要求返回處理好的字符,所以應填:char。

                  第二處:判斷該字符是否是數字,所以應填:ch<='9'。

                  第三處:只要減去'0'ASCII值,即可得到要求的結果,所以應填:'0'。

                  ***************************************************

                  給定程序MODI1.C中函數fun的功能是:將p所指字符串中的所有字符復制到b

                  中,要求每復制三個字符之后插入一個空格。

                  例如,在調用fun函數之前給a輸入字符串:ABCDEFGHIJK,

                  調用函數之后,字符數組b中的內容則為:ABC DEF GHI JK。

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

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

                  給定源程序:

                  #include

                   

                   

                  void fun(char *p, char *b)

                  { int i, k=0;

                  while(*p)

                  { i=1;

                  while( i<=3 && *p ) {

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

                  b[k]=p;

                  k++; p++; i++;

                  }

                  if(*p)

                  {

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

                  b[k++]=" ";

                  }

                  }

                  b[k]='\0';

                  }

                  main()

                  { char a[80],b[80];

                  printf("Enter a string: "); gets(a);

                  printf("The original string: "); puts(a);

                  fun(a,b);

                  printf("\nThe string after insert space: "); puts(b); printf("\n\n");

                  }

                  解題思路:

                  第一處:把指針p所指的值賦值給b[k]中。

                  第二處:把空格字符賦值給b[k++]中,而不是一個空格的字符串。

                  ***************************************************

                  N名學生的成績已在主函數中放入一個帶頭節點的鏈表結構中,h指向鏈表的頭

                  節點。請編寫函數fun,它的功能是:求出平均分,由函數值返回。

                  例如,若學生的成績是:85,76,69,85,91,72,64,87, 則平均分應當

                  是:78.625。

                  注意: 部分源程序在文件PROG1.C中。

                  請勿改動主函數main和其它函數中的任何內容,僅在函數fun的花括號中填入

                  你編寫的若干語句。

                  給定源程序:

                  #include

                  #include

                  #define N 8

                  struct slist

                  { double s;

                  struct slist *next;

                  };

                  typedef struct slist STREC;

                  double fun( STREC *h )

                  {

                  }

                   

                   

                  STREC * creat( double *s)

                  { STREC *h,*p,*q; int i=0;

                  h=p=(STREC*)malloc(sizeof(STREC));p->s=0;

                  while(i

                  { q=(STREC*)malloc(sizeof(STREC));

                  q->s=s[i]; i++; p->next=q; p=q;

                  }

                  p->next=0;

                  return h;

                  }

                  outlist( STREC *h)

                  { STREC *p;

                  p=h->next; printf("head");

                  do

                  { printf("->%4.1f",p->s);p=p->next;}

                  while(p!=0);

                  printf("\n\n");

                  }

                  main()

                  { double s[N]={85,76,69,85,91,72,64,87},ave;

                  STREC *h;

                  h=creat( s ); outlist(h);

                  ave=fun( h );

                  printf("ave= %6.3f\n",ave);

                  NONO();

                  }

                   

                  解題思路:

                  本題是計算鏈表結構中成績的平均分。具體操作請看答案程序中的說明。

                  參考答案:

                  #include

                  #include

                   

                  double fun( STREC *h )

                  {

                  STREC *p=h->next; /* 由于頭結點中沒有存放數據 */

                  double av=0.0; /* 對計算成績平均值的變量進行初始化 */

                  int n = 0 ;

                  while(p!=NULL) { /* 判斷鏈表是否結束 */

                  av = av + p->s ; /* 對成績進行累加 */

                  p=p->next; /* 到下一個結點位置 */

                  n++; /* 人數加1 */

                  }

                  av /= n ; /* 計算成績平均值 */

                  return av ; /* 返回成績平均值 */

                  }

                   

                  ※※※※※※※※※※※※※※※※※※※※※※※※※

                  45套:

                  函數fun的功能是:把形參a所指數組中的偶數按原順序依次存放到a[0]、

                  a[1]、a[2]、……中,把奇數從數組中刪除,偶數個數通過函數值返回。例如:

                  a所指數組中的數據最初排列為:9、1、4、2、3、6、5、8、7,刪除奇數后a

                  所指數組中的數據為:4、2、6、8,返回值為4。

                  請在程序的下劃線處填入正確的內容并把下劃線刪除,使程序得出正確的結

                  果。

                  注意:源程序存放在考生文件夾下的BLANK1.C中。

                  不得增行或刪行,也不得更改程序的結構!

                  給定源程序:

                  #include

                  #define N 9

                  int fun(int a[], int n)

                  { int i,j;

                  j = 0;

                  for (i=0; i

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

                  if (___1___== 0) {

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

                  ___2___ = a[i]; j++;

                  }

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

                  return ___3___;

                  }

                  main()

                  { int b[N]={9,1,4,2,3,6,5,8,7}, i, n;

                  printf("\nThe original data :\n");

                  for (i=0; iprintf("\n");

                  n = fun(b, N);

                  printf("\nThe number of even %d\n", n);

                  printf("\nThe even :\n");

                   

                   

                  for (i=0; iprintf("\n");

                  }

                  解題思路:

                  第一處:判斷a[i]是否是偶數,若是,則仍保留在原數組中a[j],所以應填:a[i] % 2。

                  第二處:數組a中的元素位置由j來控制,每增加一個元素,則j1,所以應填:a[j]。

                  第三處:返回刪除奇數后a所指數組中數據的元素j,所以應填:j。

                  ***************************************************

                  給定程序MODI1.C中函數fun的功能是:按以下遞歸公式求函數值。

                  10 (n=1)

                  fun(n)=

                  fun(n-1)+2 (n>1)

                  例如,當給n輸入5時,函數值為18;當給n輸入3時,函數值為14。

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

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

                  給定源程序:

                  #include

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

                  fun ( n )

                  { int c;

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

                  if(n=1)

                  c = 10 ;

                  else

                  c= fun(n-1)+2;

                  return(c);

                  }

                  main()

                  { int n;

                  printf("Enter n : "); scanf("%d",&n);

                  printf("The result : %d\n\n", fun(n));

                  }

                  解題思路:

                  第一處:形參n沒有定義類型,所以應改為:fun (int n)。

                  第二處:判斷相等的符號是==。

                  ***************************************************

                  假定輸入的字符串中只包含字母和*號。請編寫函數fun,它的功能是:使字

                  符串中尾部的*號不得多于n;若多于n個,則刪除多余的*;若少于或等于n個,

                  則什么也不做, 字符串中間和前面的*號不刪除。

                  例如,字符串中的內容為:****A*BC*DEF*G*******,若n的值為4,刪除后,

                  字符串中的內容應當是:****A*BC*DEF*G****;若n的值為7,則字符串中的內容仍

                  為:****A*BC*DEF*G*******。n的值在主函數中輸入。在編寫函數時,不得使用C

                  語言提供的字符串函數。

                  注意: 部分源程序在文件PROG1.C中。

                  請勿改動主函數main和其它函數中的任何內容,僅在函數fun的花括號中填入

                  你編寫的若干語句。

                  給定源程序:

                   

                   

                  #include

                  void fun( char *a,int n )

                  {

                  }

                  main()

                  { char s[81]; int n;

                  printf("Enter a string:\n");gets(s);

                  printf("Enter n : ");scanf("%d",&n);

                  fun( s,n );

                  printf("The string after deleted:\n");puts(s);

                  NONO();

                  }

                   

                  解題思路:

                  本題是考察字符串的操作。

                  1. 使用while循環語句和字符串指針p掃描出尾部的*號。

                  2. 找出字符串最右邊字母后出現'*'的第1位置。

                  3. 使用while循環來處理右邊'*'是否大于n個,若大于,則取n'*'。

                  4. 最后給字符串加上結束符。

                  參考答案:

                  void fun( char *a,int n )

                  {

                  char *p=a ;

                  int j=0;

                  while(*p) p++; p--; /* 字符串的長度 */

                  while(*p == '*') p--; /* 字符串右的'*' */

                  p++;

                  while(j

                  p++ ;

                  j++;

                  }

                  *p = 0 ;

                   

                   

                  }

                   

                  ※※※※※※※※※※※※※※※※※※※※※※※※※

                  46套:

                  給定程序中,函數fun的功能是:利用指針數組對形參ss所指字符串數組中的

                  字符串按由長到短的順序排序,并輸出排序結果。ss所指字符串數組中共有N個字

                  符串,且串長小于M。

                  請在程序的下劃線處填入正確的內容并把下劃線刪除, 使程序得出正確的結

                  果。

                  注意:源程序存放在考生文件夾下的BLANK1.C中。

                  不得增行或刪行,也不得更改程序的結構!

                  給定源程序:

                  #include

                  #include

                  #define N 5

                  #define M 8

                  void fun(char (*ss)[M])

                  { char *ps[N],*tp; int i,j,k;

                  for(i=0; i

                  for(i=0; i

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

                  k= __1__ ;

                  for(j=i+1; j

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

                  if(strlen(ps[k]) < strlen(__2__) ) k=j;

                   

                   

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

                  tp=ps[i]; ps[i]=ps[k]; ps[k]= __3__ ;

                  }

                  printf("\nThe string after sorting by length:\n\n");

                  for(i=0; i

                  }

                  main()

                  { char ch[N][M]={"red","green","blue","yellow","black"};

                  int i;

                  printf("\nThe original string\n\n");

                  for(i=0;i

                  fun(ch);

                  }

                  解題思路:

                  本題是按字符串的長短進行排序。

                  第一處:外循環每循環一次,k應保存當前的i值,所以應填:i。

                  第二處:使用內循環對i+1后面的字符串長度進行比較,所以應填:ps[j]。

                  第三處:交換內容,所以應填:tp。

                  ***************************************************

                  已知一個數列從第0項開始的前三項分別為0,0,1,以后的各項都是其相鄰

                  的前三項之和。給定程序MODI1.C中函數fun的功能是:計算并輸出該數列前n項的

                  平方根之和。n的值通過形參傳入。

                  例如,當n10時,程序的輸出結果應為:23.197745。

                  請改正程序中的錯誤,使程序能輸出正確的結果。

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

                  給定源程序:

                  #include

                  #include

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

                  fun(int n)

                  { double sum, s0, s1, s2, s; int k;

                  sum = 1.0;

                  if (n <= 2) sum = 0.0;

                  s0 = 0.0; s1 = 0.0; s2 = 1.0;

                  for (k = 4; k <= n; k++)

                  { s = s0 + s1 + s2;

                  sum += sqrt(s);

                  s0 = s1; s1 = s2; s2 = s;

                  }

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

                  return sum

                  }

                  main ( )

                  { int n;

                  printf("Input N=");

                  scanf("%d", &n);

                  printf("%f\n", fun(n) );

                   

                   

                  }

                  解題思路:

                  第一處:由于函數返回是實數,所以必須定義返回的類型,只有整型或無結果返回可以忽

                  略,其他必須定義返回的類型,所以要在此行前加上doublefloat。

                  第二處:該行缺少分號。

                  ***************************************************

                  編寫函數fun,它的功能是計算下列級數和,和值由函數值返回。

                  例如,當n = 10,x0.3時,函數值為1.349859。

                  注意: 部分源程序在文件PROG1.C文件中。

                  請勿改動主函數main和其它函數中的任何內容,僅在函數fun

                  的花括號中填入你編寫的若干語句。

                  給定源程序:

                  #include

                  #include

                  double fun(double x , int n)

                  {

                  }

                  main()

                  {

                  printf("%f\n", fun(0.3,10));

                  NONO();

                  }

                   

                  解題思路:

                  本題是根據給定的公式計算結果。使用for循環語句依次求出每一項的值,分別進行累加并

                  把結果存入變量s中,最后把s作為函數值返回。其中,jc函數是計算階乘的。

                  參考答案:

                  #include

                  #include

                  long jc(int n)

                   

                   

                  {

                  long s = 1 ;

                  int i ;

                  for(i = 1 ; i <= n ; i++) s *= i ;

                  return s ;

                  }

                  double fun(double x , int n)

                  {

                  double s = 1.0, y = x ;

                  int i ;

                  for(i = 1 ; i <= n ; i++) {

                  s += y / (double)jc(i) ;

                  y *= x ;

                  }

                  return s ;

                  }

                   

                  ※※※※※※※※※※※※※※※※※※※※※※※※※

                  47套:

                  給定程序中,函數fun的功能是:找出形參s所指字符串中出現頻率最高的字

                  母(不區分大小寫),并統計出其出現的次數。

                  例如,形參s所指的字符串為:abcAbsmaxless,程序執行后的輸出結果為:

                  letter 'a' : 3 times

                  letter 's' : 3 times

                  請在程序的下劃線處填入正確的內容并把下劃線刪除, 使程序得出正確的結

                  果。

                  注意:源程序存放在考生文件夾下的BLANK1.C中。

                  不得增行或刪行,也不得更改程序的結構!

                   

                   

                  給定源程序:

                  #include

                  #include

                  #include

                  void fun(char *s)

                  { int k[26]={0},n,i,max=0; char ch;

                  while(*s)

                  { if( isalpha(*s) ) {

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

                  ch=tolower(__1__);

                  n=ch-'a';

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

                  k[n]+= __2__ ;

                  }

                  s++;

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

                  if(max

                  }

                  printf("\nAfter count :\n");

                  for(i=0; i<26;i++)

                  if (k[i]==max) printf("\nletter \'%c\' : %d times\n",i+'a',k[i]);

                  }

                  main()

                  { char s[81];

                  printf("\nEnter a string:\n\n"); gets(s);

                  fun(s);

                  }

                  解題思路:

                  本題是找出字符串中出現頻率最高的字母并統計出其次數。

                  第一處:將當前字母轉換為小寫字母,所以應填:*s。

                  第二處:把該字母出現的個數累加到指定的數組中,所以應填:1。

                  第三處:如果當前該字母出現次數大于最大次數max,那么把該次數賦值給max,所以應填:

                  k[n]。

                  ***************************************************

                  給定程序MODI1.C中函數 fun 的功能是:求S的值。

                  例如,當k10時,函數值應為:1.533852。

                  請改正程序中的錯誤,使程序能輸出正確的結果。

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

                  給定源程序:

                  #include

                  #include

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

                  void fun( int k )

                  { int n; float s, w, p, q;

                   

                   

                  n = 1;

                  s = 1.0;

                  while ( n <= k )

                  { w = 2.0 * n;

                  p = w - 1.0;

                  q = w + 1.0;

                  s = s * w *w/p/q;

                  n++;

                  }

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

                  return s

                  }

                  main ( )

                  {

                  printf("%f\n", fun (10));

                  }

                  解題思路:

                  第一處:由于函數返回是實數,所以必須定義返回的類型,只有整型或無結果返回可以忽

                  略,其他必須定義返回的類型,所以要在此行前加上doublefloat。

                  第二處:缺少分號。

                  ***************************************************

                  編寫函數fun,它的功能是:計算并輸出下列級數和:

                  1 1 1

                  S = ── + ── + + ───

                  1×2 2×3 n(n+1)

                  例如,當n = 10時,函數值為:0.909091。

                  注意: 部分源程序在文件PROG1.C文件中。

                  請勿改動主函數main和其它函數中的任何內容,僅在函數fun的花括號中填入

                  你編寫的若干語句。

                  給定源程序:

                  #include

                  double fun( int n )

                  {

                  }

                  main() /* 主函數 */

                  {

                  printf("%f\n", fun(10));

                  NONO();

                  }

                   

                  解題思路:

                  本題是根據公式計算結果。使用for循環語句進行計算。但要注意的是:在除法運算中,如

                  果除數和被除數都是整數,所以所除的結果也是整數,因此1應取實數或進行實型的類型轉換。

                  參考答案:

                  double fun( int n )

                  {

                  double s = 0.0 ;

                  int i ;

                  for(i = 1 ; i <= n ; i++) s = s + 1.0 / (i * (i + 1)) ;

                  return s ;

                  }

                   

                  ※※※※※※※※※※※※※※※※※※※※※※※※※

                  48套:

                  給定程序中,函數fun的功能是:將形參s所指字符串中的數字字符轉換成對

                  應的數值,計算出這些數值的累加和作為函數值返回。

                  例如,形參s所指的字符串為:abs5def126jkm8,程序執行后的輸出結果為:

                  22。

                  請在程序的下劃線處填入正確的內容并把下劃線刪除, 使程序得出正確的結

                  果。

                   

                   

                  注意:源程序存放在考生文件夾下的BLANK1.C中。

                  不得增行或刪行,也不得更改程序的結構!

                  給定源程序:

                  #include

                  #include

                  #include

                  int fun(char *s)

                  { int sum=0;

                  while(*s) {

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

                  if( isdigit(*s) ) sum+= *s- __1__ ;

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

                  __2__;

                  }

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

                  return __3__ ;

                  }

                  main()

                  { char s[81]; int n;

                  printf("\nEnter a string:\n\n"); gets(s);

                  n=fun(s);

                  printf("\nThe result is: %d\n\n",n);

                  }

                  解題思路:

                  本題是把字符串中是數字字符轉換成對應的數值并進行累加。

                  第一處:'0'字符對應的ASCII值是48,因此數字字符轉換成對應數值時只要減去48,即是

                  該數字字符對應的數值,所以應填:48。

                  第二處:到字符串下一個位置,所以應填:s++。

                  第三處:返回累加和sum,所以應填:sum。

                  ***************************************************

                  給定程序MODI1.C中函數fun的功能是:計算小于形參k的最大的10個能被13

                  17整除的自然數之和。k的值由主函數傳入,若k的值為500,則函數值為4622。

                  請改正程序中的錯誤,使程序能輸出正確的結果。

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

                  給定源程序:

                  #include

                  int fun( int k )

                  { int m=0, mc=0, j ;

                  while ((k >= 2) && (mc < 10))

                  {

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

                  if ((k = 0) || (k = 0))

                  { m = m+ k; mc++; }

                  k--;

                  }

                  return m;

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

                   

                   

                  _____

                  main ( )

                  {

                  printf("%d\n", fun (500));

                  }

                  解題思路:

                  第一處:判斷相等的條件是==,而不是=,所以只能在比較處再添加一個=。

                  第二處:經過編譯可知,"{""}"沒有配對,所以在橫線處加上"}"。

                  ***************************************************

                  編寫函數fun,它的功能是:求小于形參n同時能被37整除的所有自然數之

                  和的平方根,并作為函數值返回。

                  例如若n1000時,程序輸出應為:s = 153.909064。

                  注意: 部分源程序在文件PROG1.C文件中。

                  請勿改動主函數main和其它函數中的任何內容,僅在函數fun的花括號中填入

                  你編寫的若干語句。

                  給定源程序:

                  #include

                  #include

                  double fun( int n)

                  {

                  }

                  main() /* 主函數 */

                  {

                  printf("s =%f\n", fun ( 1000) );

                  NONO();

                  }

                   

                  解題思路:

                  本題是求小于形參n同時能被37整除的所有自然數之和的平方根,并作為函數值返回。

                  參考答案:

                  double fun( int n)

                   

                   

                  {

                  double sum=0.0;

                  int i;

                  for(i=21; i<=n; i++)

                  if((i % 3==0) && (i % 7==0)) sum+=i;

                  return sqrt(sum) ;

                  }

                   

                  ※※※※※※※※※※※※※※※※※※※※※※※※※

                  49套:

                  給定程序中,函數fun的功能是:將形參s所指字符串中所有ASCII碼值小于97

                  的字符存入形參t所指字符數組中,形成一個新串,并統計出符合條件的字符個數

                  作為函數值返回。

                  例如,形參s所指的字符串為:Abc@1x56*,程序執行后t所指字符數組中的字

                  符串應為:A@156*。

                  請在程序的下劃線處填入正確的內容并把下劃線刪除, 使程序得出正確的結

                  果。

                  注意:源程序存放在考生文件夾下的BLANK1.C中。

                  不得增行或刪行,也不得更改程序的結構!

                  給定源程序:

                  #include

                  int fun(char *s, char *t)

                  { int n=0;

                  while(*s)

                  { if(*s < 97) {

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

                  *(t+n)= __1__ ; n++; }

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

                   

                   

                  __2__ ;

                  }

                  *(t+n)=0;

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

                  return __3__ ;

                  }

                  main()

                  { char s[81],t[81]; int n;

                  printf("\nEnter a string:\n"); gets(s);

                  n=fun(s,t);

                  printf("\nThere are %d letter which ASCII code is less than 97: %s\n",n,t);

                  }

                  解題思路:

                  本題是根據條件組成新的字符串并統計出符合條件的個數n。

                  第一處:把符合條件的當前字符存放到t字符串中,所以應填:*s。

                  第二處:到字符串下一個位置,所以應填:s++。

                  第三處:返回符合條件的字符個數n,所以應填:n。

                  ***************************************************

                  給定程序MODI1.C中函數 fun 的功能是:由形參給定n個實數,輸出平均值,

                  并統計在平均值以上(含平均值)的實數個數。

                  例如,n8,輸入:193.199,195.673,195.757,196.051,196.092,196.596,

                  196.579,196.763

                  所得平均值為:195.838745,在平均值以上的實數個數應為:5

                  請改正程序中的錯誤,使程序能輸出正確的結果。

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

                  給定源程序:

                  #include

                  int fun(float x[], int n)

                  {

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

                  int j, c=0, float xa=0.0;

                  for (j=0; j

                  xa += x[j]/n;

                  printf("ave =%f\n",xa);

                  for (j=0; j

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

                  if (x[j] => xa)

                  c++;

                  return c;

                  }

                  main ( )

                  { float x[100] = {193.199, 195.673, 195.757, 196.051, 196.092, 196.596, 196.579,

                  196.763};

                  printf("%d\n", fun (x, 8));

                  }

                  解題思路:

                  第一處:兩種類型變量定義之間應該用分號,所以應改為:int j, c=0; float xa=0.;。

                   

                   

                  第二處:在C語言中,大于等于應表達為>=。

                  ***************************************************

                  編寫函數fun,其功能是:根據以下公式求P的值,結果由函數值帶回。mn

                  為兩個正整數且要求m > n。

                  m!

                  P = ───

                  n!(m-n)!

                  例如:m12,n8時,運行結果為495.000000。

                  注意: 部分源程序在文件PROG1.C文件中。

                  請勿改動主函數main和其它函數中的任何內容,僅在函數fun的花括號中填入

                  你編寫的若干語句。

                  給定源程序:

                  #include

                  float fun(int m, int n)

                  {

                  }

                  main() /* 主函數 */

                  {

                  printf("P=%f\n", fun (12,8));

                  NONO();

                  }

                   

                  解題思路:

                  本題是計算階乘。

                  參考答案:

                  #include

                  long jc(int m)

                  {

                  long s=1;

                  int i ;

                  for(i=1;i<=m;i++) s=s*i ;

                  return s;

                  }

                   

                   

                  float fun(int m, int n)

                  {

                  float p;

                  p=1.0*jc(m)/jc(n)/jc(m-n) ;

                  return p;

                  }

                   

                  ※※※※※※※※※※※※※※※※※※※※※※※※※

                  50套:

                  給定程序中,函數fun的功能是:N×N矩陣,以主對角線為對稱線,對稱元

                  素相加并將結果存放在左下三角元素中,右上三角元素置為0。例如,若N=3,有

                  下列矩陣:

                  1 2 3

                  4 5 6

                  7 8 9

                  計算結果為

                  1 0 0

                  6 5 0

                  10 14 9

                  請在程序的下劃線處填入正確的內容并把下劃線刪除,使程序得出正確的結

                  果。

                  注意:源程序存放在考生文件夾下的BLANK1.C中。

                  不得增行或刪行,也不得更改程序的結構!

                  給定源程序:

                  #include

                  #define N 4

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

                  void fun(int (*t)___1___ )

                   

                   

                  { int i, j;

                  for(i=1; i

                  { for(j=0; j

                  {

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

                  ___2___ =t[i][j]+t[j][i];

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

                  ___3___ =0;

                  }

                  }

                  }

                  main()

                  { int t[][N]={21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10}, i, j;

                  printf("\nThe original array:\n");

                  for(i=0; i

                  { for(j=0; jprintf("\n");

                  }

                  fun(t);

                  printf("\nThe result is:\n");

                  for(i=0; i

                  { for(j=0; jprintf("\n");

                  }

                  }

                  解題思路:

                  第一處:形參t的定義,整數數組其寬度為N,所以應填:[N]。

                  第二處:對稱元素相加,其結果仍存放在左下三角元素中,所以應填:t[i][j]。

                  第三處:右上三角元素置為0,所以應填:t[j][i]。

                  ***************************************************

                  給定程序MODI1.C中函數fun的功能是:計算函數

                  F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值。其中xy的值不等,zy的值不等。

                  例如,當x的值為9、y的值為11、z的值為15時,函數值為 -3.50。

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

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

                  給定源程序:

                  #include

                  #include

                  #include

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

                  #define FU(m,n) (m/n)

                  float fun(float a,float b,float c)

                  { float value;

                  value=FU(a+b,a-b)+FU(c+b,c-b);

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

                  Return(Value);

                  }

                   

                   

                  main()

                  { float x,y,z,sum;

                  printf("Input x y z: ");

                  scanf("%f%f%f",&x,&y,&z);

                  printf("x=%f,y=%f,z=%f\n",x,y,z);

                  if (x==y||y==z){printf("Data error!\n");exit(0);}

                  sum=fun(x,y,z);

                  printf("The result is : %5.2f\n",sum);

                  }

                  解題思路:

                  第一處:define定義錯誤,所以應改為:#define FU(m,n) ((m)/(n))。

                  第二處:return錯寫成Return,變量value錯寫成Value。

                  ***************************************************

                  規定輸入的字符串中只包含字母和*號。請編寫函數fun,它的功能是:將字

                  符串中的前導*號全部刪除,中間和尾部的*號不刪除。

                  例如,字符串中的內容為:*******A*BC*DEF*G****,刪除后,字符串中的內

                  容應當是:A*BC*DEF*G****。在編寫函數時,不得使用C語言提供的字符串函數。

                  注意: 部分源程序在文件PROG1.C中。

                  請勿改動主函數main和其它函數中的任何內容,僅在函數fun的花括號中填入

                  你編寫的若干語句。

                  給定源程序:

                  #include

                  void fun( char *a )

                  {

                  }

                  main()

                  { char s[81];

                  printf("Enter a string:\n");gets(s);

                  fun( s );

                  printf("The string after deleted:\n");puts(s);

                  NONO();

                  }

                   

                  解題思路:

                   

                   

                  本題是考察字符串的操作。

                  1. 利用循環掃描出字符串左邊第1個字符不是'*'的字符。

                  2. 再利用循環把以后的字符依次移動原字符串首地址開始存放。

                  3. 最后給字符串a加上結束符。

                  參考答案:

                  void fun( char *a )

                  {

                  int j=0;

                  char *p = a ;

                  while(*p == '*') p++ ;

                  while(*p) {

                  a[j++] = *p ;

                  p++;

                  }

                  a[j]=0 ;

                  }

                   

                  亚洲欧美日韩国产一区二区三区_全亚洲免费一级黄片_国产一区二区三区不卡视频手机版_国产污三级网站在线观看