赵宏宇C语言考试题.doc_第1页
赵宏宇C语言考试题.doc_第2页
赵宏宇C语言考试题.doc_第3页
赵宏宇C语言考试题.doc_第4页
赵宏宇C语言考试题.doc_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

高级语言程序设计课外作业及参考答案西南交通大学网络教育学院西南交通大学信息科学与技术学院赵宏宇副教授(2009年10月28日最新更新版)说明:(1)章节顺序按照PowerPoint电子教案;(2)教材上的作业注明了章节和题号;(3)所用教材是C程序设计(第三版)谭浩强清华大学出版社; 第一章 C语言概述1.1 简答题:写出C语言的主要特点(教材习题1.1)。1.2 填空题:1. C语言与 操作系统并称“栾生兄弟”。2. C语言俗称为 形式。3. C源程序文件经过 处理后产生目标文件,目标文件经 处理后生成可执行文件。1.3 单项选择题1. 以下说法中正确的是 。 (A)C语言程序总是从第一个定义的函数开始执行(B)在C语言程序中,要调用的函数必须在main函数中定义(C)C语言程序总是main函数开始(D)C语言程序中的main函数必须放在程序的开始部分2. 以下正确的C标识符是 。(A)_125 (B)C# (C)C+ (D) A$1.4 多项选择题1. 以下关于C语言的说法中,错误的是 。 (A)俗称为“低级语言的高级形式”,因此功能简单(B)不是结构化程序设计语言 (C)可能直接访问内存(D)语法限制不严2. 以下标识符属于C语言关键字的有 。 (A)integer (B)else (C)include (D)while第二章 C语言基本数据类型、变量、常量与表达式2.1简答题1. 求下面算术表达式的值。 (教材习题3.9)a) x+a%3*(int)(x+y)%2/4设x=2.5, a=7, y=4.7b) (float)(a+b)/2+(int)x%(int)y设a=2, b=3, x=3.5, y=2.52. 写出下面程序的运行结果。(教材习题3.10)main() int i, j, m, n; i=8; j=10; m=+i; n=j+;printf(%d,%d,%d,%d, i, j, m, n);3. 写出下面表达式运算后a的值,设原来a=12。设a和n已定义为整型变量。(教材习题3.12)a) a+=a b) a-=2 c) a*=2+3 b) d) a/=a+a e) a%=(n%=2), n的值等于5 f) a+=a-=a*=a4. C语言中如何表示“真”和“假”?系统如何判断一个量的“真”和“假”?2.2 填空题1. 写出下面各逻辑表达式的值。设a=3, b=4, c=5。(教材习题5.3) (1) a+bc&b=c (2) a|b+c&b-c (3) !(ab)&!c|1 (4) !(x=a)&(y=b)&0 (5) !(a+b)+c-1&b+c/2 2. (1)52 (2)0 ! = 1 (3)!3 (4)105%10 (5)3/2*2 (6)53 (7)12b) a=b;if (bc) b=c; else c=b; c=a;2. 执行下列程序后,x和y的值分别是多少。int x,y;for (y=1,x=1;y=10) break; if(x%2= =1) x+=5; continue; x-=3; 3. 写出以下程序的输出结果。#include main() int c=A,a=0,k=1;while(k+=2)n); 5. 若输入为ABCD,下面程序的输出是什么?#include void main() char ch,n;for(n=0;(ch=getchar()!=10;n+) putchar(ch+32);printf(%dn,n); 4.2 单项选择题1. 以下程序的输出结果是 。x=0;do printf(“%d”,x+); while(x1); (A)0 (B)01 (C)012 (D)无任何显示2. 以下能正确计算10!的程序段是 。 (A) doi=1;s=1;s=s*i; i+; while(i=10); (B) doi=1;s=0; s=s*i; i+;while(i=10);(C) i=1;s=1; dos=s*i; i+;while(i=10); (D) i=1;s=0; do s=s*i; i+;while(i=10);3. 若变量已有正确定义,程序 a=0; for (i=1; i=n; i+) for (j=0; j=0 | | a=0 ) 5. break语句的作用是( )。(A)中止函数的执行 (B)立即中止循环(C)中止本次循环,直接开始下一次循环 (D)从一个循环体直接跳转至另一个循环体内4.3 程序填空题#include stdio.h#include (1) main() int m, i, k; for(m=2; m=1000; m+) k=(int)sqrt(m)+1;for(i=2; i=0; m - -) for(n=0; n=m; n+) printf(%d, *(p+n);2. #include “stdio.h”#define N 8void main() int a N , k , *p; for ( k = 0 ; k N ; k + + ) scanf ( “%d” , & a k ); p=a; for (k = 0 ; k 0) *p+=ak; while(pa) printf (“%d”, *p); 若该程序的输入为0 9 6 14 54 3 5 21,则程序的输出是什么?6.2 单项选择题1. 有定义static int a = 0 , 1 , 2 , 3 , 4 , *p=a+2 ;表达式*+p的值为 。(A)1 (B)2 (C)3 (D)42. 已有定义 int k=2; int *ptr1,*ptr2; 且ptr1和ptr2均已指向变量k,下面不能正确执行的赋值语句是 。(A) k= *ptr1+*ptr2; (B) ptr2=k;(C) ptr1=ptr2; (D) k= *ptr1*(*ptr2);3. 若有定义:int a10, *p=a;,则p+5表示 (8) 。(A)元素a5的地址 (B)元素a5的值 (C)元素a6的地址 (D)元素a6的值 第七章 函数(含习题课)7.1 程序分析题1. 下面程序的运行结果是 。void fl(void) int x=1; static y=2; x+; y+; printf(%d,%dn,x,y);main() int k; for(k=1;k=3;k+) fl();2. 下列程序的运行结果是 。int d=1;void fl(int p) int d=2; d+=p+; printf(%d ,d); main() int a=3; fl(a); d+=a+; printf(%dn,d);3. 下列程序的运行结果是 。#include int a= 10,c=5;main() int a=1, b=2, d=4, e=5; printf(%dn,func(a+b,b*c,c%d),(d,e/b);int func (int x, int y) return x+y;4下面程序的运行结果是什么?#include static int x=150;void show(int x,int y)printf(x=%d,y=%dn,x,y);x=300; y=400;void main()int x=100,y=200;show(y,x);printf(x=%d,y=%dn,x,y);5. 下面程序的运行结果是 。void fl(void) int x=1; static y=2; x+; y+; printf(%d,%dn,x, y);void main() int k; for(k=1;k=3;k+) fl();7.2 程序填空题1. 以下函数f的功能是实现NN阶方阵转置,请填空。#define N 8void swap( ) int temp=*p; *p=*q;*q=temp; void f(int ) int i,j;for(i=0;iN;i+) for(j=0;j ;j+) swap(&aij, ); 2. 下程序的功能是求M行N列矩阵的最大值元素,请填空。#include stdio.h#define M 5#define N 4float *getmax( ) int i,j;float *pmax; pmax= ;for(i=0;iM;i+) for(j=0;j*pmax) pmax= ; return( ); float aMN;void main() int i,j; for(i=0;iM;i+) for(j=0;jN;j+) scanf( ,&aij); printf(max=%.2f n,*getmax( ); 3. bubsort函数的功能是实现对N元整型数组冒泡排序(由大到小),请填空使之完善。#define N 10int aN;void bubsort( ) int i,j,t; for(i=1; iN-1; i+) for(j=0; j=A & *s=Z) *s+=32; puts(a); 若程序的输入为SWJTU,则输出结果为 。2. 若程序输入为 ABCD, 下面程序的输出结果是 。#include stdio.h #include string.h void main() char s81, *p, *q, t; gets(s); p=s;q=s+strlen(s)-1; while(p0 a=1; else a=0;2. C语言存贮字符串时,用特殊字符( )表示字符串结束。(A)x0d (B)0 (C)n (D)03. 以下选项中,不能正确赋值的是 。(A)char s10;s=Hello;(B)char s=H, e, l, l, o, 0;(C)char s10=Hello; (D)char *s=Hellon;4. 以下程序能够安全正确地输入字符串的是 。(A) char s41; scanf(%s, s0); (B) char s41; scanf(%c,s); (C) char *s; scanf(%s, s); (D) char s41, *p=s; scanf(%s,&(*p);7_3. 程序设计题1. 编写程序,输入一个字符串,用函数实现字符的逆序存储后输出该字符串。2. 从键盘接收一个字符串,判断该字符串是否为回文。 所谓回文,就是正读和反读顺序相同的串,如: ABCDCBA3. 编写程序将字符串中的小写英文字符变成大写,其它字符保持不变。(要求用函数实现)第八章 编译预处理指令8.1 单项选择题1. 为计算机多项式f (x ) = 3 x 2 + 2 x +1 ,最恰当的宏定义是 。(A)#define f ( x ) = 3 * x * x + 2 * x + 1 (B)#define f (x ) f ( 3 * x * x +2 * x + 1)(C)#define f ( x ) (3 *x * x + 2 * x +1)(D)#define f ( x ) (3 * ( x ) * ( x ) + 2 * ( x) + 1 )2. 以下不能判断一个整数x的奇偶性的宏定义是 。(A)#define odd(x) (x)%2) (B)#define odd(x) (x)&1) (C)#define odd(x) (x)=1) (D) #define odd(x) (x)-2*(x)/2)8.2 程序设计题1. 定义一个带参数的宏,使两个参数的值互换,并写出程序,输入两个数作为使用宏时的实参。输出已交换后的两个值。(教材习题9.1)2. 年份year, 定义一个宏,以判别该年是否闰年。(教材习题9.2)第九章 指针深入9.1 单项选择题1. 以下关于指针的说法中,不正确的是 。()指针表达式也称为地址表达式 ()指针值的存贮长度有2字节、4字节两种(TC2.0)()指针变量可以进行加减乘除运算 ()函数的名字就是一个函数指针常量,表示该函数代码的入口地址2. 若有定义和语句:int a=10,b=20,*p=&a,*pp=&p;p=&b;printf(%d %dn,*p,*pp);,则输出结果是 。(A)10,20(B)10,10(C)20,10(D)20,209.2 多项选择题1. 若有定义int a45,(*p)5=a;则以下正确而安全访问数组元素的表达式是 。(A)*p; (B)*(*(p+4)+1) (C)*(a+1)+1 (D)*(*a+1)(E)*p0+2(F)(*(p+3)4 (G)a43 (H)*(a3+1)2. 若有数组定义int a34;以及函数原型void f(int (*a)4);以下函数调用正确的是 。(A) f(a); (B) f(a00); (C)f(a0); (D)f(a+2);(E)f(&a1);(F)f(&a00); (G)f(*a); (H)f(*a0);4. 若有定义和语句:int w23,(*pw)3; pw=w;则能对w数组元素正确引用的是 。(A)*(w0+2);(B)*(w23);(C)pw00; (D)*(pw1 2);9.3 程序分析题1. 以下程序的输出是 。#include void main() double a=2.5,*p,*q; p=&a;q=&p;(*p)+; printf(%.2fn,*q); 2. 以下程序的输出是 。#include stdio.hmain() int x3=1,2,3,4,5,6,7,8,9 ;int (*p)3=x+1; printf(%d,%d,%dn,*p,*(*(p+1)+2),*(*x+1); return 0; 3. 下列程序的运行结果是 。main() int a10=9,7,6,1,2,3,0,4,8,5,*p,*k; p=a; printf(%d,*(p+);printf(%d,*(+p); k=&p; printf(%dn,*k);第十章 结构、联合、枚举、类型定义10.1 单项选择题1. 有定义struct int a5; b; 则正确表达成员数组a的最后一个元素地址的是 。(A) b.a(B)b.a5 (C)b.a+4(D)&(&b-a4)2. 以下对枚举类型名的定义中正确的是 。(A)enum a=one,two,three;(B)enum bone=9,two=-1,three;(C)enum c=one,two,three; (D)enum done,two,three;3. 以下关于结构体的说法正确的是 。(A) 结构体的成员变量可以与结构体变量同名(B) 结构体的成员变量不能是指针类型的变量(C) 指向结构体的指针变量不能在定义时初始化(D) 结构体数组不能在定义时进行初始化4. 以下关于C语言结构体变量的说法中错误的是 。(A)各成员变量首地址不相同(B)各成员变量首地址相同(C)存贮空间为所有成员变量长度之和(D)定义时可以初始化10.2 多项选择题1. 若有定义struct d1_tp int a,b; ; struct d2_tp d1_tp a; int b; b; 则以下正确的成员变量表达式是 。(A)a.a (B)b.a.b (C)(&b.a)-a (D)b.b2.以下选项中,能正确定义s为结构体变量并进行初始化的有 。(A)typedef struct tag char name20;int age; ABC; ABC s=Jack,20;(C)struct char name20;int age; ABC;ABC s=Jack,20; (B)struct ABC char name20;int age; s=Jack,20;(D)struct char name20;int age; s=Jack,20;第十一章 C文件操作11.1 单项选择题1. 以只写方式打开一个二进制文件,应选择的文件操作方式是 。(A)a(B)w(C)rb(D)wb2. 改写磁盘文件中的数据,文件打开方式正确的是 。(A)ab+ (B)rb+ (C)wb+ (D)rb3. 以下文件打开方式串中,不能创建新文件的是 。(A)r+ (B)a (C)w+ (D)a+11.2 程序填空题1. 以下程序的功能是统计字符文件a.txt中有多少个空格,请填空。#include stdio.h#include process.hvoid main() FILE *fp; int ch; int n= (1) ;if(!(fp=fopen(a.txt, rt) printf(File open error!n);exit(1); while(1) ch=fgetc(fp); if( (2) ) break; if( (3) ) n+; printf(n=%dn,n);fclose(fp); 2. 以下程序的功能是统计正文(文本)文件ABC.TXT的行数。#include “stdio.h”main() FILE *fp;int ch , count=0; fp=fopen(“abc.txt”, (1) ); if(fp=NULL) printf(“ABC.TXT not found.n”);return; while(1) ch=fgetc(fp);if( (2) ) break; if(ch= (3) ) count+; fclose(fp);printf(“numbers of lines=%dn”,count);3. 以下程序段的功能是从键盘上输入一个字符串,将字符串中的大写字母转换为小写字母,输出到文本文件test.txt中。请填空使该程序功能完整。 #include #include void main()_ (1)_ fp;char str255; int i=0;if(fp = (2)_ (test.txt,w)=NULL) printf(Cant open test.txt.n); exit(0); printf(Input a string:n); gets(str);while(_ (3)_ != 0)if(stri=A & strik 或 i=k+1 4.4 1. /* if 语句求解 */#include “stdio.h”void main() double I,p=0; printf(“Input I=”);scanf(“%lf”,&I); if(I100) p+=(I-100)*0.01; I=100; if(I60) p+=(I-60)*0.015;I=60; if(I40) p+=(I-40)*0.03;I=40; if(I20) p+=(I-20)*0.05;I=20; if(I10) p+=(I-10)*0.075;I=10; p+=I*0.1; printf(“p=%fn”,p);/* switch语句求解 */#include “stdio.h”void main() double I, p=0; printf(“Input I=”);scanf(“%lf”,&I); if(I=100) p+=(I-100)*0.01;I=100; swith(int)(I/10) case 10: case 9:case 8:case 7:case 6: p+=(I-60)*0.015;I=60;case 5:case 4:

温馨提示

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

评论

0/150

提交评论