套题1 - C语言程序设计 - 答案

更新时间:2023-10-12 17:23:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

试 题 一

参考答案与评分标准

一、单项选择题:(10分,每题2分)

1.对于一个正常运行和正常退出的C程序,以下叙述正确的是 。

√A)程序是从main函数第一条可执行语句开始执行,在main函数结束

B)程序的执行总是从程序的第一个函数开始,在main函数结束

C)程序的执行总是从main函数开始,在最后一个函数中结束 D)从程序的第一个函数开始,在程序的最后一个函数中结束 2.在turbo C2.0编程环境下有如下程序片段:

#include main( ) {

int a = 5, b = 4, x, y; x = 2 * a++;

printf(\a=%d, x=%d\\n\, a, x); y = --b * 2;

printf(\b=%d, y=%d\\n\, b, y); }

则正确的执行结果是 。 A) a=6, x=10

b=3, y=8 √B) a=6, x=10

b=3, y=6 C) a=6, x=12

b=3, y=6 D) 以上均不对

3.在turbo C2.0编程环境下有以下程序片断:

typedef struct

第1页(共6页) 班级: 学号: 姓名: {

int b; int p; }TYPEA;

void f(TYPEA c) {

c.b += 1; c.p += 2; } main() {

TYPEA a ={1, 2}; f(a);

printf(\%d,%d\\n\, a.b, a.p); }

则程序运行后的输出结果是 。

A) 2,3 B)2,4 C)1,4 √D)1,2

4.对于以下程序片段,描述正确的是 。

int x= -1; do {

x=x*x; }while(!x);

A)是死循环 B)循环执行两次 √C)循环执行一次 D)有语法错误

5. 一个指针数组的定义为 。

A) int (*ptr)[5]; √B) int *ptr[5]; C) int *(ptr[5]); D) int ptr[5]; 二、 1、2008

2、 a=2, b=1 a=3, b=2 3、9

4、1 2 3 4 5 6 7 8 9 10

2 班级: 学号: 姓名: 1 3 5 7 9 5、The Result is : 9

三、阅读程序,在标有下划线的空白处填入适当的表达式或语句,使程序完整并符合题目要求。(8分,评分标准:每空1分,正确得1分,错误扣1分)

1. 以下程序将输入的十进制数以十六进制的形式输出。

#include main() {

char b[17]= {\ int c[64],d, i=0, base = 16; long number;

printf(\请输入一个十进制数\\n\ scanf(\

do {

c[i] = number % base; number = number / base;

printf(\对应的十六进制数为: \\n\ for(--i; i>=0; --i)

{

d = c[i];

printf(\ }

}

printf(\

i++;

}while (number != 0);

2.用户从键盘任意输入一个数字表示月份值n,程序显示该月份对应的英文表示,若n不在1~12之间,则输出“Illegal month”。

#include main() {

3 班级: 学号: 姓名: int n;

static char monthName[][20]={ \

\ \\\

\\ };

printf(\ scanf(\

if ((n <= 12) && (n >= 1)) {

printf(\%d is %s\\n\n, monthName[n]); }

else {

printf(\ } }

四、在下面给出的4个程序中,有15处错误(包括语法错误和逻辑错误),请找出其中的错误,并改正之。(30分,评分标准:实际错误有16个,只要找对15个即可,多找不加分。每找对1个错误,加1分,每修改正确1个错误,再加1分。)

1. 折半查找。

#include main( ) {

int up=9, low=0, mid,found=0, find;

int a[10]={1, 5, 6, 9, 11, 17, 25, 34, 38, 41};

scanf(\ printf(\

while (up>=low && !found) {

mid=(up+low)/2; if(a[mid]==find) {

found=1; break; }

else if(a[mid]>find) up=mid-1; 4 班级: 学号: 姓名: else

low=mid+1; }

if(found) printf(\number is %dth\else printf(\}

2.下面程序模拟了骰子的6000次投掷,用rand函数产生1~6之间的随机数face,然后统计1~6每一面出现的次数存放到数组frequency中。

#include #include #include

main() {

int face, roll, frequency[7] = {0};

srand(time(NULL));

for (roll=1; roll<=6000; roll++); {

face = rand()%6 + 1; ++frequency[face]; }

printf(\ for (face=1; face<=6; face++) {

printf(\frequency[face]); } }

3. 计算十个数据的平均值。

#include void main(void) {

int i, sum=0;

float avg;

int sc[10], *p=sc;

for (i=0; i<10; i++) {

scanf(“%d”, p); p++; sum+= *(p-1); 5

本文来源:https://www.bwwdw.com/article/kbqf.html

Top