C语言第三章习题带答案
- 格式:doc
- 大小:47.50 KB
- 文档页数:4
c语⾔程序设计第五版谭浩强习题答案第三章课后答案第三章最简单的C程序设计 ----顺序程序设计1、假如我国国民⽣产总值的年增长率为7%,计算10年后我国国民⽣产总值与现在相⽐增长多少百分⽐。
计算公式为$p = (1+r)^n$ ,其中r为年增长率,n为年数,p为与现在相⽐的倍数。
题⽬解析:此题的关键主要是利⽤数学库math中pow函数进⾏计算,若不熟悉可以查阅帮助⽂档,查看pow函数的⽤法。
代码⽰例:#include<stdio.h>#include <math.h>int main(){Cfloat p, r, n;r = 0.07;n = 10;p = pow(1 + r, n);printf("p=%f\n", p);return 0;}运⾏结果:2、存款利息的计算。
有1000元,想存5年,可按以下5种办法存:(1)⼀次存5年期(2)先存2年期,到期后将本息再存3年期(3)先存3年期,到期后将本息再存2年期(4)存1年期,到期后将本息再存1年期,连续存5次(5)存活期存款,活期利息每⼀季度结算⼀次2017年银⾏存款利息如下:1年期定期存款利息为1.5%;2年期定期存款利息为2.1%;3年期定期存款利息为2.75%;5年期定期存款利息为3%;活期存款利息为0.35%(活期存款每⼀-季度结算⼀-次利息)如果r为年利率,n为存款年数,则计算本息的公式如下:1年期本息和: P= 1000* (1+r);n年期本息和: P= 1000* (1+n* r);存n次1年期的本息和: $P=1000* (1+r)^n$;活期存款本息和: P= 1000 *(1+$\frac{r}{4}$)$^{4n}$;说明: 1000*(1+$\frac{r}{4}$)是⼀个季度的本息和。
题⽬解析:理解题意很关键,其次就是利⽤数学库math中pow函数进⾏幂次⽅计算代码⽰例:#include<stdio.h>#include <math.h>int main(){float r5, r3, r2, r1, r0, p, p1, p2, p3, p4, p5;p = 1000;r5 = 0.0585;r3 = 0.054;r2 = 0.0468;r1 = 0.0414;r0 = 0.0072;p1 = p*((1 + r5) * 5); // ⼀次存5年期p2 = p*(1 + 2 * r2)*(1 + 3 * r3); // 先存2年期,到期后将本息再存3年期p3 = p*(1 + 3 * r3)*(1 + 2 * r2); // 先存3年期,到期后将本息再存2年期p4 = p*pow(1 + r1, 5); // 存1年期,到期后将本息存再存1年期,连续存5次p5 = p*pow(1 + r0 / 4, 4 * 5); // 存活期存款。
第三章习题解答1.分别写出对链栈的入栈和出栈操作的算法。
链栈的结点类型定义如下:Typedef struct stacknode {SElemtype data;struct stacknode *next;}stacknode, *linkstack;入栈操作:Status push( linkstack &S, SElemtype e){ p=(linkstack)malloc(sizeof(stacknode));If (!p) return ERROR;p->data=e;p->next=S;S=p;return OK;}出栈操作:Status pop(linkstack &S, SElemtype &e){ if (!S) return ERROR;p=s;s=p->next;free(p);return OK;}P24/3.15假设以顺序存储结构实现一个双向栈,即在一维数组的存储空间中存在着两个栈,它们的栈底分别设在数组的两个端点。
试编写实现这个双向栈tws的三个操作:初始化inistack(tws),入栈push(tws,i,x)和出栈pop(tws,i)的算法,其中i为0或1,用以分别指示设在数组两端的两个栈,并讨论按过程(正/误状态变量可设为变参)或函数设计这些操作算法各有什么优缺点。
双栈的结构类型定义如下:typedef struct{Elemtype *base[2];Elemtype *top[2];}BDStacktype; //双向栈类型栈的初始化操作:status Init_Stack(BDStacktype &tws,int m)//初始化一个大小为m的双向栈tws{ tws.base[0]=(Elemtype*)malloc(m*sizeof(Elemtype));tws.base[1]=tws.base[0]+m-1;tws.top[0]=tws.base[0];tws.top[1]=tws.base[1];return OK;}入栈操作:Status push(BDStacktype &tws,int i,Elemtype x) // x入栈,i=0表示低端栈,i=1表示高端栈{ if (tws.top[0]>tws.top[1]) return OVERFLOW;//注意此时的栈满条件if (i==0) *tws.top[0]++=x;elseif (i==1) *tws.top[1]--=x;else return ERROR;return OK;}出栈操作:Status pop(BDStacktype &tws, int i, Elemtype &x) // x出栈,i=0表示低端栈,i=1表示高端栈{ if (i==0){ if (tws.top[0]==tws.base[0]) return OVERFLOW;x=*--tws.top[0];}else if (i==1){ if (tws.top[1]==tws.base[1]) return OVERFLOW;x=*++tws.top[1];}else return ERROR;return OK;}P24/3.18试写一个判别表达式中开、闭括号是否配对出现的算法。
C语言练习题-第三章参考答案(已勘误)C语言练习题---第三章1、有以下程序#include<stdio.h>main(){short c=124;c=c_______;printf(“%d\n”,C);}若要使程序的运行结果为248,应在下划线处填入的是A)>>2 B)|248 C)&0248 D)<<12、以下程序运行后的输出结果是2008。
#include<stdio.h>main(){int a=200,b=010;printf(”%d%d\n”,a,b);}3、有以下程序#include<stdio.h>main(){int x,y;Scanf(“%2d%ld”,&x,&y);printf(“%d\n”,x+y);}程序运行时输入:程序的运行结果是34579。
4、有以下程序#includeVoid main(){char a,b,c,d;scanf(”%c%c”,&a,&b);c=getchar(); d=getchar();printf(”%c%c%c%c\n”,a,b,c,d);}当执行程序时,按下列方式输入数据(从第一列开始,代表回车,注意:回车是一个字符)1234则输出结果是:()A、1234B、12C、12D、123 345、有以下程序,其中k的初值为八进制数#includemain(){int k=011;printf(”%d\n”,k++);}程序运行后的输出结果是D(A)12 (B)11 (C)10 (D)96、有以下程序(暂不做)#includevoid fun (char*c,int d){*c=*c+1;d=d+1;printf(”%c,%c,”,*c,d);}main(){char b=’a’,a=’A’;fun(&b,a); printf(”%c,%c\n”,b,a);}程序运行后的输出结果是AA)b,B,b,A B)b,B,B,A C)a,B,B,a D)a,B,a,B7、以下程序#include#define SUB(a) (a)-(a)main(){int a=2,b=3,c=5,d;d=SUB(a+b)*c;printf(”%d\n”,d);}程序运行后的结果是CA)0 B)-12 C)-20 D)108、有以下程序#includemain(){int a=2,b=2,c=2;printf(”%d\n”,a/b&c);}程序运行后的结果是CA)0 B)1 C)2 D)39、将值为三位正整数的变量x中的数值按照个位、十位、百位的顺序拆分并输出。
程序设计基础-C语言(科学出版社教材)第三章-程序结构教材习题答案1.0编写程序使整形变量:a=3,b=4,c=5,p=0xfffe,q=0xffff;浮点型变量:x=1.2,y=2.4,z=3.6;无符号型变量:u=5127486,n=128765,字符型变量:c1=’a’,c2=’b’;#include <stdio.h>void main(){int a,b,c,p,q;float x,y,z;unsigned int u,n;char c1,c2;a=3;b=4;c=5;p=0xfffe;q=0xffff;x=1.2;y=2.4;z=-3.6;u=5127486;n=128765;c1='a';c2='b';printf("a=%d b=%d c=%d\n",a,b,c);printf("p=%#x q=%#x\n",p,q);printf("x=%f,y=%f,z=%f\n",x,y,z);printf("x+y=%.2f y+z=%.2f x+z=%.2f\n",x+y,y+z,x+z);printf("u=%8u n=%8u\n",u,n);printf("c1='%c' or %d\n",c1,c1);printf("c2='%c' or %d\n",c2,c2);}2.0 读入三个双精度数,求出它们的平均值并保留此平均值小数点后二位,最后输出结果。
#include <stdio.h>void main(){double a,b,c,d;printf("请输入三个双精度数:");scanf("%lf,%lf,%lf",&a,&b,&c);d=(a+b+c)/3;printf("d=%.2lf",d );}3.0 编写一个程序,要求输入三个整数值a,b,c,把c中的值赋给b, 把b中的值赋给a, 把a中的值赋给c,最后输出a,b,c.#include <stdio.h>void main(){int a,b,c,t;printf("输入三个整数值:");scanf("%d,%d,%d",&a,&b,&c);t=a;a=b;b=c;c=t;printf("a=%d,b=%d,c=%d\n",a,b,c);}4.0 编写一个程序,要求输入一个华氏温度,输出对于的摄氏温度。
第三章数据类型和表达式3.1 把数学算式或不等式表示成C++表达式1.2x 2.3.4.5.6.7.0(x(20 8.ax-by≠c9.4x+7y-2=3ab 10.(5同时3x+2≠0 11.age(55或者pay(820 12.place="江苏"同时sex="女" 13.'a'(ch('z'或者'A'(ch('Z'14.s[2]='0'同时(s[1]='x' 或者 s[1]='X')参考解答:1.2*x*(1+x*x/3.0)2.(1+exp(x))/(1-exp(x))3.(-b+sqrt(b*b-4*a*c))/(2*a)4.1/(pow(3,x)*log(2*x+k))5.pow(sin(x+PI/4),3)/(3+pow(cos(x-PI/4),3)) //其中PI常量为3.14159 6.1/7.0*pow((1+exp(x+1)),n)7.x>=0 && x<=208.a*x-b*y!=c9.4*x+7*y-2==3*a*b10.fabs((2*x*x+1)/(3*x+2))<=5 && (3*x+2!=0)11.age>=55 || pay>=82012.place=="江苏" && sex=="女"13.(ch>='a' && ch<='z') || (ch>='A' && ch<='Z')14.s[2]=='0' && (s[1]=='x' || s[1]=='X')3.2 根据题目要求编写程序1.已知一个三角形中三条边的长度分别为a、b和c,试编写一个程序利用计算公式求出三角形的面积,其中s=(a+b+c)/2,假定a、b和c的值由键盘输入,并确保任何两边的长度大于等于第三条边。
第三章顺序结构一、选择题1、以下叙述中错误的是A)C语句必须以分号结束B)复合语句在语法上被看作一条语句C)空语句出现在任何位置都不会影响程序运行D)赋值表达式末尾加分号就构成赋值语句2、以下能正确定义且赋初值的语句是A)int n1=n2=10; B)double c=32;C)float f=f+1.1; D)double x=12.3E2.5;3、设变量x为float型且已赋值,则以下语句中能将x中的数值保留到小数点后两位,并将第三位四舍五入的是A)x=x*100+0.5/100.0; B)x=(x*100+0.5)/100.0;C)x=(int)(x*100+0.5)/100.0; D)x=(x/100+0.5)*100.0;4、以下非法的赋值语句是A)n=(i=2,++i); B)j++; C)++(i+1); D)x+=j;5、以下合法的赋值语句是A)x=y=100 B)d- -; C)x+y; D)c=int(a+b);6、有以下程序main(){ int m,n,p;scanf("m=%dn=%dp=%d",&m,&n,&p);printf("%d%d%d\n",m,n,p);}若想从键盘上输入数据,使变量m中的值为123,n中的值为456, p中的值为789,则正确的输入是A)m=123n=456p=789 B)123,456,789C)m=123,n=456,p=789 D)123 456 7897、有以下程序main(){ int m=0256,n=256;printf("%o %o\n",m,n);}程序运行后的输出结果是A)0256 0400 B)0256 256 C)256 400 D)400 4008、有以下程序{ int a=666,b=888;printf("%d\n",a,b);}程序运行后的输出结果是A)错误信息 B)666 C)888 D)666,8889、有以下程序main( ){int x=102,y=012;printf("%2d,%2d\n",x,y);}执行后输出结果是A)10,01 B)02,12 C)102,10 D)02,1010、有以下程序main(){ int a; char c=10;float f=100.0; double x;a=f/=c*=(x=6.5);printf("%d %d %3.1f %3.1f\n",a,c,f,x);}程序运行后的输出结果是A)1 65 1 6.5 B)1 65 1.5 6.5C)1 65 1.0 6.5 D)2 65 1.5 6.511、设有如下程序段:int x=2002,y=2003;printf("%d\n",(x,y));则以下叙述中正确的是A)输出语句中格式说明符的个数少于输出项的个数,不能正确输出B)运行时产生出错信息C)输出值为2002D)输出值为200312、若有以下程序段int m=0xabc,n=0xabc;m-=n;printf("%X\n",m);执行后输出结果是A)0X0 B)0x0 C)0 D)0XABC13、设有定义:long x=-123456L;则以下能够正确输出变量x值的语句是A)printf("x=%d\n",x); B)printf("x=%ld\n",x);C)printf("x=%8dL\n",x); D)printf("x=%LD\n",x);14、以下程序段的输出结果是int a=1234;printf("%2d\n",a);A)12 B)34 C)1234 D)提示出错、无结果15、若变量已正确说明为float类型,要通过语句scanf("%f %f %f ",&a,&b,&c);给a赋于10.0,b赋予22.0,c赋予33.0,不正确的输入形式是:A)10<回车> 22<回车> 33<回车> B)10.0,22.0,33.0<回车>C)10.0<回车> 22.0 33.0<回车> D)10 22<回车> 33<回车>16、有如下程序main0{ int y=3,x=3,z=1;printf("%d %d\n",(++x,y++),z+2);}运行该程序的输出结果是A)3 4 B)4 2 C)4 3 D)3 317、下列程序执行后的输出结果是(小数点后只写一位)main(){ double d; float f; long l; int i;i=f=1=d=20/3;printf("%d %ld %f %f\n", i,l,f,d);}A)6 6 6.0 6.0 B)6 6 6.7 6.7C)6 6 6.0 6.7 D)6 6 6.7 6.018、以下程序的输出结果是main( ){ int k=17;printf("%d,%o,%x \n",k,k,k);}A)17,021,0x11 B)17,17,17C)17,0x11,021 D)17,21,1119、若有以下定义和语句:int u=010,v=0x10,w=10;printf("%d,%d,%d\n",u,v,w);则输出结果是:A)8,16,10 B)10,10,10 C)8,8,10 D)8,10,1020、请读程序:#includemain(){ int a; float b, c;scanf("%2d%3f%4f",&a,&b,&c);printf("\na=%d, b=%f, c=%f\n", a, b,c);}若运行时从键盘上输入9876543210(表示回车),则上面程序的输出结果是A)a=98, b=765, c=4321B)a=10, b=432, c=8765C)a=98, b=765.000000, c=4321.000000D)a=98, b=765.0, c=4321.021、以下程序的输出结果是# includemain(){ int a=1,b=4,c=2;float x=10..5 , y=4.0 , z;z=(a+b)/c+sqrt((double)y)*1.2/c+x;A)14.000000 B)015.400000 C)13.700000 D)14.90000022、以下程序的输出结果是# includemain(){ int a=2,c=5;printf("a=%%d,b=%%d\n",a,c);}A)a=%2,b=%5 B)a=2,b=5 C)a=%%d,b=%%d D)a=%d,b=%d23、执行下面程序中的输出语句,a的值是main(){ int a;printf("%d\n",(a=3*5,a*4,a+5));}A)65 B)20 C)15 D)10二、填空题:1、以下程序运行后的输出结果是main() { int x=0210; printf("%x\n",x); }2、以下程序运行后的输出结果是main(){ char c; int n=100;float f=10; double x;x=f*=n/=(c=50);}3、以下程序运行时若从键盘输入:10 20 30<回车>。
c语言程序设计第三章答案第三章:运算符与表达式一、算术运算符在C语言中,算术运算符用于在表达式中执行各种数学运算。
常见的算术运算符有加法运算符(+)、减法运算符(-)、乘法运算符(*)和除法运算符(/)等。
1. 加法运算符(+)加法运算符用于将两个操作数相加,并返回它们的和。
例如,表达式a + b将返回a和b的和。
2. 减法运算符(-)减法运算符用于从第一个操作数中减去第二个操作数,并返回它们的差。
例如,表达式a - b将返回a和b的差。
3. 乘法运算符(*)乘法运算符用于将两个操作数相乘,并返回它们的积。
例如,表达式a * b将返回a和b的积。
4. 除法运算符(/)除法运算符用于将第一个操作数除以第二个操作数,并返回它们的商。
例如,表达式a / b将返回a除以b的商。
二、关系运算符关系运算符用于比较两个操作数并返回一个布尔值(真或假)。
常见的关系运算符有大于(>)、小于(<)、大于等于(>=)、小于等于(<=)、等于(==)和不等于(!=)等。
1. 大于运算符(>)大于运算符用于检查第一个操作数是否大于第二个操作数。
如果是,则返回真(1),否则返回假(0)。
例如,表达式a > b将返回真或假。
2. 小于运算符(<)小于运算符用于检查第一个操作数是否小于第二个操作数。
如果是,则返回真(1),否则返回假(0)。
例如,表达式a < b将返回真或假。
3. 大于等于运算符(>=)大于等于运算符用于检查第一个操作数是否大于或等于第二个操作数。
如果是,则返回真(1),否则返回假(0)。
例如,表达式a >= b 将返回真或假。
4. 小于等于运算符(<=)小于等于运算符用于检查第一个操作数是否小于或等于第二个操作数。
如果是,则返回真(1),否则返回假(0)。
例如,表达式a <= b 将返回真或假。
5. 等于运算符(==)等于运算符用于检查两个操作数是否相等。
第三章数据类型、运算符和表达式一、选择题:1、以下选项中,不正确的C 语言浮点型常量是(C)。
A. 160.B. 0.12C. 2e4.2D. 0.02、以下选项中,(D)是不正确的C 语言字符型常量。
A. 'a'B. '\x41'C. '\101'D. "a"3、在C 语言中,字符型数据在计算机内存中,以字符的(C)形式存储。
A. 原码B. 反码C. ASCII 码D. BCD码4、若x、i、j和k都是int型变量,则计算下面表达式后,x的值是(C)。
x=(i=4,j=16,k=32)A. 4B. 16C.32D.525、算术运算符、赋值运算符和关系运算符的运算优先级按从高到低依次为(B)。
A. 算术运算、赋值运算、关系运算B. 算术运算、关系运算、赋值运算C. 关系运算、赋值运算、算术运算D. 关系运算、算术运算、赋值运算6、表达式!x||a==b 等效于(D)。
A. !((x||a)==b)B. !(x||y)==bC. !(x||(a==b))D. (!x)||(a==b)7、设整型变量m,n,a,b,c,d 均为1,执行(m=a>b)&&(n=c>d)后, m,n 的值是(B)。
A. 0,0B. 0,1C. 1,0D. 1,18、设有语句int a=3;,则执行了语句a+=a-=a*=a;后,变量a 的值是(B)。
A. 3B. 0C. 9D. -129、在以下一组运算符中,优先级最低的运算符是(D)。
A. *B. !=C. +D. =10、设整型变量i 值为2,表达式(++i)+(++i)+(++i)的结果是(B)。
A. 6B. 12C. 15D. 表达式出错11、若已定义x 和y为double 类型,则表达式x=1,y=x+3/2 的值是(C)。
A. 1B. 2C. 2.0D. 2.512、设a=1,b=2,c=3,d=4,则表达式:a<b? a : c<d? a : d的结果为(D)。
第三章计习题解答3.1 用C语言描述下列命题。
(1) a小于b或小于c。
(2) a和b都大于c。
(3) a和b中有一个小于c。
(4) a是非正整数。
(5) a是奇数。
(6) a不能被b整除。
(7) 角A在第一或第三象限。
(8) a是一个带小数的正数,而b是一个带小数的负数。
[解答](1)a<b || a<c(2)a>c && b>c(3)a<c && b>=c || a>=c && b<c(4)a==(int)a && a<=0(5)a%2==1(6)a%b!=0(7)0<fmod(A,2*PI) && fmod(A,2*PI)<PI/2 || PI<fmod(A,2*PI) && fmod(A,2*PI)<3*PI/2(其中PI=3.14159265为圆周率)(8)a-(int)a>0 && b-(int)b<03.2 写出下列表达式的值。
(1) 1<4 && 4<7(2) 1<4 && 7<4(3) !(2<=5)(4) !(1<3)||(2<5)(5) !(4<=6) && (3<=7)[解答](1) 1 (2) 0 (3) 0 (4) 1 (5) 03.3 若x=3,y=z=4,求下列表达式的值。
(1) (z>=y>=x)? 1:0(2) z>=y && y>=x[解答](1) 0 (2) 13.4 若x=3,y=2,z=1,求下列表达式的值。
(1) x<y? y:x(2) x<y? x++:y++(3) z+=(x<y?x++:y++)[解答](1) 3 (2) 2 (3) 33.5 写出下面程序段的输出结果。
第三章习题答案一、选择题(带**号的题选作)1) 以下叙述中正确的是()A) C语言的基本组成单位是语句B) C程序中的每一行只能写一条语句C) 简单C语句必须以分号结束D)C语句必须在一行内完成2)下列叙述中错误的是A)计算机不能直接执行用C语言编写的源程序B)C程序经C编译程序编译后,生成后缀为.obj的文件是一个二进制文件C) 后缀为.obj的文件,经连接程序生成后缀为.exe的文件是一个二进制文件 D)后缀为.obj和.exe的二进制文件都可以直接运行3) 计算机能直接执行的程序是()A)源程序 B)目标程序 C)汇编程序 D)可执行程序4)以下叙述中错误的是A)C语言是一种结构化程序设计语言B)结构化程序有顺序、分支、循环三种基本结构组成C)使用三种基本结构构成的程序只能解决简单问题D)结构化程序设计提倡模块化的设计方法5)对于一个正常运行的C程序,以下叙述中正确的是A)程序的执行总是从main函数开始,在main函数结束B)程序的执行总是从程序的第一个函数开始,在main函数结束C)程序的执行总是从main函数开始,在程序的最后一个函数中结束D)程序的执行总是从程序的第一个函数开始,在程序的最后一个函数中结束6)以下叙述中正确的是A)C语言程序将从源程序中第一个函数开始执行B)可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行C)C语言规定必须用main作为主函数名,程序将从此开始执行,在此结束D)main可作为用户标识符,用以命名任意一个函数作为主函数7) 以下关于C语言的叙述中正确的是A) C语言中的注释不可以夹在变量名或关键字的中间B) C语言中的变量可以再使用之前的任何位置进行定义C) 在C语言算术的书写中,运算符两侧的运算数类型必须一致D) C语言的数值常量中夹带空格不影响常量值的正确表示8)以下叙述中错误的是A)C程序在运行过程中所有计算都以二进制方式进行B)C程序在运行过程中所有计算都以十进制方式进行C)所有C程序都需要编译链接无误后才能运行D)C程序中整型变量只能存放整数,实型变量只能存放浮点数9)以下叙述中正确的是A) C程序中的注释只能出现在程序的开始位置和语句的后面B) C程序书写格式严格,要求一行内只能写一个语句C) C程序书写格式自由,一个语句可以写在多行上D) 用C语言编写的程序只能放在一个程序文件中10)C语言源程序名的后缀是A).exe B).C C).obj D).cp11)以下叙述中错误的是A)在程序中凡是以“#”开始的语句行都是预处理命令行B)预处理命令行的最后不能以分号表示结束C)#define MAX是合法的宏定义命令行D)C程序对预处理命令行的处理是在程序执行的过程中进行的12) 以下选项中不能作为C语言合法常量的是 ( )A) ‘cd’ B) 0.1e+6 C) “a” D)‘\011’13)一下选项中,能用作数据常量的是A)o115 B)0118 C)1.5e1.5 D)115L14) 以下选项中不属于字符常量的是A)'C' B)"C" C)'\xCC0' D)'\072' 15)以下合法的字符型常量是A)’\x13’B)’\018’C)”65” D)”\n”16) 以下不合法的字符常量是A)'\018' B)'\”' C) '\\' D) ‘\xcc' 17) 以下不合法的数值常量是A)011 B)1e1 C) 8.0E0.5 D) 0xabcd 18)以下选项中能表示合法常量的是A)整数:1,200 B)实数:1.5E2.0C)字符斜杠:‘\’ D)字符串:"\007"19) C源程序中不能表示的数制是()A) 二进制 B) 八进制 C) 十进制 D) 十六进制20) 以下选项中,合法的一组C语言数值常量是A)028 B)12. C).177 D)0x8A.5e-3 OXa23 4c1.5 10,000-0xf 4.5e0 Oabc 3.e521)以下不合法的用户标识符是A)j2_KEY B)Double C) 4d D) _8_22)一下选项中合法的标识符是A)1_1 B)1-1 C)_11 D)1_ _23) 以下选项中,能用作用户标识符的是A)void B)8_8 C)_0_ D)unsigned 24)按照C语言规定的用户标识符命名规则,不能出现在标识符中的是A)大写字母 B)连接符 C)数字字符 D)下划线25)可在C程序中用做用户标识符的一组标识符是A)and B)Date C)Hi D)case _2007 y-m-d Dr.Tom Bigl26) 以下C语言用户标示符中,不合法的是A)_1 B)AaBc C)a_b D)a--b 27)以下选项中不合法的标识符是A)print B)FOR C)&a D)_00 28)下列定义变量的语句错误的是()。
练习3-1答案一、选择题1.在C语言库函数中,可以输出double型变量x值的函数是( D )。
A.getchar B.scanf C.putchar D.printf 2.执行语句:printf("The program\'s name is c:\\tools\book.txt");后输出是( D )。
A.The program's name is c:tools book.txtB.The program's name is c:\tools book.txtC.The program's name is c:\\tools book.txtD.The program's name is c:\toolook.txt3.以下程序的输出结果是( D )。
(注:□表示空格)main(){printf("\n*s1=%15s*", "chinabeijing");printf("\n*s2=%-5s*", "chi");}A.*s1=chinabeijing□□□* B.*s1=chinabeijing□□□*s2=**chi* *s2=chi□□*C.*s1=*□□chinabeijing* D.*s1=□□□chinabeijing* *s2=□□chi* *s2=chi□□*4.选择程序的运行结果,①是( B )、②是( B )、③是( D )、④是( C )。
#include<stdio.h>main(){int a=-10, b=-3;printf("%d\n", a%b); /*输出①*/printf("%d\n", a/b*b); /*输出②*/printf("%d\n", -a%b); /*输出③*/printf("%d\n", a-=b+++1); /*输出④*/}①A.-2 B.-1 C.0 D.1②A.-10 B.-9 C.-8 D.0③A.-2 B.-1 C.0 D.1④A.-10 B.-9 C.-8 D.-75.以下C程序正确的运行结果是( D )。
练习3-1答案一、选择题1.在C语言库函数中,可以输出double型变量x值的函数是( D )。
A.getchar B.scanf C.putchar D.printf 2.执行语句:printf("The program\'s name is c:\\tools\book.txt");后输出是( D )。
A.The program's name is c:tools book.txtB.The program's name is c:\tools book.txtC.The program's name is c:\\tools book.txtD.The program's name is c:\toolook.txt3.以下程序的输出结果是( D )。
(注:□表示空格)main(){printf("\n*s1=%15s*", "chinabeijing");printf("\n*s2=%-5s*", "chi");}A.*s1=chinabeijing□□□* B.*s1=chinabeijing□□□*s2=**chi* *s2=chi□□*C.*s1=*□□chinabeijing* D.*s1=□□□chinabeijing* *s2=□□chi* *s2=chi□□*4.选择程序的运行结果,①是( B )、②是( B )、③是( D )、④是( C )。
#include<stdio.h>main(){int a=-10, b=-3;printf("%d\n", a%b); /*输出①*/printf("%d\n", a/b*b); /*输出②*/printf("%d\n", -a%b); /*输出③*/printf("%d\n", a-=b+++1); /*输出④*/}①A.-2 B.-1 C.0 D.1②A.-10 B.-9 C.-8 D.0③A.-2 B.-1 C.0 D.1④A.-10 B.-9 C.-8 D.-75.以下C程序正确的运行结果是( D )。
(注:□表示空格)main(){int y=2456;printf("y=%3o\n", y);printf("y=%8o\n", y);printf("y=%#8o\n", y);}A.y=□□□2456 B.y=□□□4630y=□□□□□□□□2456 y=□□□□□□□□4630y=#########2456 y=#########4630C.y=2456 D.y=4630y=□□□□2456 y=□□□□4630y=□□□02456 y=□□□04630二、填空题6.以下程序的输出结果为( i:dec=-4, otc=177774, hex=fffc, unsigned=65532 )。
main(){short i;i=-4;printf("\ni:dec=%d, otc=%o, hex=%x, unsigned=%u\n", i, i, i, i);}7.以下程序的输出结果为( c:dec=120, oct=170, hex=78, ASCII=x )。
main(){char c='x';printf("c:dec=%d, oct=%o, hex=%x, ASCII=%c\n", c, c, c, c);}8.已有定义int d=-2;,执行以下语句后的输出结果是:( *d(1)=-2*d(2)=□-2*d(3)=-2□**d(4)=177776*d(5)=□177776*d(6)=177776□**d(4)=fffe*d(5)=□□fffe*d(6)=ffffe□□* )。
(注:□表示空格)printf("*d(1)=%d*d(2)=%3d*d(3)=%-3d*\n", d, d, d, d);printf("*d(4)=%o*d(5)=%7o*d(6)=%-7o*\n", d, d, d, d);printf("*d(4)=%x*d(5)=%6x*d(6)=%-6x*\n", d, d, d, d);9.以下程序的输出结果是:( a=374 a=0374a=fc a=0xfc )。
#include<stdio.h>main(){int a=252;printf("a=%o a=%#o\n", a, a);printf("a=%x a=%#x\n", a, a);}练习3-2答案选择题1.已知:int x, y, z, w;,为使以下语句的输出为:1234+123+12+1,正确的输入形式应当为( C )。
scanf("%4d-%3d-%2d-%1d", &x, &y, &z, &w);printf("%4d+%3d+%2d+%1d\n", x, y, z, w);A.1234123121 B.1234 123 12 1 C.1234-123-12-1 D.1234+123+12+1 2.已知:int x; float y;,所用的scanf调用语句格式为:scanf("x=%d, y=%f", &x, &y);为了将数据10和66.6分别赋给x和y,正确的输入应当使( A )。
A.x=10, y=66.6<回车> B.10,66.6<回车>C.10<回车>66.6<回车> D.x=10<回车>y=66.6<回车>3.已知:int x, y; double z;,以下语句中错误的函数调用是( D )。
A.scanf("%d,%x,%1e", &x, &y, &z); B.scanf("%2d*%d%1f", &x, &y, &z);C.scanf("%x%*d%o", &x, &y); D.scanf("%x%o%6.2f", &x, &y, &z); 4.已有如下定义和输入语句,若要求a1、a2、c1、c2的值分别为10、20、A和B,当从第一列开始输入数据时,正确的数据输入方式是( AC )。
(注:□表示空格,<CR>表示回车)int a1, a2; char c1, c2;scanf("%d%c%d%c", &a1, &c1, &a2, &c2);A.10A□20B<CR> B.10□A□20B<CR>C.10A20B<CR> D.10A20□B<CR>5.已有定义int x; float y;,且执行scanf("%3d%f", &x, &y);语句时,输入数据12345□678<CR>,则x的值为( ①B ),y的值为( ②B )。
(注:□表示空格)①A.12345 B.123 C.45 D.345②A.无定义B.45.000000 C.678.000000 D.123.000000 6.阅读以下程序,当输入数据的形式为:25,13,10<CR>,正确的输出结果为( D )。
main(){int x, y, z;scanf("%d%d%d", &x, &y, &z);printf("x+y+z=%d\n", x+y+z);}A.x+y+z=48 B.x+y+z=35 C.x+z=35 D.不确定值7.根据题目中已经给出的数据的输入和输出形式,程序中输入输出语句的正确内容是( B )。
main(){int x;float y;printf("enter x, y: ");输入语句输出语句}输入形式:enter x, y: 2<CR>3.4输出形式:x+y=5.40A.scanf("%d,%f", &x, &y); B.scanf("%d%f", &x, &y);printf("\nx+y=%4.2f", x+y); printf("\nx+y=%4.2f", x+y); C.scanf("%d%f", &x, &y); D.scanf("%d%3.1f", &x, &y);printf("\nx+y=%6.1f", x+y); printf("\nx+y=%4.2f", x+y);。