现在的位置: 首页 > 14 二级C语言 > 正文

2009年秋 阅读程序 题目解析

2011年09月16日 14 二级C语言 ⁄ 共 664字 ⁄ 字号 暂无评论

第1页是真题,第2页是简要的解答提示,第3页是解题分析和答案。强烈建议先尝试自己完成,或者借助第2页的解答提示来完成,实在不明白再看答案。

6. 以下程序运行时输出到屏幕的结果是 (6)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include<stdio.h>
void main()
{
    FILE *fp;
    int k,n,a[6]= {1,2,3,4,5,6};
    fp=fopen("d2.dat","w");    
    fprintf(fp,"%d%d%d\n",a[0],a[1],a[2]);
    fprintf(fp,"%d%d%d\n",a[3],a[4],a[5]);
    fclose(fp);
    fp=fopen("d2.dat","r");
    fscanf(fp,"%d%d",&k,&n);
    printf("%d,%d\n",k,n);
    fclose(fp);
}

7. 以下程序运行时输出到屏幕的结果是 (7)

1
2
3
4
5
6
7
8
9
10
11
12
13
#include<stdio.h>
void main()
{
    int i=1,m=0;
    switch(i) {
    case 1:
    case 2:
        m++;
    case 3:
        m++;
    }
    printf("%d",m);
}

8. 以下程序运行时输出到屏幕的结果中第一行是 (8) ,第二行是 (9)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include<stdio.h>
void fun(int a[],int b[],int *x)
{
    int i,j=0;
    for(i=0; a[i]; i++) {
        if(i%2==0)continue;
        if(a[i]>10)
            b[j++]=a[i];
    }
    *x=j;
}
void main()
{
    int a[10]= {3,15,32,23,11,4,5,9},b[10];
    int i=0,x=0;
    fun(a,b,&x);
    for(i=0; i<x; i++)
        printf("%d\t",b[i]);
    printf("\n%d",x);
}

9. 以下程序运行时输出到屏幕的结果是 ( 10 )

1
2
3
4
5
6
7
8
9
10
11
#include<stdio.h>
int fun(int *x,int n)
{
    if(n==0) return x[0];
    else return x[0]+fun(x+1,n-1);
}
void main()
{
    int a[ ]= {1,2,3,4,5,6,7};
    printf("%d\n",fun(a,2));
}

10. 以下程序运行时输出到屏幕的结果是 (11)

1
2
3
4
5
6
7
8
9
10
11
12
13
#include<stdio.h>
long f(int n)
{
    static long s;
    if(n==1) return s=2;
    else return ++s;
}
void main()
{
    long i,sum=0;
    for(i=1; i<4; i++,) sum+=f(i);
    printf("%ld",sum);
}

11. 以下程序运行时输出到屏幕的结果中第一行是( 12 ) , 第二行是( 13 )

1
2
3
4
5
6
7
8
9
10
11
12
13
#include<stdio.h>
#define f(x,y) y=x*x
void g(int x,int y)
{
    y=x*x;
}
void main()
{
    int a=2,b=0,c=2,d=0;
    f(a,b);
    g(c,d);
    printf("%d\n%d",b,d);
}

12. 以下程序运行时输出到屏幕的结果中第一行是 (14) , 第三行是 (15)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include<stdio.h>
void main()
{
    int a[3][3]= {{3,8,12},{4,7,10},{2,5,11}},i,j,k,t;
    for(j=0; j<3; j++)
        for(k=0; k<2; k++)
            for(i=0; i<2-k; i++)
                if(a[i][j]>a[i+1][j])
                    t=a[i][j],a[i][j]=a[i+1][j],a[i+1][j]=t;
    for(i=0; i<3; i++) {
        for(j=0; j<3; j++)
            printf("%3d",a[i][j]);
        printf("\n");
    }
}

13. 以下程序运行时输出到屏幕的结果是( 16 )

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include<stdio.h>
#include<string.h>
int main()
{
    int i=0,n=0;
    char s[80],*p;
    strcpy(s,"It is a book.");
    for(p=s; *p!='\0'; p++)
        if(*p==' ')
            i=0;
        else if(i==0) {
            n++;
            i=1;
        }
    printf("%d\n",n);
    return 0;
}

14.以下程序运行时输_出到屏幕的结果第一行是 (17) ,第二行是 (18)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include<stdio.h>
typedef struct fact {
    int m,z;
} FACT;
FACT fun1(FACT t1,FACT t2)
{
    FACT t3;
    t3.m=t1.m*t2.m ;
    t3.z=t1.z*t2.m+t2.z*t1.m;
    return t3;
}
FACT fun2(FACT t)
{
    int m,n,k;
    m=t.m;
    n=t.z;
    while(k=m%n) {
        m=n;
        n=k;
    }
    t.m=t.m/n;
    t.z=t.z/n;
    return t;
}
void main()
{
    FACT s,s1= {8,4},s2= {6,5};
    s=fun1(s1,s2);
    printf("%d,%d\n",s.z,s.m);
    s=fun2(s);
    printf("%d,%d",s.z,s.m);
}

抱歉!评论已关闭.