C語言程序設計期末考試模擬試卷

單項選擇題

在下列各題的備選項中,請選擇一個最符合題意的選項。node

1) 如有如下程序段數組

int r=8;
printf("%d\n",r>>1);

輸出結果:是( )。
A.4
B.8
C.16
D.2函數

2) 如有如下語句spa

typedef struct S {
    int g;
    char h;
} T;

如下敘述中正確的是( )。
A.可用T定義結構體變量
B.可用S定義結構體變量
C.S是struct類型的變量
D.T是struct S類型的變量設計

3) 如下選項中,當x爲大於1的奇數時,值爲0的表達式是( )。
A.x%2==0
B.x/2
C.x%2!=0
D.x%2==1指針

4) 有如下程序code

#include <stdio.h>
#define f(x) x*x*x
main()
{
    int a=3,s,t;
    s=f(a+1);
    t=f((a+1));
    printf("%d,%d\n",s,t);
}

程序運行後的輸出結果是( )。
A.10,64
B.10,10
C.64,10
D.64,64圖片

5) char w;int x;float y;則表達式w*x+y-3.14的結果類型是()。
A.float
B.char
C.int
D.Double字符串

6) 若執行如下程序時從鍵盤上輸入3和4,則輸出的結果是( )。get

main()
{
    int a,b,s;
    scanf("%d %d",&a,&b);
    s=a;
    if(a<b)s=b;
    s*=s;
    printf("%d\n",s);
}

A.14
B.16
C.18
D.20

7) 下面程序的輸出結果是( )。

#include <stdio.h>
#define SUB(X,Y) (X)*Y
main()
{
   int a=3,b=4;
   printf("%d\n",SUB(a++,b++));
}

A.12
B.15
C.16
D.20

8) 指針s所指字符串的長度爲( )。

char *s="\\abc\\\n";

A.9
B.7
C.6
D.說明不合法

9) 對於如下的變量定義,表達式( )不符合C語言語法。

struct node {
    int len;
    char *pk; 
} x = {2, "right"}, *p = &x;

A.p->pk
B.*p.pk
C.*p->pk
D.*x.pk

10) 若fp已正肯定義並指向某個文件,當未遇到該文件結束標誌時函數feof(fp)的值爲( )。
A.-1
B.0
C.1
D.3

填空題

請將下列試題的空白處補充完整。

1) C語言程序老是從( )函數開始執行。
2) 圖片描述的C語言表達式( )。
3) 下列程序的輸出結果爲________。

#include<stdio.h>
main()
{
    int m=8;
    if(m--<8) printf("%d\n",++m);
    else printf("%d\n",--m);
}

4) 如有說明int a[3][4]={{1,2}, {0}, {4,6,8,10}},則a數組的元素個數爲( )。
5) 己知int a[][3]={1,2,3,4,5,6};,數組元素a[1][1]的值是( )。
6) 有如下程序,執行後輸出結果是____。

#include <stdio.h>
main()
{
    unsigned char a,b;
    a=4|3;
    b=4&3;
    printf("%d%d\n",a,b);
}

程序填空題

請將下列程序中的空白處補充完整。

1) 本程序中函數fun的功能是將字符串tt中的大寫字母都改成對應的小寫字母,其餘字符不變。例如,若輸入"Ab,cD",則輸出"ab,cd"。請將下述程序補充完整(注意:不改動程序的結構,不得增行或刪行)。

#include  <stdio.h>
#include  <string.h>
#include  <conio.h>
char   【1】   fun(char tt[])
{
    int i;
    for(i=0;tt[i];i++)
    {
        if((tt[i]>='A')&&(tt[i]<=   【2】   ))
            tt[i]+=32;
    }
    return(tt);
}
main()
{
    char tt[81];
    printf("\nPlease enter a string: ");
    gets(tt);
    printf("\nThe result string is: \n%s",fun(   【3】   ));
}

2) 如下程序的功能是:求出數組x中各相鄰兩個元素的和依次存放到a數組中,而後輸出。請填空。

main( )
{ int x[10],a[9],i;
  for (i=0;i<10;i++)scanf("%d",&x[i]);
  for(  【1】  ;i<10;i++)
    a[i-1]=x[i]+  【2】  ;
  for(i=0;i<9;i++)  printf("%d",a[i]);
  printf("\n");
}

程序改錯題

請按要求修改下列程序中的錯誤。
1) 下列給定程序的功能是:讀入一個英文文本行,將其中每一個單詞的第一個字母改爲大寫,而後輸出此文本行(這裏的「單詞」是指由空格隔開的字符串)。例如,若輸入「good luck!」,則應輸出「Good Luck!」。
請修改程序中的錯誤,使程序能得出正確的結果。
注意:不要改動main函數,不能增行或刪行,也不能更改程序的結構。

#include <ctype.h>
#include <string.h>
#include <stdio.h>
/*******found*********/
void top(char s)
{
  int i=0;
  for(;*s;s++)
    if(i)
    {
      if(*s==' ')
        i=0;
    }
    else
    {
      if(*s!=' ')
      {
        i=1;
        *s=toupper(*s);
      }
    }
}
main()
{
  char str[81];
  printf("\nPlease enter an English text line: ");
  gets(str);
  printf("\n\nBefore changing:\n %s",str);
  top(str);
  printf("\nAfter changing:\n %s\n",str);
}

2) 下列給定的程序中,函數fun的功能是交換主函數中兩個變量的值。例如,若變量x中的值爲1,y中的值爲2,則程序運行後x中的值爲2,y中的值爲1。
請修改程序中的錯誤,得出正確的結果。
注意:不要改動main函數,不能增行或刪行,也不能更改程序的結構。

#include <stdio.h>
/****found******/
void fun(int a,int b)
{
  int t;
  /****found******/
  t=a;a=b;b=t;
}
main()
{
  int x,y;
  x=1;
  y=2;
  fun(&x,&y);
  printf("the result is %d,%d\n",x,y);
}

程序設計題

請按照試題要求,完成規定的程序設計。
1) 編寫程序驗證歌德巴赫猜測:1000-2000中的每個偶數均可以表示成兩個素數之和。若是此猜測成立,顯示"all numbers are OK!;不然顯示"n is not OK!",這裏n是第一個使猜測不成立的偶數。

2) 編寫程序,實現以下功能:
對鍵盤輸入的兩個字符串進行比較,而後輸出兩個字符串中第一個不相同字符的ASCII碼之差。例如,輸入的兩個字符串分別爲"abcdefg"和"abceef",則輸出爲-1。

3) N名學生的成績已經在主函數中放入一個帶頭結點的鏈表結構中,head指向鏈表的頭結點。請編寫程序,它的功能是求出平均分、由函數值返回。

相關文章
相關標籤/搜索