《C语言程序设计》期末考试试题

更新时间:2023-04-26 17:51:01 阅读量: 实用文档 文档下载

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

04/05(二)C 语言期末模拟卷 第 1 页 总 7 页 《C 语言程序设计》期末考试试题

(考生必须将答案做在前面的答题纸上!!)

试题一(28分,每小题4分)

解答下列各小题,把解答写在答卷的对应栏内

(1)试写出下列数学表达式的C 语言表达式

(2)满足关系式’A ’≤ch ≤’Z ’的C 语言表达式是

A 、(65≤ch)&&(ch ≤90)

B 、ch>=’A ’||’Z ’>=ch

C 、’A ’≤ch ≤’Z ’

D 、!(ch<’A ’||’Z ’>ch)

(3)设a=1;b=2;c=3;x=0;执行下面程序段后x 的值是

if (a

{ if (a>c) x +=++x; else x +=++x; }

else x=3;

(4)设有如下定义:

int a[ ][3] = {1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23 };

int (*p)[3]= a;

请写出printf(“%d \n”, *(*(p+ 1 ) +2 )); 定位的行和列,以及输出结果。

(5)下面的程序运用字符串指针,输出结果是

#include

main()

{ char *language[]={"FORTRAN","BASIC","PASCAL","JA V A","C"};

unsigned c;

c=strcmp(language[1],language[3]);

printf("%d\n",c);}

A )0

B )正数

C )负数

D )程序错

(6)下面的程序含有宏定义,它的运行结果是

#include "stdio.h"

#define SQR (x ) x*x

void main()

{ int a=100,k=1,m=2;

a/=SQR(k+m)/ SQR(k+m);

printf(“%d\n ”,a);

}

(7)设下列括号内的数都是二进制整数,请写出位运算的结果(分别用二进制和十进制数y x x 2103

表示)。

①(10010101)&(11110000)

②(00011101)|(11110000)

③(10101010)<<2

④~(10110101)

试题二(12分)

读程序,把程序(或程序段)的输出结果写在答题纸的对应栏内

(1)[程序2.1]

#include

main()

{ int a[]={0,10,20,30,};

int n=0, *p;

p=a+1;

n+=*(p++);

n+=(*p)++;

n+=*(++p);

n+=++(*p);

printf(“n=%d, a[]=%d, %d, %d, %d\n”, n, a[0], a[1], a[2], a[3]);

}

(2) [程序2.2]

int sumadd( int func, int data )

{

static int sum;

switch ( func )

{

case 0 : sum = data; break;

case 1 : sum += data; break;

case 2 : sum -= data; break;

}

return sum;

}

main()

{ sumadd( 1, 10 );

printf( “%d”, sumadd(2,10));

sumadd( 2, 20 );

printf( “%d”, sumadd(2,10));

}

试题三(12分)

改错。下面程序中都有三个错误,按原来程序的要求,纠正错误,并以“将第x行改为04/05(二)C语言期末模拟卷第2页总7页

xxx”的形式进行解答,将解答写在答题纸的对应栏内。代码的左边的“#1”、“#2”…附加的行号。

[程序3.1] (本程序有3个错)。

1.以下程序用于输出第X个字符串的第X个字符,例如:第一个字符串的第一个字符,第二个字符串的第二个字符,…,(本题3个错)。

#1 #include

#2 void strselect(char *strs[], int n, char *dest)

#3 { int i;

#4 for(i=0; i

#5 *(dest+i)=*(strs+i);

#6 *(dest)=’\0’;

#7 }

#8 main()

#9 { char *strs[]={“First”, “Second”, “Third”, “Forth”, “Fifth”};

#10 char rst[81];

#11 strselect(strs, rst);

#12 printf(“%s\n”, rst);

#13 }

[程序3.2] (本题有3个错)

2.下面程序用于输出数组a中指定第col列的全部元素。

#1 #define N 4

#2 void printcol(int *p[N],int row,int col)

#3 { int i;

#4 printf(" No %d column is : \n",col+1);

#5 for (i=0;i

#6 printf("\t\t%d\n",p[i]+col);

#7 }

#8 main()

#9 { int a[][N]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16},col;

#10 int row=sizeof(a)/sizeof(a[0])/N;

#11 clrscr();

#12 do

#13 { scanf("%d",&col);

#14 } while (col<0||col>N-1);

#15 printcol(a,row,col);

#16 }

试题四(27分)

按指定的要求,写出程序段或函数。把解答写在答题纸的对应栏内。

1.(1)输入一个摄氏温度,要求调用名为ctof的函数,求出相应的华氏温度。公式为04/05(二)C语言期末模拟卷第3页总7页

04/05(二)C 语言期末模拟卷 第 4 页 总 7 页 325

9+=c F ,输出2位小数。

(2)函数f 获得十进制正整数n 为实参数后,返回值是n 的各数位上数字的和(例如,数字123的和就是6),试编程或写出关键程序段。

(3)将一个乱序数组中的所有元素进行降序排列,(冒泡法、选择法等皆可)试编程或写出关键程序段。

试题五(12分)

阅读下列程序说明和相应的C 代码,把应填入其中 (n ) 处的C 代码写在答题纸的对应栏内。每空2分。

[程序5.1] 利用指针技术,从键盘上输入3×4的二维数组中任一元素的下标,求出该元素与首元素相差的字节数(假设采用float 类型数据)。

#include

#define N 4

main()

{ float a[ ][N]={1,3,5,7,9,11,13,15,17,19,21,23};

float (*p) ① ;

int i,j,size;

clrscr();

p= ② ;

printf("input i,j of a[i,j] = ? \n");

scanf("%d,%d",&i,&j);

size=(*(p+i)+ ③ )*sizeof(float);

printf("The size of =%d\n",size);

}

[程序5.2] 以下程序可以把从键盘上输入的十进制数(long 型)以二进制~十六进制任一制式的形式输出,请填空。

#include

main()

{ char b[]={'0','1','2','3','4','5','6','7','8','9',

'A','B','C','D','E','F',};

int c[64],d,i=0,base;

long n;

printf("enter a number :\n"); scanf("%ld",&n);

printf("enter new base :\n"); scanf("%d",&base);

do

{ c[i]= ④ ;

i++;

n= ⑤ ;

} while ( ⑥ );

printf("transmite new base:\n");

for (--i;i>=0;--i)

{ d=c[i];

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

}

printf("\n");

}

试题六(9分)

阅读下列程序说明和相应的C代码,把应填入其中(n)处的C代码写在答题纸的对应栏内,每空3分。

[6.1源程序]下面的程序是利用插入排序法对输入的N个整数按从小到大排序。插入排序的基本思想:将数组元素分为已排序和未排序部分;从第二个元素起,与前面已排好序的元素进行比较(第一次将a[1]与a[0]比较);若当前为i元素,则与前面已排好序的i-1个元素进行比较,若比j元素大,则插在j元素的后面。

#define N 10

main()

{ int i, j, temp, a[N];

for( i=0; i

scanf("%d", &a[i]);

for( i=1; i

{ t emp=________①_____________; /* 保留要插入的元素*/

for(j=i-1; ________②__________&& j>=0; j-- )

a[j+1]=a[j]; /* 找要插入的位置,同时将大于a[i]的元素往后移*/

j++;

a[j]=_________③____________;

}

for( i=0; i

printf("%6d", a[i] );

}

(完)

04/05(二)C语言期末模拟卷第5页总7页

《C语言程序设计》期末考试答题纸及答案

参考答案及评分

04/05(二)《C语言程序设计》期中考试卷答题纸(2) 04/05(二)C语言期末模拟卷第6页总7页

04/05(二)C语言期末模拟卷第7页总7页

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

Top