收藏 分销(赏)

北京理工大学2008级信息类C语言程序设计期末试题A卷.doc

上传人:pc****0 文档编号:6711763 上传时间:2024-12-20 格式:DOC 页数:9 大小:63.50KB
下载 相关 举报
北京理工大学2008级信息类C语言程序设计期末试题A卷.doc_第1页
第1页 / 共9页
北京理工大学2008级信息类C语言程序设计期末试题A卷.doc_第2页
第2页 / 共9页
北京理工大学2008级信息类C语言程序设计期末试题A卷.doc_第3页
第3页 / 共9页
北京理工大学2008级信息类C语言程序设计期末试题A卷.doc_第4页
第4页 / 共9页
北京理工大学2008级信息类C语言程序设计期末试题A卷.doc_第5页
第5页 / 共9页
点击查看更多>>
资源描述

1、2008级信息类C语言程序设计期末试题A卷一、 单项选择题(共20分,每题2分) 1、一个C程序的执行是从 。A、main( )函数开始,直到main( )函数结束。 B、第一个函数开始,最后一个函数结束。C、第一个语句开始,最后一个语句结束。 D、main( )函数开始,直到最后一个函数。 2、表示关系12=x=y的C语言表达式为 。A、( 12 = x ) & ( x = y ) B、( 12 = x ) & ( x = y ) C、( 12 = x) | ( x = y ) D、( 12 = x ) | ( x = y )3、已知:int a410,当“0 = i 4, 0 = j 10

2、0 ) break; C、int k = 32764; D、int s = 32764; do while( ( s+ % 2) | ( s % 2 ) ) k+;k+; s+;while( k 0 ); 6、sizeof ( float )是 。A、一个双精度型表达式 B、一个整型表达式 C、一种函数调用 D、 一个不合法的表达式7、若有以下定义及语句:struct s1 char a3;int num;t = a, b, c, 4 , *p=&t;则输出值为c的语句是_。 A、printf( ”%cn”,p-t.a2 ); B、printf( ”%cn”,(*p).a2 );C、print

3、f( ”%cn”,p-a3 ); D、printf( ”%cn”,(*p).t.a2 ); 8、以下描述不正确的是 。 A、在说明子自动变量的时候,就要为其分配存贮单元B、在定义函数时需要使用形参,则必须指定形参的数据类型C、形参和实参之间可以是值传递D、数组名可以作为参数进行传递9、以下描述正确的是 。A、continue语句的作用是结束整个循环的执行B、只能在循环体内和switch语句体内使用break语句C、在循环体内使用break语句或continue语句的作用相同D、从多层循环嵌套中退出时, 只能使用goto语句10、设有如下结构定义:struct jan int a;float b

4、;c2, *p;若有p = &c2;则对c2中的成员a的正确引用是 。A、(*p).c2.a B、(*p).a C、p-c2.a D、p.c2.a 二、程序填空题(共20分,每空2分)1、以下程序完成3个操作:(1)输入10个字符串(每串不多于9个字符),依次存放在数组a中,指针数组str中的每个元素依次指向每个字符串的开始;(2)输出每个字符串;(3)从这些字符串中选出最小的那个串输出。请从对应的一组选项中选择正确的选项填空。#include #include main( ) char a200 = 0 , *str10, *sp; int i, k; sp = 【1】 ; for( i =

5、 0;i 10; i+ ) scanf( %s, sp ); stri = sp; k = strlen(sp); sp += 【2】 ; for( i = 0; i 10; i+ ) printf( %sn, stri ); k = 0; for( i = 1; i 0 B、 0 C、= 0 D、!= 02、在保存字符串时,对出现在连续位置的若干个字符,如这些字符在ASCII表中也是连续出现,则可以将这些字符使用缩写形式进行保存,以节省保存空间。例如用A-Z表示ABCD.XYZ,1-5表示12345,c-f表示cdef。以下程序是展开输出经过压缩保存的字符串。以下程序仅处理大写英文字母、小写

6、英文字母和数字的同类压缩,即对于形如A-9,a-C这样的缩写不进行处理。请从对应的一组选项中选择正确的选项填空。#include main( ) char sa100; int i = 0, k; gets( sa ); do putch( sai ); i+; if( sai = - ) k = 1; do putch( 【4】 ); k+; while( 【5】 ); i+; while( sai != 0 ); printf( n );【4】A、sai-1 B、sai - 1 + k C、sai D、sai + k【5】A、sai-1 + k != sai+1 B、sai + k !=

7、sai+1 C、sai-1 != sai+1 + k D、sai != sai+1 + k3、以下程序将文件A.DAT和B.DAT合并到文件C.DAT中,其中A.DAT和B.DAT为降序字符文件,保存在当前路径下,文件结束后标志设为0。请从对应的一组选项中选择正确的选项填空。#include main( ) 【6】 *in1, *in2, *out; int flag1 = 1, flag2 = 1; char a, b, c; if( ( in1 = fopen(A.DAT, r) ) = NULL ) printf( Cant open the file A.DAT!n ); exit(

8、1 ); if( ( in2 = fopen( B.DAT, r) ) = NULL ) printf( Cant open the file B.DAT!n );exit( 1 ); if( ( out = fopen( C.DAT, 【7】 ) ) = NULL ) printf( Cant open the file C.DAT!n );exit( 1 ); while( !feof( in1 ) 【8】 !feof( in2 ) ) if( !feof( in1 ) & flag1 ) a = fgetc( in1 ); else if( feof( in1 ) ) a = 【9】 ;

9、 if( !feof( in2 ) & flag2 ) b = fgetc( in2 ); else if( feof( in2 ) ) b = 【9】 ; if( 【10】 ) c = a; flag1 = 1; flag2 = 0; else c = b; flag1 = 0; flag2 = 1; fputc( c, out ); fclose( in1 ); fclose( in2 ); fclose( out );【6】 A、char B、int C、float D、FILE【7】 A、r B、w C、a D、b 【8】 A、| B、& C、= D、!= 【9】 A、0 B、1 C、

10、n D、0【10】A、a b B、a b D、a = b三、上机编写程序题(共40分)1、编程实现,输入顶行字符和图形的高,在屏幕上输出如图所示的图形(下例顶行字符为A,图形的高为5)。(10分) A B C D E F G H I J K L M N O P Q R S T U V W X Y测试用例: 输入 输出 13 Z Z A B C D E F G H21 B B34 M M N O P Q R S T U V W X Y Z A B45 A A (公开) B C D E F G H I J K L M N O P Q R S T U V W X Y50 A 2、编程实现,任意输入一

11、个偶数 n,将它们分解为两个素数之和。(10分)输出形式为 * = * + *,例如输入12,输出:12 = 7 + 5。测试用例: 输入 输出 12 2 = 1 + 1 212 12 = 7 + 5 (公开)3124 124 = 11 + 11341234 1234 = 3 + 1231520000 20000 = 3 + 19997 3、编写一个函数,使用递归算法求给定十进制正整数转换为M进制数(2 = M = 9 )。(10分)函数的原型: void itom(intn, int m, char *k )其中:参数 n 是给定的正整数;参数 m 是要求的进制;参数 k 是字符指针,当前得

12、到的m进制数某位的保存位置。转换后的m进制数保存在外部定义的长度为16的字符数组sm中,该数组最后一个元素,既sm15保存转换后数的最低位,数组空闲的高位用数字字符0填充,例如整数11转换为二进制后,数组sm的内容为:0,0,0,0,0,0,0,0,1,0,1,1。输出结构为:1011。函数没有返回值。 注意:所提交的函数中,在变量说明语句后,其他可执行语句前写 TEST 四个大写字母。此四个大写英文字母必须写在正确的位置,否则此题不能得分。预设代码:#include #define TEST printf( *s = %c n, *s )char sm17;main( ) int i, n,

13、 m; for( i = 0; i 16; i+) smi = 0; printf( nPlease enter n m: ); scanf( %d %d, &n, &m); itom( n, m, &sm15 ); for( i = 0; i 0 ) *s = (n % m) + 48; itom( n/m, m, s-1); else return;测试用例: 输入 输出 111 2 (5)1011 (公开) 212 2 (5)1100 (公开) 312 3 (4)110 412 4 (3)30 512 5 (4)22 6527 6 (5)2236 (公开) 7527 7 (5)1132

14、8527 8 (5)1017 9527 9 (4)645 10527 2 (11)1000001111(注:括号内是在输出结果前输出“*s = 0”的次数) 4、用单向链表的方式保存输入的字符串,每一个结点的数值域保存一个字符。程序的功能将输入的两个字符串保存为链表A和链表B,将链表B插入到链表A的第n个结点的后面;如果链表A的长度小于n,则链表B接于链表A尾。预设的代码包括主函数、建立链表函数、输出链表函数,请编写插入链表的函数。例如以链表方式保存的字符串“beijingdaxue”如下图:字符串“ligong”如下图:输入n = 6后,合并后的字符串如下图:结构定义是:typedef st

15、ruct sdata char ch; struct sdata *next;SNODE; 函数原型是:SNODE *inststr(SNODE *heada, SNODE *headb, int m)其中heada、headb是保存字符串的链表的头指针,m是链表heada的插入位置。 预设代码如下:#include SNODE *setlink(char *str) char *ps = str; SNODE *head = NULL, *q, *p = NULL; while( *ps != 0 ) q = ( SNODE *)malloc(sizeof( SNODE ); q-ch =

16、*ps; q-next = NULL;if( head = NULL ) head = q; else p-next = q; p = q; ps+; return( head );SNODE *outlink( SNODE *head ) while( head != NULL ) printf(%c,head-ch);head = head-next; return( head );main( ) char sa100,sb100; int i,n; SNODE *head1 = NULL, *head2 = NULL ; gets( sa ); gets( sb ); scanf( %d

17、, &n ); if( *sa != 0 & *sb != 0 ) head1 = setlink( sa ); head2 = setlink( sb );head1 = inststr( head1, head2, n ); outlink( head1 ); printf( n );参考答案:SNODE *inststr(SNODE *heada, SNODE *headb, int n ) int i; SNODE *q = heada, *p = NULL; if( n 0 ) for(i=1; inext != NULL; i+) q = q-next; p = q-next; q

18、-next = headb; q = headb; while( q-next != NULL ) q = q-next; if( p != NULL ) q-next = p; else q = headb; while( q-next != NULL ) q = q-next; q-next = heada; heada = headb; return(heada);测试用例: 输入 输出1beijngdaxue ligong 7 beijingligongdaxue (公开)2beijing daxue 7 beijingdaxue 3ab cd 5 abcd (公开)4abcd 12 1 a12cdb5abcd 12 2 ab12cd6abcd 12 3 abc12d7abcd 12 0 12abcd8abcd 2 (公开)9 abcd 1 10 2 参考答案:一、A B B D/C C B B A B B二、C C B B A D B A D C

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
搜索标签

当前位置:首页 > 百科休闲 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服