现在的位置: 首页 > 新课程 > 正文

2011级C语言期终考试复习指南

2011年12月31日 新课程 ⁄ 共 1298字 ⁄ 字号 暂无评论

2011级C语言期终考试复习

【考试时间】

2012年1 月9日 (周一)下午14:00-15:30

题型:

1
2
3
4
选择题:30分,15题x2
填空题:20分,10题x2
改错题:10分,5题x2
编程题:40分,4题x10

说明1:

考试中如果出现没有讲过的内容,请根据常识作答。

说明2:

学习C语言有利于培养严谨求实的学习作风,请严格按照要求作答。

实例1:请写出下面程序的输出结果

1
2
3
4
5
6
7
8
#include <stdio.h>
int main(int argc, char *argv[])
{
	int a=3, b=4;	
	printf("a+b=%d\n", a+b);
	printf("a-b=%d\n", a-b);	
	return 0;
}

唯一正确结果:

1
2
a+b=7
a-b=-1

如果把输出结果写出一行,或者只写 7 和 -1 的,均不给分。

【复习材料】

下载 PPT 选择题/填空题复习资料

C语言数据类型的空间分配
深入理解逻辑表达式

SISO C语言课程期终复习题

理解概念、解析真题:数组和指针

C语言常考算法

指针部分的题目:

【strlen 字符串的长度】

1
2
3
4
5
6
7
int strlen(char *s)
{
    char *p = s;
    while (*p != '\0')
        p++;
    return p - s;
}

【swap 交换两个整数】

1
2
3
4
5
void swap(int *px, int *py) 
{
    int t;
    t = *px;  *px = *py;  *py = t;
}

现在编写主函数,利用上面的 swap 函数来交换变量 a 和 b 的值。

1
2
3
4
5
6
7
8
int main(int argc, char *argv[])
{
	int a, b;
	scanf("%d%d", &a, &b);
	swap(&a, &b);
	printf("a=%d, b=%d\n", a, b);	
	return 0;
}

如果你对程序的运行过程不清楚,可以使用 printf 语句输出更多的信息来帮助理解,如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
 
void swap(int *px, int *py)
{
    int t;
    printf("px: %d, content is %d\n", px, *px);
    printf("py: %d, content is %d\n", py, *py);
    t = *px;  *px = *py;  *py = t;
    printf("px: %d, content is %d\n", px, *px);
    printf("py: %d, content is %d\n", py, *py);
}
 
int main()
{
    int a, b;
    scanf("%d%d", &a, &b);
    printf("address a: %d\n", &a);
    printf("address b: %d\n", &b);
    swap(&a, &b);
    printf("a=%d, b=%d\n", a, b);
    return 0;
}

【打印1-100之间的所有素数】

理解 break 和 continue:continue的功能和break有点类似,区别是continue只是终止本次循环,接着开始下次循环。而break则是完全中止循环。可以理解为continue的作用是略过档次循环中剩下的语句,重新开始新的循环。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int is_prime(int n)
{
    int i;
    for (i = 2; i < n; i++)
        if (n % i == 0)
            break;
    return (i==n);
}
 
int main()
{
    int i;
    for (i = 1; i <= 100; i++) {
        if  ( !is_prime(i) )
            continue;
        printf("%d\n", i);
    }
    return 0;
}

这个程序是理解 break 和 continue 的很好例子。

continue 表示执行下一次循环。当 i=1时,if 条件满足,执行 continue,跳过 printf,直接执行 i++;当 i=2时,if 条件不满足,执行 printf 语句。

continue不是必须的。实际上,下面的代码更容易理解。

1
2
3
4
5
6
7
8
9
int main()
{
    int i;
    for (i = 1; i <= 100; i++) {
        if (is_prime(i))
            printf("%d\n", i);
    }
    return 0;
}

is_prime 是判断 n 是否是素数的函数。 例如,n =15,当 i=2,不满足整除的条件,i 递增为3,这是满足整除的条件,执行 break,跳出循环。由于 i==n 的条件不满足,返回值为 0。

说明:break 语句只能出现在 switch 和 循环语句(for 和 while)中。

1
2
3
4
5
6
7
8
9
10
int is_prime(int n)
{
    int i=2;
    while (i < n) {
        if (n % i == 0)
            break;
        i++;
    }
    return (i==n);
}

抱歉!评论已关闭.