程序设计与数据结构练习题 附答案.docx

上传人:飞****2 文档编号:60325185 上传时间:2022-11-15 格式:DOCX 页数:38 大小:72.30KB
返回 下载 相关 举报
程序设计与数据结构练习题 附答案.docx_第1页
第1页 / 共38页
程序设计与数据结构练习题 附答案.docx_第2页
第2页 / 共38页
点击查看更多>>
资源描述

《程序设计与数据结构练习题 附答案.docx》由会员分享,可在线阅读,更多相关《程序设计与数据结构练习题 附答案.docx(38页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、一、单项选择题1有下列程序段落:int i,a5;for(i=0;ix)&(b=yz) ;后,a,b的值为( D)。 A 1和1 B 0和0 C 4和2 D 0和2 &前一条件为假,无论后面什么情况结果都为假13定义如下变量关系,则下面语句的输出结果是( D )。 int i; int x33=1,2,3,4,5,6,7,8,9; for(i=0;i2) n-; printf(“%d”,n); A 543 B432 C4321 D543217下列四种数组定义,合法的数组定义是( A)。 A char a =hello; B int a4=4,3,2,1,0; C char a=hello ;

2、D char a4= hello;18设p1和p2均为指向int型的指针变量, k为int型变量,下列不正确的赋值语句是( C )。 Ak=*p1+*p2; Bk=*p1*(*p2) Cp2=k Dp1=p219有如下程序 ,该程序的输出结果是( C )。 void main(void) char s=“ABCD”,*p; for( p=s+1;pa C p-ab.a D p.ab.a25. 若要对E盘上的一个非空文件“w1.dat”进行修改,正确的打开语句是( D )。A fp=fopen(“w1.dat”,“r+”); B fp=fopen(“w1.dat”, “w+”); C fp=fo

3、pen(“E:w1.dat”,“r+”); D fp=fopen(“E:w1.dat”,“w+”);26语言程序的三种基本结构是 ( A )。顺序结构,分支结构,循环结构 递归结构,循环结构,转移结构嵌套结构,循环结构,顺序结构 递归结构,分支结构,顺序结构27能正确表达逻辑关系“0a1或0b1”的c语言表达式是( A )。. (0a)&(a1)|(0b)&(b1).(0a)|(a1)&(0b)|(b1). (0a1)&(0b1) . (0a1)|(0b=a . a%=a30定义如下变量和数组,则下面程序段落的输出结果是( A )。int i; int x33=0,1,2,3,4,5,6,7,

4、8;for (i=0;i3;i+) printf (“%d ”,xi2-i);2 4 60 3 6 0 4 8 2 5 831以下叙述错误的是( D)。 一个C源程序可由一个或多个函数组成 B 一个C源程序必须包含一个main函数C C程序的基本组成单位是函数 D 在C程序中,注释说明只能位于一条语句的后面32C语言中运算对象必须是整型的运算符是( A)。 A %= B/ C = D =33有如下程序,程序运行后的输出结果是( B)。 main() unsigned int x=0xffff; printf(“%un”,x );A -1 B 65535 C 32767 D 0xFFFF34若有

5、代数式(其中e仅代表自然对数的底数,不是变量),则以下能够正确代表该代数式的C语言表达式是(C)。A. sqrt(abs(nx+ex) B. sqrt(fabs(pow(n,x)+pow(x,e) C. sqrt(fabs(pow(n,x)+exp(x) D. sqrt(fabs(pow(x,n)+exp(x)35字符串“t12x42abcd”的长度是( B)。 A 14 B 9 C 15 D20 36以下叙述中错误的是( D )。A 计算机不能直接执行用C语言编写的源程序B C语言经C编译程序编译后,生成后缀为.obj的文件是二进制文件C 后缀为.obj的文件,经连接后生成后缀为.exe的文

6、件是二进制文件D 后缀为.obj和.exe的二进制文件都可以直接运行37以下选项中,与k=x+;完全等价的表达式是( B)。 A x=x+1;k=x; B k=x;x=x+1; C k=x+1; D k+=x+1;38以下叙述中正确的是( C)。A break语句只能用于switch 语句中 B continue语句的作用是:使程序的执行流程跳出包含它的所有循环 C break语句只能用在循环体内和switch语句体内 D 在循环体内使用break语句和continue 语句的作用相同39判断字符型变量 ch是否为大写英文字母的表达式为( B)。A A=ch=A& cha& ch=A| ch=

7、Z40若表达式(m)? a+:a-, 则表达式m和( B)等价。 A m=0 B m!=0 C m=0 D m=141在c语言中,运算对象的逻辑值“真”用( B )表示。A false 非0 0 负数42已知函数原型声明为:char *www(char a, char b);该函数的类型为( A )。 指向字符型的指针 字符型 整型 指向整型的指针43设int类型的数据长度为2字节,则该类型数据的取值范围是( D )。 0至65536 0至65535 -32767至32768 -32768至3276744int a, *p, *w; p=&a, w=&p; 取a的值的表达式为( D )。 *

8、* *w45语言程序的基本单位是( A )。A函数 B标识符 C表达式 D语句46判断字符型变量 ch 的值是否为大写英文字母的表达式为( B )。A. A=ch=A & cha & ch=A | chx) | (b=yz);后,a, b的值为 ( C )。 A1和1 B. 0和0C1和2 D. 4和248若有定义语句int a=1,2,3,4,5,6,7,8,9,10,*p=a; 值为 8 的数组元素的正确表示为( D ):A. a8 B. a+7 C. p+7 D. *(p+7)49下列程序运行结果是( A )。#define A 2#define AA A+A/2void main(vo

9、id)printf(“%d,”,AA); printf(“%dn”,5*AA);A3,11 B3,15 C2,10 D8,4050若有如下定义,则对ex中的a成员的正确引用是( B )。 struct sk int a; float b; ex, *p = &ex;A. (*p).ex.a B. p-a C. p-ex.a D. p.ex.a二、填空题1在内存中存储一个字符 a 占用_1_个字节,而存储字符串 ”abcdef” 则占用_7_个字节。2表达式 4/5的值为_0_。3设 x=4.5,a=7,y=3.4, 表达式x+a%3*(int)(x+y)%2/4的值为_ 4._。4设 a=14

10、, 执行 a+=a=a*=a 后,a=_0_。5设x=y=z=6, 执行 x=(yz)?x+2:x-2; 后,x=_4_。6getchar( )函数用于输入_字符_, 而gets( )函数则用于输入_字符串_。7设有定义语句:char ww20=” twabn”; 则表达式:strlen(ww) 的值是_6 。8设有定义语句:char str7=”abcdef”, 则数组元素str2中的字符是_c_,数组元素str6中的字符是_0_。9函数中的形参和调用时的实参都是变量时,传递方式为_值传递_; 都是数组名时,传递方式为_地址传递_。10设有char *p=”12345”, 则printf(“

11、%s”,p)的输出是_12345_;而 printf(“%c”,*p)的输出则是_1_。11若s是int型变量,且s=7,则表达式: s/2+(s+1)%2 的值为_3_。12C语言中,以 0x_打头的int常数是十六进制。13有说明语句char s=102; S包含了_1_个字符。14有数学表达式sinx+-6x,写出其对应的C语言的表达式 _sin(x)+sqrt(x)-6*x_。15有定义语句:int a3= 0,1,2 ; 则数组元素a12的值是 0 。16若程序中使用了函数strlen(),则必须包含的头文件名为_string.h_。17有如下程序,该程序的输出结果是 a=2,b=1

12、 。void main(void) int x=1,a=0,b=0; switch(x) case 0:b+; case 1:a+; case 2: a+,b+; printf(a=%d,b=%dn,a,b);18. 若a函数中调用了b函数,而b函数又调用了a函数,这种调用称为_递归_调用。19函数调用时,若形参和实参均为数组名时,传递方式为 _地址传递_。20若有以下定义语句,则输出的结果是_4_。 char s1 =“abcdef”, *s2=“1234”; printf(“%dn”, strlen(strcpy(s1,s2); 21若宏定义为:#define y(x) 2+x 则表达式a

13、=4+3*y(2)的值为 12 。22设有以下语句:static int a42=1,2,3,4,5,6,7,8;int (*p)2;p=a;则 *(*(p+2)+1)的值为 6。23在turbo C中,int型数据占2字节,则定义 struct node char x10;int y;union float a; long b; ab;t;后,sizeof(t)= 16 。24.设有一个名为“ww1.c”的C程序,其主函数为 main(int argc,char *argv),如果在执行时,输入的命令行为: ww1 aa bb cc则形式参数argc的值是_4_。25. 执行下列程序段后,(

14、*q-1)的值为 _99_。int a,*p,*q;a=100; p=&a; q=&p;26C语言源程序中主函数名由系统规定为 _main_ ,程序员是不能改变的。27有数学表达式:-3,其C语言表达式为 _sqrt(x)-3_。28已知函数定义为:int stat(int a , float *p) . 则此函数的两个参数类型分别是整型 、 指向浮点型指针 。29设有数组a10;则首地址可以写成 _a或&a0_数组元素a3的地址可以写成_ &a3或a+3 _。30要使以下程序段中的函数调用语句printf(“*”);执行10次,应在 处填入整数 _19或20_。for( i=1;i=_;i+

15、=2 ) printf(“*”);31用只读方式打开e:目录下的名为 “aa.dat”的文件,正确的打开语句为 FILE *fp;fp=_fopen( “e: aa.dat”,”r”) _。32.判断两个浮点型变量x和y是否相等一般用:if( fabs(x y) 1e-6 ) 。33.已知赋值语句zhang.year =1985;可判断zhang是 结构体 类型的变量。三、程序分析题1 下面程序的运行结果为 5,6,5,0 #include void main( ) int a,b,c,d; a=4; b=6; c=+a; d=( ca & cb); printf(%d,%d,%d,%d,a,

16、b,c,d);2. 下面程序的运行结果为 c=1 d=0. #include void fun (int x, int y) int a, b; float d; a = x+14; b = y-4; d = (float)(b/a); printf (d=%fn, d); void main(void) int b=9, a=6, c; c = b/a; printf (c=%dn, c); fun( a, b );3设从键盘上输入 Hello World! 下面程序的运行结果为 hello world! #include void main( void ) char ss20; int i

17、; gets(ss); for( i=0; ssi!=0; i+)if( ssi=A & ssi=Z) ssi = ssi+32 ; puts(ss);4下面程序的运行结果为 b=-10 i=33, b=0 i=75, b=33 #include int i=1;void other( void );void main(void) int b = -10; printf(b=%dn, b); other( ); i = i+10; other( ); void other( ) static int b; i=i+32; printf(i=%d, b=%dn, i, b); b = i;5下面

18、程序的运行结果为 6, 45 2, 98 #include void main(void) int a10=78,89,98,66,54,76,45,82,62,95 ;int ka, ki, j;ka = ki = 0;for(j=1; jaj ) ki=j ;if (aka aj ) ka=j ; printf(“%d, %dn %d, %dn”, ki, aki, ka, aka ); 6. 运行时假定键盘输入数据为:1 2 3 4 5 6 7 8 9 10 下面程序的运行结果为 1 3 5 7 9 #include void main(void ) int i ,a 10 ; int

19、*p;p = a; for (i=0 ; i10 ; i+ ) scanf ( “ %d” , p+ ) ; for (p=a ; pa+10 ; p+ )if ( *p % 2 ) printf ( “ %3d”, *p); 7下面程序的运行结果为 10, 101 0111 (要求注明输出格式!)#include void main(void) int a=10,b=11; int c=0,d=0; printf(%5d,%5dn,a+,-b); printf(%5d,a&b); printf(%5d,!a); printf(%dn,!c); printf(%5d,d+=a); 8下面程序的

20、运行结果为1+1=2 1+2=3 1+3=4 2+2=4 2+3=53+3=6 #include void main(void) int i,j; for(i=1;i4;i+) for(j=i;j4;j+) printf(“%d+%d=%d ”,i,j,i+j);printf(“n”); 9下面程序的运行结果为 a=1,b=-5,c=0a=2,b=2,c=10a=3,b=-5,c=2 #includeint a=1,b;void fun(void);void main(void) static int c; int b=-5; printf(a=%d,b=%d,c=%dn,a,b,c); fu

21、n(); a+=1;c+=2; printf(a=%d,b=%d,c=%dn,a,b,c);void fun() int c=10; a+=1;b+=2; printf(a=%d,b=%d,c=%dn,a,b,c);10. 下面程序的运行结果为 ABCDBCDCD D #include main() char str5,*p; int i; for(i=0;i4;i+) stri=A+i; stri=0; p=str; while(pstr+4) printf(%sn,p); p+; 11下面程序的运行结果为 Input score:*No:1001Name:Wang yong Score:*

22、.0 #includevoid main(void) struct studint no; char *name;float score; stu1,stu2; stu1.no=1001; stu1.name=Wang yong; printf(Input score: );scanf(%f,&stu1.score); stu2=stu1; printf(No: %dnName: %snScore: %5.1fn,stu2.no,stu2.name,stu2.score); 12. 下面程序的运行结果为 3,828 #includeint fun(int *a, int n) int i,k=

23、0; printf(“%d,%dn”,*a,n);for(i=0;in;i+,a+) if(*a%2)continue;elsek+=*a; return k;void main() int aa10=1,2,3,4,5,6,7,8,9,10,s; s=fun(aa+2,8); printf(%dn,s);四、 程序设计题1. 有一分段函数: 2x + 5 (x=2) y= 3x - 4 (2x5) 编程序,输入变量 x的值,计算并输出y的值。#includeint main(void)int x, y;scanf(%d,&x);if(x 5)y = 7;else y = 3 * x - 4;

24、printf(%d, y); 2由键盘任意输入9个整数,组成3行3列的二维数组,统计主对角线上元素的和。#includeint main(void)int a33,i,j,sum=0; for(i=0;i3;i+) for(j=0;j3;j+) scanf(“%d”,&aij); for(i=0;i=2;i+) for(j=i;j=i;j+) sum+=aij;printf(“sum=%d”,sum); 3编写程序,通过级数 求的值,要求精度为10-6 (即某项的绝对值小于10-6),输出结果的值。#include#includeint main(void)float pi=0,t=1,it=

25、1;int s= 1;while(fabs(t)1e-6)pi+=t; it+=2; s=-s; t=s/it;printf(PI=%f,4*pi); 4编写一程序任意输入一串字符,统计其中大写字母的个数,并输出结果。#include#includeint main(void)char a1000;int i, count = 0;scanf(%s, a);for(i = 0; i = A & ai 0 y= 0 x=0 1 x0 输入x的值,输出结果。#include#includeint main(void)int x, y;scanf(%d, &x);if(x = 0)y = 0;els

26、e if(x 0)y = 1;else y = -1;printf(%d, y); 6输入6个整数,组成2行3列的二维数组,统计数组中的正数之和、正数个数以及负数之和、负数个数。#include#includeint main(void)int a6;int i,j = 0,j_number = 0,k = 0,k_number = 0;for(i = 0; i 0)j += ai; j_number+;else if(ai 0)k += ai; k_number+;printf(正数个数是%d,和为%d。n负数个数是%d,和为%d,j,j_number,k,k_number); 7编写子函数

27、exps,求ex1+x+x2/2!+x3/3!.,要求精度为106。在主函数中输入x,利用子函数exps 求(ex+e-x)/2的值,并在主函数中输出结果。#include#includedouble exps(double x)double i,k = 1, sum = 1;double e = 0;for(i = 0; ;i+,k+)sum *= k;e = pow(x, i)/ sum;if( pow(x, i)/ sum pow(0.1, 6) ) break;return e;int main(void) float x; scanf(%f, &x); printf(%lf, (exps(x) + exp(-x)/2); 8一个班有45人,用a数组存放一门课的成绩,编程输入a的成绩,统计不及格(60分)的人数,并将成绩按降序排序,输出结果。(10分)#include#includeint main(void) int a45, i, j, te

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁