《C程序设计作业(24页).doc》由会员分享,可在线阅读,更多相关《C程序设计作业(24页).doc(25页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、-作业答案:一,59,14.4,28.e二1小题,592,15一、将数89、20.25、40.875用十六进制表示二、填空1.在C语言中,数值常量0x3b的十进制值是 。2.字母f的ASCII码为十进制数_。第三章作业一、选择题:1、下列变量名中, B 是非法的。 A) Tom B) 3n C) little_boy D) c102、若有以下类型说明char a;int b;float c;double d;则表达式a*b+d-c的结果类型是( A )A)floatB)charC)int D)double3、若x为整型,则逗号表达式(x=4*5,x*5),x+25的结果及x的值分别是(C)正确
2、答案是100,45A)4520B)12520C)12545D)1001004、假设所有变量均为整型,则表达式(a=3,b=2,b+,a+b)的值是 C 。 A) 5 B) 8 C) 6 D)75、已知c2为字符型,则执行语句c2=E+8-A后,c2的值为 C 。 A) 12 B) 11 C)不确定的值 D) 106、设a为double变量,b为int型变量,c为字符型变量,则a+b+c为( C )型 A) int B) float C) double D) char7、语言中不可用作标识符的字符有( C ) A 下划线 B %C 数字 D 字母 8、下面四个选项中,均是合法整型常量的是(D)A
3、)160B)- 0xcdfC)- 01D)0x- 0xffff01a 0668 2e59、设a为字符变量,b为int型变量,c为double型变量,则a*b+c为( C )型 A. int B. float C. double D. char10. 若a是int型变量,则表达式(a=4*5,a*2),a+4的值为( C )A. 20 B.22 C. 24 D.44 第四章作业一、选择题1、若x为int型变量,则执行以下语句后x= C 。x=5;x-=x-=x+x;A. -10 B. -5 C.0 D.102、在printf()函数的格式说明符中,字符型数的输出格式说明符是 D 。A. %s B
4、. %f C. %ld D. %c3、 已知ch是字符型变量,下面不正确的赋值语句是 C 。A) ch=7+9; B) ch=0; C) ch=x+y; D) ch=5+9;4、要使用putchar()函数必须在程序前加语句 A 。A. #include B. include C. include stdio.hD. #include stdio.h5、在scanf()函数的格式说明符中,长整型数的输入格式符是 B 。 A. %lf B. %ld C. %f D. %x二、判断题1、 C语言标准输入操作中,gets()函数一次只可以读取一个字符。(Flase )2、 C语言标准输出操作中,pu
5、tchar()函数可以输出显示一个字符串。(Flase )3、 a与a是不同的; ( True )三、分析下列程序的输出结果。1.#include void main()char c=m;printf(“%c,%dn”,c,c);printf(“%d,%cn”,c,c);分别是,m,10999,c2. #include void main()int a;float d;printf(“Enter a and d: ”);scanf(“%d%f”,&a,&d);printf(“%5d,%8.2fn”,a,d);Enter a and d: 70 80.158 输入结果,Enter a and d
6、:70 ,80.16第五章作业一、 选择题。1、逻辑运算符两侧的运算对象的数据(D)A) 只能是0和1B) 只能是0或非0正数C) 只能是整型或字符型数据D) 可以是任何类型的数据2、判断char型变量ch是否为大写字母的正确表达式是 C 。A. A=ch=A) & (ch=A)& (ch=Z) D. (A=ch)3、执行以下程序段后, b= A 。int a=5,b=6,c=1,x=2,y=3,z=4;c=(a=cx)&(b=yz);A. 6 B. 0 C. 1 D.44、已知int x=10,y=20,z=30;以下语句执行后x,y,z的值是 B 。 if (xy) z=x;x=y;y=z
7、;A. x=20,y=30,z=30 B. x=10,y=20,z=30C. x=20,y=30,z=10 D. x=20,y=30,z=205、设a=3,b=4,c=5,则表达式 !(a+b)+c-1&b+c/2 的值为( B )A.0 B.1 C.4 D.6.5二、 填空题。1、以下程序main() int x1=3,x2=0,x3=0; if(x1=x2+x3)printf(“*”); elseprintf(“#”);输出 # 。2、 10 != 2 + 8 | 5 9/4的结果是 FALSE(0) 。3、设x为int型变量,表示某一年份,请写出描述“x是闰年”的表达式 x%4=0&x%
8、100!=0)|x%400=0 。4、整型变量 y 能被 3 整除但不能被 4 整除 。三、 程序填空题。请在【】中填上正确内容。1、该程序实现输出x,y,z三个数中的最大者。main()int x=4,y=6,z=7; int 【1】;if (【2】) m=x;else m=y;if (【3】) n=m;else n=z;printf(“n=%d”,n); 答案:m xy nm2、输入一个字符,如果它是一个大写字母,则把它变成小写字母;如果它是一个小写字母,则把它变成大写字母;其他字符不变;main() char ch; scanf(“%c”,&ch); if (【1】) ch=ch+32;
9、else if (ch=a & ch=A )&( ch=Z) ch=ch-32 第六章作业一选择题。1、设有程序段int x=10;while(x=0) x=x-1;则下面描述正确的是(C)。A)while循环执行10次B)循环是无限循环C)循环体一次也不执行D)循环体只执行一次2、对for(表达式1; ;表达式3)可理解为 C 。 A. for(表达式1;0 ;表达式3) B. for(表达式1;表达式1;表达式3)C. for(表达式1;1 ;表达式3) D. for(表达式1;表达式3;表达式3)3、语句while(!y);中表达式!y等价于(A)A)y= =0B)y!=1C)y!=0D
10、)y= =14.下述关于break语句的描述中,( C )是不正确的。A. break语句可用于循环体内,它将退出该重循环;B. break语句可用于开关语句中,它将退出开关语句;C. break语句可用于if体内,它将退出if语句;D. break语句在一个循环体内可以出现多次;5.执行以下程序时,从键盘输入2473(表示回车),则下面的程序的运行结果是( C )#include main( ) int c ;while(c=getchar( )!= n) switch(c-2) case 0: case 1: putchar(c+4); case 2: putchar(c+4);break
11、; case 3: putchar(c+3); default: putchar(c+2);break; A. 668966 B.6688766 C. 668977 D. 66778777二判断题1、While循环语句的循环体至少执行一次。( false )2、任何循环语句的循环体至少都可执行一次。( false )3、break语句可以出现在各种不同循环语句的循环体中。( true)4、for循环是只有可以确定的循环次数时才可使用,否则不能用for循环。(false )5、条件语句是可以实现多路分支的。(true )三填空题1.已知 for(j=1,s=0;j=5;j+=2) s=s+j;
12、执行循环后,s的值是 9 _ 。2. 执行以下程序段后,y= 8 _ ,x= 2 _ 。int x=1,y=10;do y-=x; x+;while(y-0);四程序填空题1下面程序段的功能是将字符串s中所有的字符c删除,请填空.main() char s80; int I,j; gets(a); for(i=0,j=0;si!=0;i+) if(si!=c) (【1】) ; sj=0; puts(s);答案:else第七章作业一、选择题1、以下能对二维数组正确初始化的是(D)A) int y2 =1,0,1,5,2,3B) int y 3= 1,0,1,5,2,3C) int y2 4= 1
13、,0,1,5,2,3D) int y 3= 1,0,1,0, ,5,22、若二维数组y有m列,则在yij前的元素个数为(B)A j*m+IB i*m+jC i*m+j-1D i*m+j+13、已知 int w24=7,15,8,9,20,25,14,17;则 w01的值是 C(15) A 8 B.9 C. 15 D. 254、若有说明 int a3=1,2,3,4,5,6,7, 8;则a数组第一维的大小是 A 。A. 2 B无确定值 C. 3 D. 45、若有说明 int a4=1, 2, 3, 4, 5, ;则a数组第一维的大小是 D 。A. 2 B无确定值 C. 3 D. 语法错误6、下面
14、程序的运行结果是 。char c6=a,b,c, 0,c,0; 答案是abc (B)printf(“%s”,c);A. ab B. abc C. ab c D. ab7、判断字符串a和b是否相等,应当使用 D 。 A. if (a= =b) B. if (a=b) C. if (strcpy(a,b) D. if (strcmp(a,b)8、用数组名作为实参,传给形参的是( D )A.数组第0个元素的值 B.数组全部元素的值C.数组元素个数 D.数组首地址9、以下能正确读入字符串的是(D)A.char *p;scanf(“%s”,p);B.char str10; scanf(“%s”,&str
15、);C.char str10,*p;p=str; scanf(“%s”,p);D.char str10,*p=str; scanf(“%s”,p1);10、已知 char c6=ABCDE, d6;要将c复制到d中,正确的做法是( D )A. d=c; B. c=d; C. strcmp(c,d);D. strcpy(d,c);二、分析下面程序的结果。main ( ) int i,j,s1=0,s2=0 ,a33= 4,9,6,5,3,1,2,8,7; printf(a:n); for(i=0; i3; i+) for(j=0;j3;j+) printf(%3d,aij); printf(n)
16、; printf(n); for(i=0; i3; i+) s1=s1+aii; s2+=ai2-i; printf(s1=%d, s2=%dn,s1,s2); 答案:a: 4 9 6 5 3 1 2 8 7S1=14,s2=11 第八章作业一、选择题1. 在C语言中,当函数调用时( D )。A. 实参和形参各占一个独立的存储单元B. 实参和形参共用存储单元C. 可以由用户指定实参和形参是否共用存储单元D. 由系统自动确定实参和形参是否共用存储单元2. 以下函数调用语句中实参的个数为( A )。exce(v1,v2),(v3,v4,v5),v6);A. 3B. 4C. 5D. 63. 如果在一
17、个函数的复合语句中定义了一个变量,则该变量( A )。A. 只在该符合语句中有效,在该符合语句外无效B. 在该函数中任何位置都有效C. 在本程序的原文件范围内均有效D. 此定义方法错误,其变量为非法变量4. C语言规定,函数返回值的类型是由( D )。A. return语句中的表达式类型所决定B. 调用该函数时的主调函数类型所决定C. 调用该函数时系统临时决定D. 在定义该函数时所指定的函数类型决定5. 在C语言程序中,以下描述正确的是( D )。A. 函数的定义可以嵌套,但函数的调用不可以嵌套B. 函数的定义不可以嵌套,但函数的调用可以嵌套C. 函数的定义和函数的调用均不可以嵌套D. 函数的
18、定义和函数的调用均可以嵌套二、写出程序的输出结果1.void main(void) int a=1,k; for(k=0;k3;k+) printf(%4d,f1(a); int f1(int x) static int z=3,y=0; y+; z+; return(x+y+z); 答案:*6*8*10第十章作业一、 选择题。1.若有以下定义和语句,且0i10则对数组元素的错误引用是( B )。int a10=1,2,3,4,5,6,7,8,9,10,*p,i;p=a;A. *(a+i) B. ap-a C. p+i D. *(&ai)2.若有定义:int a34; ,( D )不能表示数组
19、元素a11。A. *(a1+1) B. *(&a11) C. (*(a+1) ) 1 D. *(a+5)3.对如下定义,以下说法中正确的是( D )。char *a2= abcd,ABCD;A.数组a的元素值分别为abcd和ABCDB.a是指针变量,它指向含有两个数组元素的字符型数组C.数组a的两个元素分别存放的是含有4个字符的一维数组的首地址D.数组a的两个元素中各自存放了字符a、A的地址4.char *s=tNameAddressn;指针s所指字符串的长度为:( D )。A. 说明不合法 B. 19 C. 18 D. 155.分析下面函数,以下说法正确的是( D )。swap(int *p
20、1,int *p2) int *p; *p=*p1; *p1=*p2; *p2=*p;A. 交换*p1和*p2的值 B. 正确,但无法改变*p1和*p2的值C. 交换*p1和*p2的地址 D. 可能造成系统故障,因为使用了空指针6.设有说明int (*ptr)M; 其中ptr是( C )。A. M个指向整型变量的指针B. 指向M个整型变量的函数指针C. 一个指向具有M个整型元素的一维数组的指针D. 具有M个指针元素的一维指针数组,每个元素都只能指向整型量7.在说明语句:int *f(); 中,标识符代表的是:( D )。A. 一个用于指向整型数据的指针变量B. 一个用于指向一维数组的指针C.
21、一个用于指向函数的指针变量D. 一个返回值为指针型的函数名8.若int x ,*pb; ,则正确的赋值表达式是( A )。A. pb=&x B. pb=x; C. *pb=&x; D. *pb=*x9.有如下程序段int *p ,a=10 ,b=1 ;p=&a ; a=*p+b ;执行该程序段后,a 的值为( B )。A. 12 B. 11 C. 10 D. 编译出错二、 填空题。1、单目运算符&后跟变量名,表示是该变量的 地址 ,单目运算符*后跟指针名,表示该指针的 指向该指针的地址 。 2、指针用来存放某个变量的 地址 。3、已知:char *c=”good”;则printf(“%sn”,c)输出为 good ,printf(“%sn”,c+1)输出为 ood 。4、若有定义:int a10,*p=a;则*(p+5)表示 a5 的值。5、若有定义:int* p;则*p表示_地址_ 。三、 程序填空题下面程序的功能是将八进制正整数组成的字符串转换成十进制整数,请填空。#include stdio.hmain() char *p,s6; int n; p=s; gets(p); n= 【1】 ; while( 【2】 !=0) n=n*8+*p-0; printf(%dn,n); 答案:*p-0*p第 25 页-
限制150内