3套 《C语言程序设计》试卷+参考答案_第1页
3套 《C语言程序设计》试卷+参考答案_第2页
3套 《C语言程序设计》试卷+参考答案_第3页
3套 《C语言程序设计》试卷+参考答案_第4页
3套 《C语言程序设计》试卷+参考答案_第5页
已阅读5页,还剩45页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C程序设计试卷 Page 50 of 50一、 选择填空:(每题1.5分,共15分)1 以下可以正确表示字符型常数的是 。(A) “a” (B) 297 (C) t (D) “n”2 typedef struct char name10;int age;char interests20; student; 以上语句中 student 是: (A)结构体变量,有存储空间 (B)结构体数据类型,无存储空间(C)结构体变量,无存储空间 (D)结构体数据类型,有存储空间3 函数:void f(void)int i = 12, j;for(j=0; j=100) break;(B)for(;);(C)i

2、nt k=1000;do+k; while (k=1000);(D)int s=36while(s); -s;二、 写出下列程序的运行结果:(共35分)1. (8分)int funa(int *a) a0 +; int funb(int b) b1 += 5; main() int a5 = 2,3,4,5,6; int b5 = 2,3,4,5,6; int *p, i; p = &a0; (*p)+; funb(p); for(i = 0; i 5; i+) printf(%d,ai); p = &b1; funa(p); funb(p); for(i = 0; i 5; i+) prin

3、tf(%d,bi); 运行结果:2、(6分)main() char a=programming, b=language;char *p1,*p2; int i;p1=a; p2=b;for(i=0; *(p1+i)!=0&*(p2+i)!=0;i+)if(*(p1+i)=*(p2+i) printf(%c,*(p1+i);运行结果是:3、(8分)int f(int n) if (n=1) return 1; elsereturn 2 * f(n/2); 运行结果: f(20) 的值是多少?4、(6分)void change (int *a, int *b) int x =* a; *a = *

4、b; *b = x; printf(“%d %d “, *a, *b);void main() int x=10,y=25;change (&x, &y);printf(“%d %d “, x, y);运行结果:5、(5分)已知字母A的ASCII码为十进制的65,下面程序的输出是void main()char ch1,ch2;ch1=A+5-3;ch2=A+6-3;printf(%d,%cn,ch1,ch2);答案 三、程序填空(每空2分,共38分)1、下面是一个求数组元素之和的程序。主程序中定义并初始化一个数组,然后计算各数组元素之和,并输出结果。# include int TotalSum

5、(int array,int len) _ ;for (int i=0; _ _ ; i+) _ ;return sum;void main()int a5=2,3,6,8,10; _ ;Total = TotalSum(a,5);printf( Sum of array: %d, Total );2、从终端读入的文本(用作为文本结束标志)复制到一个名字C.DAT的新文件中。#include FILE *fp;main()char ch;if (fp= )=NULL) exit(0);while (ch=getchar()!=)fputc( _);fclose(fp);3、结构型变量root包

6、含三部分,其中sp是指向字符串的指针,next是指向该结构的指针,data用以存放整数。请填空完成此结构的类型说明和变量root的定义。typedef struct listchar *sp; _ _; _; root;4、已知:typedef structint x;char *y; node;node tab2=1,ab, 2,cd; node *p=tab;则:表达式*p-y的结果为_ _。表达式*(+p)-y的结果为:_ _。5、#define MAXCHAR 100#define TRUE 1#define FALSE 0int htoi();main() int c, i, inR

7、ange;char tMAXCHAR;i = 0; inRange = ;while (c = getchar() != EOF & i = 0 & c = a & c = A & c = 0 & si = a & si = A & si = F) n = n * 16 + si - ;return(n);四、编程题(14分)整型数组int a10中随机地存放有数字09(数字可以重复)。现请编写一个程序,在数组a10中,按顺序抽取5个数字,使这5个数字组成的5位数为最大(注意:这5个数字的先后顺序必须同其在原数组a10中的先后顺序相同),将结果保存在另一数组int result5中。实例:若a

8、10 = 4, 7, 8, 0, 8, 6, 2, 4, 9, 1 则可得:result5 = 8, 8, 6, 9, 1 附:在int a10中随机存放10个数字的代码如下:#include “time.h”int a10;srand( (unsigned)time(NULL) );for ( int i = 0; i 10; i+ )ai = rand() % 10/产生09共10个随机数赋值给a10#include time.hint FindMax( int a, int &nStartPos, int nEndPos );void main(int argc, char* argv)

9、int a10, result5;srand( (unsigned)time(NULL) );for ( int i = 0; i 10; i+ )ai = rand() % 10;/int nStartPos = 0;for ( i = 0; i 5; i+ )resulti = FindMax( a, nStartPos, i+6 );int FindMax( int a, int &nStartPos, int nEndPos )int MaxValue = -1;for ( int i = nStartPos; i MaxValue )MaxValue = ai;nStartPos =

10、 i;anStartPos = -1;return MaxValue;一. 选择题1、C 2、B 3、D 4、C 5、A 6、C 7、D 8、A 9、D 10、A二、写出下列程序的运行结果1、38456 249562、ga3、164、2510 25 105、67,D三、填空1、int sum = 0 i (b)?( a):(b)void main( ) int i=10, j=15;printf(“%dn”,10*M(i, j);12.已知枚举类型colorT定义如下: typedef enum black=1, white, yellow, blue=5, brown, green colo

11、rT; 则white, yellow和green的内部编码分别为 、 和 。13.内存泄露指的是 。14C语言的程序至少包含一个函数,该函数的名字为 。15定义数组 int a57, 则 aIj中I的正确范围值为 ,该数组共占 字节。16. 有如下语句:char *name;name = (char *) malloc(200 * sizeof(char);那么,name所指的空间分配在 内存中。17.结构体变量root包含三部分。其中,sp是指向字符串的指针,next是指向该结构体的指针,data用于存放整数。请填空完成此结构体变量的定义。struct list char *sp; ; ;

12、root;18.已知typedef struct int x; char *y; node;node tab2=1,”ab”, 2,”cd”;node *p=tab;则表达式 *p-y的结果是 ,表达式 *(+p)-y的结果是 。二、读程序,写结果(每题5分,共35分)1long f(int n) static x = 1; if (n = 0) return (1); else x = x * n;return(x); void main() printf(“%d”, f(0) + f(1) + f(2) + f(3) + f(4); 2 void main()int n = 0;while

13、 (n+ 0) function(&b1, size - 1);printf(%d ,b0); void main() static int a5=10,20,30,40,50; function(a,5); 4float f(int n, int x) if (n = 0) return (1); else if (n = 1) return (x); else return (2 * n - 1) * x * f(n-1, x) - (n - 1) * f(n - 2, x) / n); void main() printf(“%f”, f(4, 4); 5void main() char

14、 A = apple; magic(A); printf(%sn, A); void magic(char *s) while (*s) (*s)+; s+; 6. void main() int a2020, i, j, k, n = 5;k = 1;for (i = 0; i n; i+) for (j = 0; j = i; j+) ai - jj = k;+k;for (i = 1; i n ; i+) for (j = i; j n; j+) an j + i - 1j = k;k+;for (i = 0;i n; i+) printf(n); for (j = 0; j key)

15、return ; else return ; 3假定在C程序中有如下说明:int scoreNUM_STUDENT;要求将score数组中所有分数打印出来, 并打印总分,打印格式如下(注意对齐方式):8999100706050Total: 468程序代码如下,请填完整。void main()int i;int total;total = 0;for ( i = 0; ; i+ )printf( ); total += ; printf ( );四、编程题(20分)1写一个非递归函数digits (int n) 返回一个整数n的位数。如digits(128) 返回 3; digits(60026

16、) 返回5。(5分)2写一个递归函数digits (int n) 返回一个整数n的位数。(5分)3编制一个程序,实现计算器的功能(仅包括单个的、),使得在命令行下可以通过如下形式执行该程序:calc 3 + 5calc 12 30其中,calc为该程序形成的可执行文件的文件名。(10分) 一、填空(每空1分,共25分)1.编写C语言源程序并上机运行的一般过程为编辑、编译、链接和执行。其中,编辑的作用是 输入或修改源程序 ,编译的作用是 将源代码转换成目标代码 ,链接的作用是 将此目标代码与库函数及其他模块的目标代码链接起来 。2.C语言的标识符只能由字母、数字和下划线组成,且第一个字符 必须为

17、字母或下划线 。3.能将字符类型的变量ch的值从小写转换为对应的大写字母的表达式是ch a+A。4.语句printf(“C+ program”);的输出结果为 C+ program 。5.设 char *s=”natabc”; 则指针变量 s 指向的字符串占 7 字节 。6.设 int a=12; 则a+=a-=a*a的值为 -264 。7.为了实现下列图示的指针变量指向数据对象的关系,可以使用一条数据定义语句,这条数据定义语句是_int x, *p1=&x, *p2=&p1_。整型变量x指针变量pl指针变量p28.设有定义“int a3 4, *p=a1;”, 则指针变量p指向的元素是 a0

18、0 _ 。9.若用一维数组名作为函数调用的实参,传递给形参的是 第一个数组元素的地址 。10.在C语言中,当一个表达式的值为逻辑“真”时,该表达式的值一定是 非0 。11.执行下列程序后的输出结果是 10 。#define M (a, b) (a)(b)?( a):(b)main( ) int i=10, j=15;printf(“%dn”,10*M(i, j);12.已知枚举类型colorT定义如下: typedef enum black=1, white, yellow, blue=5, brown, green colorT; 则white, yellow和green的内部编码分别为 2

19、 、 3 和 7 。13.内存泄露指的是 动态申请的内存没有释放 。14C语言的程序至少包含一个函数,该函数的名字为 main 。15定义数组 int a57, 则 aIj中i的正确范围值为 0-4 ,该数组共占 35*sizeof(int) 字节。16. 有如下语句:char *name;name = (char *) malloc(200 * sizeof(char);那么,name所指的空间分配在 堆 内存中。17.结构体变量root包含三部分。其中,sp是指向字符串的指针,next是指向该结构体的指针,data用于存放整数。请填空完成此结构体变量的定义。struct list char

20、 *sp; int data; ; struct list *next ; root;18.已知typedef struct int x; Char *y; node;node tab2=1,”ab”, 2,”cd”;node *p=tab;则表达式 *p-y的结果是 a,表达式 *(+p)-y的结果是 c 。二、读程序,写结果(每题5分,共35分)1long f(int n) static x = 1; if (n = 0) return (1); else x = x * n;return(x); main() printf(“%d”, f(0) + f(1) + f(2) + f(3)

21、+ f(4); 答案:343 main()int n = 0;while (n+ 0) function(&b1, size - 1);printf(%dn,b0); main() static int a5=10,20,30,40,50; function(a,5); 答案:50 40 30 20 104float f(int n, int x) if (n = 0) return (1); else if (n = 1) return (x); else return (2 * n - 1) * x * f(n-1, x) - (n - 1) * f(n - 2, x) / n); mai

22、n() printf(“%f”, f(4, 4); 答案:1060.3755main() char A = apple; magic(A); printf(%sn, A); void magic(char *s) while (*s) (*s)+; s+; 答案:bqqmf6. main() int a2020, i, j, k, n = 5;k = 1;for (i = 0; i n; i+) for (j = 0; j = i; j+) ai - jj = k;+k;for (i = 1; i n ; i+) for (j = i; j n; j+) an j + i - 1j = k;k

23、+;for (i = 0;i n; i+) printf(n); for (j = 0; j = 0 & si high ) return -1; mid = (low + high) / 2; if (arraymid = key) return mid ; else if (arraymid key) return binarysearch(array, low, mid-1, key) ; else return binarysearch(array, mid+1, high, key) ; 3假定在C程序中有如下说明:int scoreNUM_STUDENT;要求将score数组中所有

24、分数打印出来, 并打印总分,打印格式如下(注意对齐方式):8999100706050Total: 468程序代码如下,请填完整。main()int i;int total;total = 0;for ( i = 0; i 0);Bint s=100; while (s) -s;Cint i; for (i=1; i=100; i+);Dint i=1; while (1) +i;4在C语言中,当一个表达式的值为逻辑“真”时,该表达式的值一定是 。A T B. TRUE C. 非0数值 D.数值15. 以下哪一个不是结构化程序设计的基本结构 。A顺序结构 B.细化结构 C.选择结构 D.循环结构

25、6. 设有定义语句“int x =1,3,5,7,9,11,13, *p=x;”,则不能正确引用数组x的合法元素的表达式是 。 A. *(p-)B. *(-p)C. *(p+)D. *(+p)7. 下列符号串中,合法的十进制整形常量是 。A.09876B.0x9876C. 9.876*e4D. 98768. 设x,y均为float型的变量,则以下不合法的赋值语句是 。 A. +x; B. y=(x%2)/10; C. x*=y+8; D. x=y=0;9下面四个选项中,均不合法的用户标识符的选项是 。 A. A B. float C. b-a D. _123 P_0 1a0 goto tempDo _A int INT10执行了下面赋值语句后,x的值是 ?int i; float x;x = i = 7.8;A. 7 B. 8 C. 7.0 D. 7.8 E. 8.011下面的代码的返回值是 ?int j=2, k=3; return (jlength = 3; rect-breadth = 5;B.rect.length = 3; rect.breadth = 5;C.rect = 3, 5 ;D.rect length=3; breadth=5 ;D. 上面四

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论