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

2010年春 阅读程序 题目解析

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

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

第6~13题

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

1
2
3
4
5
6
7
8
#include <stdio.h>
#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)

1
2
3
4
5
6
7
8
9
#include <stdio.h>
void main()
{
    int a=1,b=2;
    a+=b;
    b=a-b;
    a-=b;
    printf("%d,%d\n",a,b);
}

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
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)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>
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)

1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
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)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
#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<=i-1; 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("%d ",a[i][j]);
        printf("\n");
    }
}

12 以下程序运行时输出到屏幕的结果第一行是 (15) ,第二行是 (16)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
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<p2) {
        t=*p1; *p1=*p2; *p2=t;
        p1+=2, p2-=2;
    }
}

13 以下程序运行时输出至到屏幕的结果第一行是(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
#include <stdio.h>
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("%d\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)]);
}

抱歉!评论已关闭.