1. <small id="kntrr"><delect id="kntrr"></delect></small>
    2. <sub id="kntrr"></sub>
        1. <form id="kntrr"><listing id="kntrr"></listing></form>
            江蘇省高校計算機等級考試命題研究院 江蘇省高校計算機等級考試輔導
            2010春C考試試題

                2010  第二部分C語言程序設計

             

            一、選擇題(用答題卡答題,答案依次填在2130答題號內,l0)

            21C語言規定,在一個源程序中main函數的位置   _____(21)_____   。

                A.必須在最開始              B.必須在最后

                C.必須在預處理命令的后面    D.可以在其他函數之前或之后

            22.以下選項中,______(22)______ C語言關鍵字

              Aprintf    Binclude    Cfun   D.default

            23.已知有聲明"int a=3,b=4,c;",則執行語句"c=1/2*(a+b);",c的值為__(23)___ 。

                A0    B3    C3.5   D4

            24.設指針變量占2個字節的內存空間,若有聲明"char *p="123";int c;",則執行語句"c=sizeof(p);",c的值為__(24)___

              A1    B2    C3 D4

            25.已知有聲明"int a=3,b=4;",下列表達式中合法的是    (25)

                Aa+b=7    Ba=|b|    Ca=b=0   D(a++)++

            26.已知有聲明"char s[20]="Hello";",在程序運行過程中,若要想使數組s中的內容修改為"Good",則以下語句中能夠實現此功能的是 (26) 。

                As="Good";              Bs[20l="Good";

                Cstrcat(s,"Good");      Dstrcpy(s,"Good");

            27.已知有聲明"int a[4][4]={{1,2,3,4},{5,6,7,8),{9,10,11,12},{13,14,15,16)};",若需要引用值為12的數組元素,則下列選項中錯誤的是(  27  )    。

                A*(a+2)+3    B*(*(a+2)+3)    C*(a[2]+3)  Da[2][3]

            28.已知有聲明"int n;float x,y;",則執行語句"y=n=x=3.89;",y的值為   (  28  )     。

                A3    B30    C389 D40

            29.已知有聲明"int a=12,b=15,c;",則執行表達式"c=(a||(b-=a))",變量bc的值分別為(  29  )

                A3,1    B15,12    C15,1 D3,12

            30.下列敘述中,正確的是   _____(30)______   。

              AC語言中的文件是流式文件,因此只能順序存取文件中的數據。

              B.調用fopen函數時若用"r""r+"模式打開一個文件,該文件必須在指定存儲位置或默認存儲位置處存在。

              C.當對文件進行了寫操作后,必須先關閉該文件然后再打開,才能讀到該文件中的第1個數據

              D.無論以何種模式打開一個已存在的文件,在進行了寫操作后,原有文件中的全部數據必定被覆蓋

            二、填空題(將答案填寫在答題紙的相應答題號內,每個答案只占一行,30)

              基本概念

            1  數學式 所對應的c語言表達式為pow(x, __(1)__)。

            2  已知有聲明"char ch='g';",則表達式ch=ch-'a'+'A'的值為字符    (2)    的編碼。

            3  C語言系統中,如果一個變量能正確存儲的數據范圍為整數-3276832767,則該變量在內存中占_____(3)_____個字節。    '

            4  已知有聲明"int a[3][2]={{1,2),{3,4},{5,6}},*p=a[0];",則執行語句"printf("%d\n",*(p+4));"后的輸出結果為__(4)___    。

            5  已知有聲明和語句"int a;scanf("a=%d",&a);",欲從鍵盤上輸入數據使a中的值為3,則正確的輸入應是 _____(5)_____    。

              閱讀程序

            6  以下程序運行時輸出到屏幕的結果為  (6)    。

                #include

                #define MAX(A,B)  A>B?2*A:2*B

                void main()

                {int a=1,b=2,c=3,d=4,t;  

                 t=MAX(a+b,c+d);

                 printf("%d\n",t);

                }

            7以下程序運行時輸出到屏幕的結果是    (7)    。

                #include

                void main()   

                {int a=1,b=2;   

                 a+=b;

                 b=a-b;

                 a-=b;

                 printf("%d,%d\n",a,b);

                }

            8.以下程序運行時輸出到屏幕的結果是  (8)    。

                #include

                void swap(int a,int b)

                {int t;

                 if(a>b)t=a,a=b,b=t;

                }

                void main()

                {int x=13,y=11,z=12;

                 if(x>y)swap(x,y);

                 if(x>z)swap(x,z);

                 if(y>z)swap(y,z);

                 printf("%d\t%d\t%d\n",x,y,z);

                }

            9•以下程序運行時輸出到屏幕的結果第一行是    (9)    ,第二行是  (10)    ,第三行是(11)    。

              #include

              int g(int x,int y)

              {  return x+y;

              }

              int f(int x,int y)

              {

                {static int x=2;

                if(y>2)

                { x=x*x;

                  y=x;

                }

                else y=x+1;

                }

                return x+y;

              }

              void main()

              {int a=3;

               printf("%d\n",g(a,2));

               printf("%d\n",f(a,3));

               printf("%d\n",f(a,2));

              }

            10.以下程序運行時輸出到屏幕的結果是    (12)    。

                #include

                void fun(int m,int n)

                {if(m>=n)

                   printf("%d",m);

                else

                  fun(m+1,n);

                printf("%d",m);

                }

                void main()

                {  fun(1,2);  }

            11.以下程序運行時輸出到屏幕的結果第二行是 (13) ,第四行是  (14)   。

                #include

                #define N 6

                void main()

                {int i,j,a[N+1][N+1];

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

                {a[i][i]=1;a[i][1]=1;}

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

                  for(j=2;j

                 a[i][j]=a[i-1][j-1]+a[i-1][j];

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

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

                     printf("M",a[i][j]);

                printf("\n");

                }

               }

            12.以下程序運行時輸出到屏幕的結果第一行是    (15)    ,第二行是    (16)    。

                #include

                void fun(char *p1,char *p2);

                void main()

                {int i;  char a[]="54321";

                 puts(a+2);

                 fun(a,a+4);

                 puts(a);

                }

                void fun(char *p1,char *p2)

                {char t;

                 while(p1

                 {t=*p1;*p1=*p2;*p2=t;

                  p1+=2,p2-=2;

                 }

                }

            13.以下程序運行時輸出至到屏幕的結果第一行是(17) ,第二行是(18) 。

                #include

                typedef struct{int x,y;}direction;

                int visible(direction s,direction A,direction B,direction C)

                {direction p1,p2;

                 int d;

                 p1.x=B.x-A.x;

                 p1.y=B.y-A.y;

                 p2.x=C.x-A.x;

                 p2.y=C.y-A.y;

                 d=s.x*p1.x*p2.x+s.y*p1.y*p2.y;

                 printf("M\n",d);

                 return d>0;

                }

                void main()

                {char *ss[]={"invisible","visible"};

                 direction s={1,1},T={1,1},A={0,0},B={2,1};

                 puts(ss[visible(s,T,A,B)]);

                }

                  完善程序

                14.以下程序的功能是:統計一個字符串中數字字符"0""9"各自出現的次數,統計結果保存在數組

                count中。例如,如果字符串為"lenterschar4543123564879ffgh",則統計結果為:1:2 2:1 3:2 4:3

                5:2 6:1 7:1 8:1 9:1。試完善程序以達到要求的功能。

                #include

                void fun(char *t,int count[])

                {  char *p=t;

                   while(  _____(19)_____  )

                   {  if(*p>='0' && *p<='9')

                        count[_____(20)_____]++;

                      p++;

                   }

                }

                void main()

                {char s[80]="1enterschar4543123564879ffgh";int count[10]={0},i;

                 fun(s,count);

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

                   if(count[i]) printf("%d:%d  ",i,count[i]);

                }

                15.下列程序的功能是對a數組a[0]a[n-1]中存儲的n個整數從小到大排序。排序算法是:第一趟通

                過比較將n個整數中的最小值放在a[0],最大值放在a[n-1];第二趟通過比較將n個整數中的

                次小值放在a[1],次大值放在a[n-2];......,依次類推,直到待排序序列為遞增序列。試完喜

                程序以達到要求的功能。

                #include

                #define  N 7

                void sort(int a[],int n)

                {int i,j,min,max,t;

                for(i=0;i<___(21)___;i++)

                { ______(22)______ ;

                 for(j=i+l;j

                  if(a[j]

                  else if(a[j]>a[max])max=j;

                if(min!=i)

                {t=a[min];a[min]=a[i];a[i]=t;}

                if(max!=n-i-1)

                 if(max==i)

                  {t=a[min];a[min]=a[n-i-1];a[n-i-1]=t;}

                 else

                 {t=a[max];a[max]=a[n-i-1];a[n-i-1]=t;}

                 }

                } 

                void main()

                {int a[N]={8,4,9,3,2,1,5},i;

                sort(a,N);

                printf("sorted:\n");

                for(i=0;i

                printf("\n");

                }

            16.下列程序中函數find_replace的功能是:s1指向的字符串中查找s2指向的字符串,并用s3指向

                的字符串替換在s1中找到的所有s2字符串。若sl字符串中沒有出現s2字符串,則不做替換并使

                函數返回0,否則函數返回1。試完善程序以達到要求的功能。

               #include

                #include

                int find_replace(char s1[],char s2[],char s3[])

                {  int i,j,k,t=0;  char temp[80];

                  if(s1[0]=='\0'||s2[0]=='\0')return t;

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

                  {  k=0;  j=i;

                     while(s1[j]==s2[k]&&s2[k]!='\0')

                     {  j++;

                       ___(23)_________ ;

                     }

                     if(s2[k]=='\0')

                     {  strcpy(temp,&s1[j]);

                        ___________(24)________;

                        i=i+strlen(s3);

                       _______(25)_________;

                        t=1;

                     }

                }

                return t;

              }

                void main()

                {char line[80]="This is a test program and a test data.";

                 char substr1[10]="test",substr2[10]="actual";

                 int k;

                 k=find_replace(line,substr1,substr2);

                 if(______(26)_______)

                   puts(line);

                 else

                  printf("not found\n");

                     }

            17.設hlh2分別為兩個單鏈表的頭指針,鏈表中結點的數據結構為:

                typedef struct node

                {int data;

                 struct  node *next;

                }NODE;   

                sea_del函數的功能是:刪除hl指向的鏈表中首次出現的與h2指向的鏈表中數據完全匹配的

                若干個連續結點,函數返回hl指向鏈表的頭指針。

            例如,初態下,hl指向鏈表和h2指向鏈表如下圖所示:

            試完善函數sea_del以達到要求的功能。

            NODE *sea_del(NODE *h1,NODE *h2)

            {NODE *p,*ph,*q,*s;

              ph=NULL;p=q=h1;  s=h2;

              if(h1==NULL||__(22)__) return h1;

              while(p!=NULL&&s!=NULL)

              {while(q->data==s->data&&q&&s)

                {  q=q->next;

                   s= __(28)__;

                }

                if(s!=NULL)    /*失配時,h1起始結點后移,h2從首結點開始*/

                {  ph=p;

                   p=q=p->next;

                   s=__(29)__;

                }

                else    、

                  if(ph==NULL)  h1=q;

                  else ph->next=q;

                }

                 __(30)__   ;

               }

            国产在线精品一区二区三区不卡_亚洲第一极品精品无码_永久免费无码网站在线观看_亚洲av综合日韩