admin 管理员组

文章数量: 1184232


2025年1月2日发(作者:js浏览器对象)

“程序设计基础--C”试卷

试题一、单项选择题(每小题 2 分,共 20 分)

1.C 语言程序的三种基本结构是顺序结构、选择结构和______结构。

A、循环 B、递归 C、转移 D、嵌套

2.若x是单精度实型变量,表达式 (x = 10/4) 的值是_____ 。

A、2.5 B、 2.0 C、 3 D、 2

3. 表达式 !x 等价于_____。

A、x==0 B、x==1 C、x != 0 D、x != 1

4.若变量已正确定义且 k 的值是 4,计算表达式 ( j = k--) 后,_____。

A、j=3, k=3 B、j=3, k=4 C、j=4, k=4 D、j=4, k=3

5. 算术运算符、赋值运算符和关系运算符的运算优先级按从高到低的顺序依次为_____。

A、算术运算、赋值运算、关系运算 B、关系运算、赋值运算、算术运算

C、算术运算、关系运算、赋值运算 D、关系运算、算术运算、赋值运算

6.C语言中,形参的缺省的存储类说明是______。

A、 auto B、static C、 register D、extern

7.下列语句定义pf为指向float类型变量f的指针,_____是正确的。

A、float f, *pf = f; B、float f, *pf = &f; C、float *pf = &f, f; D、float f, pf = f;

8.表达式 sizeof(“key”) 的值是______。

A、1 B、2 C、3 D、4

9.将程序prog.c编译后运行:prog –nla hello world 则 *(*(argv+2)) 是______。

A、’p’ B、‘-‘ C、‘h’ D、‘w’

10.若a是整型变量,表达式 ~(a ^ ~a ) 等价于______。

A、~a B、1 C、0 D、2

试题二、填空题(每小题 3 分,共 24 分)

1.写出语句 printf ("%d, %o, %x", 0x12, 12, 012); 的输出结果。

2.写出下列程序段的输出结果。

#define F(x) x - 2

#define D(x) x*F(x)

printf("%d,%d", D(3), D(D(3))) ;

3.写出下列程序段的输出结果。

int k ; char *s = “ABC”;

for( k=10; k != 0; k-- ) ;

printf ( "%d", k );

while( *s++ ) putchar( *s );

4.写出下列程序的输出结果。

void fun(int k)

{ static int a;

printf(”%d,”, a);

第 1 页

a += k;

}

main()

{ int k;

for (k=1; k<=3; k++)

fun(k);

}

5.写出下列程序的输出结果。

main( )

{ struct st {

int x, y;

} a[4]={{10,20},{30,40},{50,60},{70,80}};

struct st *p=a;

printf("%d,", p++->x);

printf("%d,", ++p->y);

printf("%dn", (a+3)->x);

}

6.写出下列程序的输出结果。

#include "stdio.h"

void main()

{ int k, j, m, n, a[6][6], b[6];

m=3, n=2;

for(k=0; k

for(j=0; j

a[k][j] = k*n+j+1;

for(k=0; k

b[k] = 0;

for(j=0; j

b[k] += a[k][j];

}

for(k=0; k

printf("%d, ", b[k]);

}

第 2 页

7.写出下列程序的输出结果。

# include

long fib(int g)

{ switch(g){

case 0: return(0);

case 1:

case 2: return(2);

}

printf("g=%d,", g);

return ( fib(g-1) + fib(g-2) );

}

main()

{ long k;

k = fib(4);

printf("k=%ldn", k);

}

8.用typedef定义一个长度为10的整型数组NUM。

试题三、程序阅读题(每题 5 分,共 20 分)

1.写出下列程序的输出结果。

#include

int x, y, z;

void p(int *x, int y)

{ --*x;

y++;

z = *x+y;

printf("%d,%d,", *x,y);

}

void main()

{ x=5; y=2; z=0;

p(&x, y);

printf("%d,%d,%d--", x, y, z);

p(&y, x);

printf("%d,%d,%dn", x, y, z);

}

2.写出下列程序的输出结果,并指出该程序的功能。

#include

void main()

{ int x, k;

x =14;

for ( k = 0; x!=0; x &= x-1 )

++k;

printf("%dn", k);

}

3.写出下列程序的输出结果。

第 3 页

#include

void main()

{

int v[]={6,3,4,1,2}; int n=5;

int gap, j, k, temp;

for( gap = n/2; gap > 1; gap /= 2 )

for( j = gap; j < n; j++ )

for( k = j-gap; k >= 0 && v[k] > v[k+gap]; k -= gap ){

temp = v[k];

v[k] = v[k+gap];

v[k+gap] = temp;

}

for(k=0; k<5; k++) printf("%d, ", v[k]);

}

4.输入1 2 3 4 5 0后,写出下列程序的输出结果。

#define LEN sizeof(struct line)

#define NULL 0

struct line{

int num ;

struct line *next ;

}

main()

{ struct line *p1 , *p2 , *head ;

int j, k = 0;

p1 = p2 = head = (struct line *) malloc (LEN) ;

scanf("%d", &p1->num) ;

while (p1->num != 0){

p1 = (struct line *) malloc (LEN) ;

scanf("%d", &p1->num) ;

if ( p1->num == 0 ) p2->next = NULL ;

else{ p2->next = p1 ;

p2 = p1 ;

}

k++;

}

p2->next = head ; p1 = head->next ; p1 = p1->next ;

for ( j=1 ; j <= k ; j++){

printf("--> %d ", p1->num) ;

p1 = p1->next ;

}

}

第 4 页

试题四、程序填空题(每空 2 分,共 20 分)

1.输入10个点的坐标(设坐标为整数值), 输出距原点最远的点(设唯一)的坐标及该点距原点的

距离.

#include

void main()

{

struct{

int x, y;

float length;

} point[10];

int k, sub=0;

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

scanf("%d%d", &point[k].x, &point[k].y);

point[k].length = (1)

}

for(k=1; k<10; k++)

if( (2) ) (3)

printf("(%d,%d) %fn", point[sub].x, point[sub].y, point[sub].length);

}

2.将输入的 n 个字符串连接成1个字符串 , 然后输出该字符串.

#include

#include

void main()

{

char str[10][20], string[200];

int k, n;

scanf("%d", &n);

for (k=0; k

gets(str[k]);

(4)

for (k=1; k

(5)

puts(string);

}

第 5 页

3.函数 xtoi 的功能是将放在字符串中的十六进制数(可以出现’0’~’9’、’a’~’f)转换成十进制整

数。例如:调用 xtoi("1f") 将返回31。

xtoi( (6) )

{ int k, d=0;

for(k=0; s[k] == ’ ’ || s[k] == ’t’; k++);

while(s[k] >= ’0’ && s[k] <= ’9’ || s[k] >= ’a’ && s[k] <= ’f’ ){

if (s[k] >= '0' && s[k] <= '9')

(7)

if (s[k] >= 'a' && s[k] <= 'f')

(8)

k++;

}

return d;

}

4.函数month_day(year, yearday, &month, &day) 的功能是将给定的某年第几天转换为相应的

月和日。例如:调用month_day(1988, 60, &m, &d) 后,m 的值是2, d 的值是29(即1988年的

第60天是1988年2月29日)。判别闰年的条件:能被4整除但不能被100整除或能被400整除。

void month_day(int year, int yearday, int *pmonth, int *pday)

{ static int day_tab[2][13]={

{0,31,28,31,30,31,30,31,31,30,31,30,31},

{0,31,29,31,30,31,30,31,31,30,31,30,31}};

int k, leap;

leap = year % 4==0 && year % 100 != 0 || year % 400 == 0;

for(k=1; yearday > day_tab[leap][k]; k++)

(9)

*pmonth = (10)

*pday = yearday;

}

试题五、编程题 ( 共 16 分)

1.[程序说明] (5分)

请编写函数 sum_fact(number),返回number 的因子之和。(能整除number的数就是它

的因子,number定义为int)

例如sum_fact(6) = 12 (因为1, 2, 3, 6是6的因子)

2.[程序说明] (11分)

文本文件 中存放了一批整数,将其中每个数的因子之和顺序写入文件 。

( 必须调用第1小题中定义的函数 sum_fact(number) 计算 number 的因子之和 )

例:若文件 中存放了1, 2, 6 ,则每个数的因子之和分别是 1 3 12 ,它们被写入

文件。

第 6 页


本文标签: 程序 输出 下列 结果 写出