對(duì)外經(jīng)濟(jì)貿(mào)易大學(xué)2002年考研C語言程序設(shè)計(jì)試題

字號(hào):

一、選擇題
    1.在C語言中,如果下面的變量都是int類型,則輸出的結(jié)果是()
    sum=pad=5;
    pad=sum++,pad++,++pad;printf(“%d/n”,pad);
    a.7 b.6 c.5 d.4
    2.以下程序的輸出結(jié)果是()
    main()
    {int i=010,j=10;
    printf(“%d,%d/n”,++i,j——);}
    a.11,10 b.9,10 c.010,9 d.10,9
    3.已知在ASCII代碼中,字母A的序號(hào)為65,以下程序的輸出結(jié)果是()
    main()
    { char c1=‘A’,c2=‘Y’;
    printf(“%d,%d/n”,c1,c2);}
    a.輸出錯(cuò)誤信息 b.65,90 c.A,Y d……65,89
    4.執(zhí)行以下語句,則c的二進(jìn)制值是()
    char a=3,b=6,,c;
    c=a^b<<2;
    a.00011011 b.00010100 c.00011100 d.00011000
    5.已知:int a=5;執(zhí)行下列語句后輸出結(jié)果是()
    if (a=0) printf(“%d”,a)
    else printf(“%d”,2*a);
    a.10 b.5c.0 d.語法錯(cuò)誤
    6.語句while(!E) 中的條件!E等價(jià)于()
    a.E==0 b.E!=1 c.E!=0 d.~E
    7.執(zhí)行語句for(X=0,Y=0;(Y!=123)&&(X<4);X++);()
    a.無限循環(huán) b.循環(huán)次數(shù)不變 c.執(zhí)行4次 d.執(zhí)行3次
    8.sizeof(double)是()
    a.一種函數(shù)調(diào)用 b一個(gè)雙精度型表達(dá)式 c.一個(gè)整形表達(dá)式 d.一個(gè)不合法的表達(dá)式
    9.以下程序的輸出結(jié)果是()
    main()
    { char str[12]={‘s’,‘t’,‘r’,‘i’,‘n’,‘g’,‘/0’}
    printf(“%d/n”,strlen(str));
    }
    a.12 b.11 c.7 d.6
    10. 以下程序的輸出結(jié)果是()
    main()
    { int a,b,d=241;
    a=d/100%9;
    b=(-1)&&(-1);
    printf(“%d,%d/n”,a,b);
    }
    a.6,1 b.2,1 c.6,0 d.2,0
    11.C語言的運(yùn)算符以運(yùn)算對(duì)象的數(shù)目可以分為()
    a.單目算符 b.單目算符和雙目算符
    c.單目,雙目和三目算符 d. 單目,雙目,三目和四目運(yùn)算符
    12.使用以下對(duì)二維數(shù)組的定義語句中,不正確的定義是()
    a. int m[2][3]={{1},{2,3}}; b.int m[2][3]={1,2,3};
    c. int m[2][3]={{1},{2},{3}}; d. int m[2][3]={1,{2,3}};
    13.若定義a,b為整型變量,用scanf{“%d%d”,&a,&b};語句輸入a,b的值時(shí),不可以()作為輸入的分割符。
    a.,b.空格 c. 回車鍵 d.TAB鍵
    14.若定義char *s=“car”; 則以下表達(dá)式的值不等于‘a(chǎn)’的是()
    a.*++s; b.*(s+1) c.*s+1 d.s[1]
    15.C語言程序中,若對(duì)函數(shù)的類型沒有說明,則函數(shù)的默認(rèn)類型是()
    a.void b.int c.char d.single
    16設(shè)有以下語句,則()不是對(duì)a數(shù)組元素的正確引用,其中0<=i<10
    int *p,a[10]={0,1,2,3,4,5,6,7,8,9};
    *p=a;
    a.a[p-a] b.*(&a) c.p d.*(*(a+i))
    17. 以下程序的輸出結(jié)果是()
    union pw
    { int ji;
    char ch[2];
    }a;
    main()
    { a.ch[0]=13;
    a.ch[1]=0;
    printf(“%d/n”,a.i);
    }
    a.13 b.14 c.208 d.209
    18.以下程序執(zhí)行時(shí),從第一列開始輸入2374,代表一個(gè)回車符。程序的輸出結(jié)果是()
    main()
    { int c;
    while((c=getchar())!=‘/n’){
    switch(c-‘2’){
    case 0:
    case 1:putchar(c+4);
    case 2: putchar(c+4);break;
    case 3: putchar(c+3);
    default: putchar(c+2);break;
    }
    printf(“/n”);
    }
    a.668977 b.668966 c.66778777 d.6688766
    19.以下程序的輸出結(jié)果是()
    #define FUDGE(y) 2.84+y
    #define PR(a) printf(“%d”,(int)(a))
    #define PRINT1(a) PR(a); putchar(‘/n’)
    main()
    { int x=2;
    PRINT1(FUDGE(5)*x)
    }
    a.11 b.12 c.13 d.15
    20.根據(jù)以下語句 ,則()不是對(duì)庫(kù)函數(shù)strcpy的正確調(diào)用
    char str1[]=“string,str2[8],*str3,*str4=”string“;
    a.strcpy(str1,“HELLO”); b. strcpy(str2,“HELLO”);
    c. strcpy(str3,“HELLO”) d. strcpy(str4,“HELLO”)
    二、閱讀程序段,填寫運(yùn)行結(jié)果
    1.下面程序段的運(yùn)行結(jié)果是()
    main()
    { int a=10,b=5,c=5,d=5;
    int m=0,n=0,p=0;
    for(;a    while(a>++c) n++;
    do p++;while(a>d++);
    printf(“m=%d n=%d p=%d”,m,n,p);
    }
    2.下面程序段的運(yùn)行結(jié)果是()
    main()
    { int k=4,m=1,p;
    p=func(k,m);
    printf(“%d,”,p);
    p=func(k,m);
    printf(“%d,”,p);
    }
    func(a,b)
    int a,b;
    { static int m=0,i=2;
    i+=m+1;
    m=i+a+b;
    return(m);
    }
    3.以下程序的輸出結(jié)果是()
    main()
    { int i;
    for(i=1;i<=5;i++){
    if(i%2) printf(“*”);
    else continue;
    printf(“#”);
    }
    printf(“$/n”);
    }
    4.下面程序的運(yùn)行結(jié)果是()
    main()
    { int x,a=1,b=2,c=0;
    x=——a||b&&++c;
    printf(“%d/n”,x);
    }
    5.下面程序的運(yùn)行結(jié)果是()
    #include
    struct s
    { int a;
    int b:
    }d[4]={1,20,3,40,5,60,7,80};
    main()
    { struct s *p=d;
    printf(“%d/n”,++p->a);
    printf(“%d/n”,++p->b);
    }
    三、程序選擇填空
    以下程序名為cat.c,其功能是將命令行中所列的文件依次在屏幕上顯示,每顯示完一個(gè)文件內(nèi)容后,用戶按任意鍵,則顯示下一個(gè)文件,如果命令行中所列的文件不能打開或沒有給出文件名,則顯示相應(yīng)的信息,命令的格式為:cat filename1 filename2…
    1) a.char b.int c.file d.FILE
    2) a.fgetc(fptr) b.getchar(fptr) c.fgetc(fp) d.getchar(fp)
    3) argc=1 b.argc==1 c.argc<1 d.argc==1
    4) a.&pf b.*fp c.argv d.fp
    5) a.fclose(argv) b.rewind(argv) c.fclose(fp) d.rewind(fp)
    #include “stdio.h”
    void cat (「1」 *fptr)
    { int c;
    while((c=「2」)!=EOF)
    putchar?;
    }
    main(argc,argv)
    int argc;
    char *argv[];
    {FILE *fp;
    int i;
    if(「3」)
    { printf(“缺少參數(shù)/n”); exit(0);}
    for(i=1;i
    { if((fp=fopen(argv,“r”))==NULL)
    printf(“%s 無法打開 /n”,argv);
    else{
    printf(“/*文件:%s*//n”,argv);
    cat(「4」);}
    「5」;
    printf(“按任意鍵顯示下一個(gè)文件/n”);
    getchar();
    }
    }
    四、程序填空
    1.函數(shù)fun(char *s,int a)的功能是采用遞歸的方法將16進(jìn)制的字符串s轉(zhuǎn)換成10進(jìn)制整數(shù)作為函數(shù)的返回值,若字符串s不是16進(jìn)制的字符串,則函數(shù)的返回值是-1,a的初值是0.
    fun(char *s,int a)
    { int i;
    if(「1」)
    i=*s-‘0’;
    else
    if(*s>=‘A’&&*s<=‘F’)
    「2」;
    else
    if(*s>=‘a(chǎn)’&&*s<=‘f’)
    「3」;
    else
    「4」;
    a=a*16+I;
    if(*(s+1)!=‘/0’)
    fun(「5」);
    else
    return(a);
    }
    2.以下程序找出二維數(shù)組a中每行的值,并按一一對(duì)應(yīng)的順序放入一維數(shù)組s中。即:第零行中值,放入s[0]中,第一行中值,放入s[1]中……。然后輸出每行行號(hào)和值,請(qǐng)?zhí)羁铡?BR>    #define 「6」 10
    main()
    {
    int a[M][M],s[M],i,j,k;
    for(i=0;i    for(j=0;j    scanf(“%d”,*(a+i)+j);
    for(i=0;i    { *(s+i)= 「7」;
    for(j=1;j    if(*(s+i) 「8」*(*(a+i)+j))
    *(s+i)= 「9」;
    }
    for(i=0;i    { printf(“Row=%2d Max=%5d”, 「10」);
    printf(“/n”);
    }
    }
    3. 函數(shù)htmtotxt的功能是將html文件中的htm標(biāo)記過濾掉,即過濾掉在<…。> 之間的內(nèi)容,將其他內(nèi)容形成一個(gè)純文本文件。函數(shù)的參數(shù)f1為現(xiàn)有的html文件名,參數(shù)f2為形成的純文本文件名。注意,在html文件中出現(xiàn)
    ,
    標(biāo)記時(shí),應(yīng)向文本文件中添加一個(gè)回車符。
    void htmtotxt(char *f1,char *f2)
    {
    FILE *fin,*fout;
    char sc,*s1,*p1;
    int flag;
    s1=(char *)malloc(MAX);
    p1=s1;
    /*打開輸入輸出文件*/
    if((fin=fopen(f1,“r”))==NULL)
    {
    printf(“File %s open error!/n”,f1);
    return;
    }
    if((fout=fopen(f2, 「11」)==NULL)
    {
    printf(“File %s open error!/n”,f2);
    return;
    }
    /*從htm文件中讀取內(nèi)容,過濾htm標(biāo)記中的內(nèi)容,然后將其他內(nèi)容寫入文本文件中*/
    flag=0;
    while(!feof(fin))
    {
    sc=「12」;
    if(sc==‘<’)
    {
    s1=p1;
    *s1++=sc;
    while((sc=fgetc(fin))!=‘>’&&!feof(fin))
    { *s1=「13」; s1++;}
    flag=1;
    }
    if(flag==1)
    {
    *s1++=sc;
    *s1=‘/0’;
    if(「14」)
    {
    fputc(‘/n’,fout);
    flag=0;
    continue;
    }
    }
    flag=0;
    fputc(sc,fout);}
    「15」;
    fclose(fout);
    }
    五、編寫程序
    1.請(qǐng)編寫函數(shù)huiwen(char *s),它的功能是檢查字符串s是否是回文,所謂回文即正向,反向的拼寫都一樣。如a,eye,ABBA等,當(dāng)字符串s是回文時(shí),函數(shù)的返回值是1,否則返回值是0.
    void huiwen(char *s)
    { /*答案開始*/
    …
    /*答案結(jié)束*/
    }
    2.請(qǐng)編寫函數(shù)void fun(int *a,int y,int n),它的功能是:把y值插入到a數(shù)組中,a數(shù)組中的數(shù)由主函數(shù)按由小到大的次序從鍵盤讀入,y是要插入的數(shù),其值也從鍵盤讀入。n是a中數(shù)字的個(gè)數(shù)(n    #define S 50
    main()
    {
    int a[S],b,c;
    ……
    fun(a,b,c)
    ……
    }
    void fun(int *a,int y,int n)
    { /*答案開始*/
    ……
    ……
    /*答案結(jié)束*/
    }