<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>
                  江蘇省高校計算機等級考試命題研究院 江蘇省高校計算機等級考試輔導
                  2014年9月全國計算機二級C上機題目第1套

                  一、基本操作

                     給定程序中,函數fun的作用是:不斷從終端讀入整數,由變量a統計大于0的個數,用變量c來統計小于0的個數,當輸入0時結束輸入,并通過形參pa和pb把統計的數據傳回主函數進行輸出。

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

                  果。

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

                   

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

                  #include  <stdio.h>
                  void  fun( int *px,  int  *py)
                  {
                  /**********found**********/
                     int  __(1)__ ;
                     scanf( "%d", &k );
                  /**********found**********/
                     while  __(2)__
                     {  if (k>0 ) a++;
                        if(k<0 ) b++;
                  /**********found**********/
                        __(3)__;
                     }
                     *px=a;  *py=b;
                  }
                  main()
                  {  int  x,  y;
                     fun( &x, &y );
                     printf("x=%d  y=%d\n", x,y );
                  }

                   

                   

                     二、簡單應用

                    給定程序modi1.c的主函數中,將a、b、c三個結點鏈成一個單向鏈表,并給各結點的數據域賦值,函數fun( )的作用是:累加鏈表結點數據域中的數據作為函數值返回。

                      請改正函數fun中指定部位的錯誤,使它能得出正確的結果。

                   

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

                  #include  <stdio.h>
                  typedef  struct  list
                  {  int  data;
                     struct list  *next;
                  } LIST;
                  int fun(LIST *h)
                  {  LIST  *p;
                  /**********found**********/
                     int  t;
                     p=h;
                  /**********found**********/
                     while( *p )
                     {
                  /**********found**********/
                        t=t+p.data;
                        p=(*p).next;             
                     }
                     return  t;
                  }
                  main()
                  {  LIST  a, b, c, *h;
                     a.data=34;  b.data=51;  c.data=87;  c.next='\0';
                     h=&a;  a.next=&b;  b.next=&c;
                     printf("總和 = %d\n",fun( h ));
                  }

                   

                   

                     三、綜合應用

                    請編寫函數fun,其功能是分別統計形參t所指二維數組中字母A和C的個數。

                      注意:部分源程序存在PROG1.C中,請勿改動主函數main和其他函數中的任何

                   

                  內容,僅在函數fun的花括號中填入所編寫的若干語句。

                  #include  <stdio.h>
                  #include  <stdlib.h>
                  #define  M  14
                  void NONO();
                  void  fun( char (*t)[M], int *a ,int *c)
                  {

                   

                  }

                  void  get( char (*s)[M] )
                  {  int  i, j;
                     for( i=0; i<M; i++ )
                     {  for( j=0; j<M; j++)
                        {  s[i][j]=65+rand()%12; printf( "%c ",s[i][j]); }
                        printf("\n");
                     }
                  }

                  main()
                  {  char  a[M][M];
                     int   x, y;
                     get (a);
                     fun ( a, &x,&y );
                     printf("A = %d   C = %d\n",x,y);
                     NONO();
                  }

                  void NONO()
                  {/* 本函數用于打開文件,輸入數據,調用函數,輸出數據,關閉文件。 */
                    FILE *fp, *wf ;
                    int i, j, x, y ;
                    char  a[M][M];

                    fp = fopen("in.dat","r") ;
                    wf = fopen("out.dat","w") ;
                    for( i=0; i<M; i++ )
                    {  for( j=0; j<M; j++)
                       {  fscanf(fp, "%c ", &a[i][j]); }
                    }
                    fun ( a, &x,&y );
                    fprintf(wf, "A=%d\n", x) ;
                    fprintf(wf, "C=%d\n", y) ;
                    fclose(fp) ;
                    fclose(wf) ;
                  }

                   

                   

                  一、基本操作答案

                   

                  【參考答案】

                   

                  (1)    a=0,b=0,k

                  (2)    k!=0

                  (3)    scanf( "%d", &k )

                   

                  【考點分析】

                   

                  主要考察考生對循環結構的理解。

                   

                  【解題思路】

                   

                  填空1a=0,b=0,k下面的scanf函數用到變量k,需要提前定義,在while循環中使用了臨時存放正負數個數的變量a,b,因此也要提前定義。

                   

                  填空2( k!=0 )根據題意,輸入0時結束程序,因此當k!=0時進入循環記錄正負數的個數。

                   

                  填空3scanf( "%d", &k ) 需要不斷從終端輸入整數,因此在循環體內添加輸入操作。

                   

                   二、簡單應用答案

                   

                  【參考答案】

                   

                  (1)    int t;改為int t=0;

                  (2)    *p 改為p或者p!=NULL

                  (3)    p.data改為p->data

                   

                  【考點分析】

                   

                  主要考察考生對于操作符.->的異同的理解,指針只能有->,數組元素可以有.或者->

                   

                  【解題思路】

                   

                  (1) int t;改為int t=0; 題目中變量t是用來存放累加和的,必須初始化。

                  (2)*p 改為p或者p!=NULL,題目中*p是結構體,不能轉化為bool型;

                   

                  (3)p.data改為p->data,p是指針,只能用p->,不能用p.。

                   

                  三、綜合應用答案

                  【參考答案】

                   

                  int i=0,j=0;//循環統計的下標

                           *a=0;//初始化a字符統計的個數

                           *c=0; //初始化c字符統計的個數

                           for(i=0;i<M;i++)//

                           {

                                     for(j=0;j<M;j++)//

                                     {

                                              if(t[i][j]=='A')//字符是a,計數

                                                       (*a)++;

                                              if(t[i][j]=='C') //字符是c,計數

                                                       (*c)++;

                                      }

                           }

                   

                  【考點分析】

                   

                  主要考察考生對多重循環的理解與使用,以及字符串的比較

                   

                  【解題思路】

                   

                  對二維數組的行列分別循環,行優先,查找數組中元素為A或者C,分別對其進行計數

                   

                   

                   

                   

                   

                   

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