T C语言程序设计复习题
判断题:
?C语言编写的源程序经过编译、连接后,如果没有错误,则运行结果一定正确。(×)不一定正确
?在C语言中,变量是不区分大小写的,如:a 和A是同一个变量。(×)
?double类型数据的输入必须用格式“%lf”。(√)
?while和do-while循环,肯定是可以相互替换的。(√)×
?若有定义int a = 2,则语句printf(“%d”,a++); 的输出结果为3。(×)2
?在循环体中,使用continue语句,可以跳出该循环。(×)结束本次循环
?表达式3 * 5 / 2 和表达式3 / 2 * 5的值相等。(×)
?任何变量都必须要定义其类型。(√)
?表达式(double)(1/2)的值为0.5。(×)
?若有定义int a=0,b; 执行语句if(a=0) b=0; else b=1; 后,b的值是1。(×)√
?C语言中用于结构化程序设计的三种基本结构是if、switch、break。(×)顺序,选择,循环
?设有如下定义:int a=1,b=2,c=3,d=4,m=2,n=2;则计算表达式:(m=a>b)&&(n=c>d)后,n 的值为2。(√)
?在可执行的C语言程序中有且只有一个主函数main(),并且应该写在程序的最前面。
(×)任意位置
?若有int x,则(x+1)++是一个合法的c语言表达式。(×)
?设int x = 7,y = 5,则x *= y - 3后,x的值为14。(√)
?如果i的原值为3,则执行语句:j = i++;后,j的值为3。(√)
?do-while语句先执行循环体,后判断循环条件,所以循环体至少会执行一次。(√)?表达式4.0 *(1 / 2) 的值为2.0。(×)0
?‘\n’是一个字符常量。(√)
?表达式 3.5%2 是合法的C语言表达式。(×)%运算符两侧必须要是整数
?C的任何类型数据在计算机内部都是以二进制形式存储的。(√)
?定义函数时,必须要有形参和返回值。(×)可以没有返回值
?在C程序中,main函数和自定义的函数都可以有多个。(×)main只能有一个
?语句return(a,b);则函数可以返回两个值。(×)
?传值调用时,在函数中形参变量值改变后,不改变实参变量的值。(√)
?构成数组的各个元素的数据类型不一定要相同。(×)必须要相同
?有定义:int a[5]={10,11,12,13,14},*p=a;,语句printf(“%d”,*p++);的输出结果为11。
(×)10
?在 C 程序中 , 函数既可以嵌套定义 , 也可以嵌套调用。(×)函数不可以嵌套定义
?传值调用的形参只有在被调用时,才被创建(分配存储单元)。(√)
?在C程序中,若对函数类型未加说明,则函数的隐含类型为void。(×)int
?若a为一维数组名,则*(a+i)与a[i]等价。(√)
?C文件使用前需要打开,使用后需要关闭。(√)
?定义为void类型的函数,其含义是调用函数后,被调用的函数的返回值为任意的类型。
(×)
?C语言程序中,若实参是变量,当调用函数时实参和形参各占一个独立的存储单元。
(√)
?在C语言中,所有函数之间都可以相互调用。(×)主函数不可以调用
?若有定义char s1[]=”Hello”,s2[]=”world!”,则strlen(s1) + strlen(s2) 等于strlen(strcat(s1,s2))。(×)√
?若有定义int a,*p=&a,*q=p;则p指向a,q指向p。(×)
?若有定义int a,*p=&a; char *t;由于指针的数据类型实际上是指定指针所能指向对象的数据类型,所以不能将p赋给t。(×)√
?若fp是指向某文件的指针,且已读到该文件的末尾,则C语言函数feof(fp)的返回值是0。(√)×
?在使用fopen()函数时必须先定义一个类型为FILE的文件指针。(√)
?void类型的函数一定无形参。(×)
?数组元素的下标必须是整数,不能用实数。(√)
?若有定义语句“int a[10];”则a[10-9/2] 是合法的数组元素。(√)
?若有定义语句“int a[10],i=2;”,则&a[i]与a+i等价。(√)
?数组定义语句“char c[ ]= "Hello";”与“char c[ ]={‘H’,’e’,’l’,’l’,’o’};”
等价。(√)× 与char c[]={‘H’,’e’,’l’,’l’,’o’,'\0'}等价
?语句“double *p=&x,x;”使指针变量p指向变量x。(×)指向变量X的地址
?C语言规定,实参应与其对应的形参类型一致。(√)
?系统判断字符串结束的标志是’\n’。(×)'\0'
?若打开文件的方式为“w”而该文件已经存在,则文件中原有数据被清空。(×)√
单选题:
?能够把由高级语言编写的源程序翻译成目标程序的系统软件叫( B)
A. 源程序
B.编译程序
C. 汇编程序
D. 解释程序
?下列结构中,不属于结构化程序设计中的3种结构的是( D )
A.循环结构
B.顺序结构
C.选择结构
D.网状结构
?程序中调用了库函数exit(0),必须包含头文件( B )
A.string.h
B.stdlib.h
C.ctype.h
D.math.h
?x、y是整型变量,执行语句scanf("x=%d, y=%d", &x, &y);使x和y的值分别为7和9,正确的输入是( C)
A. 7 9
B. 7, 9
C. x=7, y=9
D. x=7 y=9
?条件“-6≤x≤4”,对应的C逻辑表达式是( D )
A. x>=-6 and x<=4
B. -6<=x<=4
C. x>=-6 || x<=4
D. x>=-6 && x<=4
?假设变量x、k都已定义,下列语句片段中,无语法错误的是( B)
A. switch(x) X应为常量或字符
{ case x>=80:putchar(…A?); case后面应该跟常量表达式
case x<70: putchar(…E?);
}
B. switch(x) {
case 2+4: k=‘A’;
defualt: k=‘E’;
case 3*5: k=‘B’;
}
C. switch(x){
case 3+x: k=x-2;
case 5*x: k=x+3;
default: k=0;
}
D. switch(x){
case 4.5: k=0.5*x; case后面应该跟常量表达式
case 6.8: k=8*x;
default: k=0;
}
?判断下面的while循环体的执行次数( D )
i=5;
k=10;
while(i=1) i=k--;
A. B.10次 C.2次 D.无数次
?能正确地定义符号常量的是( B )
A.#define n=6 B.#define n 6 C.#define n 6; D. #DEFINE N 10
?若有定义语句“char c=‘\134’;”则变量c ( A )
A. 包含1个字符
B. 包含2个字符
C. 包含3个字符
D. 包含4个字符?设x和y均为int型变量,则语句“x+=y;y=x-y;x-=y;”的功能是( D )A.把x和y按从小到大排列 B.把x和y按从大到小排列
C.无确定结果 D.交换x和y中的值X=X+Y Y=X-Y X=X-Y ?下列运算符中,优先级最低的是( D )
A. ?:
B.&&
C./=
D. ,
?若有条件表达式“x?a++:b--”,则以下表达式中( B )等价于表达式x A.x==0 B.x!=0 C.x==1 D.x!=1
?以下关于switch语句和break语句的描述,只有( C )是正确的A.在switch语句中必须使用break语句
B.break 语句只能用于switch语句中
C.在switch语句中,可以根据需要使用或不使用break语句
D.break语句是switch语句的一部分
?以下程序段的循环次数是( D )A
for (i=3; i==0; ) printf(“%d”, i--) ;
A. 0次
B. 3次
C. 2次
D. 无数次
?while(scanf(“%f”,&n),n<=0);下列描述正确的是( C )A
A.当输入n>0的值时循环终止
B. 当输入n<=0的值时循环终止
C.scanf(“%f”,&n),n<=0不能充当循环条件
D. 循环体不能为空
?以下不正确的C语言标识符是( C )。
A._next B.a_1_2 C.f(x,y) D.Prog
?若有定义:int k=2,x;则能使变量x的值为3的表达式是( B )。
A.x=5/k+0.5
B.x=5/k+1;
C.x=x+k
D.x=2*k--
?设char c=‘y’;,表达式c>=…a?&&c<=…z?|| c>=…A?&&c<=…Z?的值为( B )
?若有定义int a=1,b=2,c=3;在下列选项中,不正确的赋值语句是( D )。
A. a++;
B. a=b=c=0;
C. a=b==c;
D. a=b+c=1;
?判断下面的while循环体的执行次数( D )。
k=10,s=0;
while( k>=0 ) s+=k--;
A. 0次
B. 1次
C. 10次
D. 11次
?设整型变量a为9,使b不为4的表达式是( B )。
A. b=a/2
B. b= (--a)-5
C. b=a>3?4:5
D. b=a%5
?循环语句 for(x=0,y=0;(y!=123)||(x<4);x++);执行( A )。
A. 无限次
B. 4次
C.3次
D. 0次
?若有定义:int a=8,b=5,c;,则执行语句c=a/b+0.4;后,c的值为( B )。
A.1.4 B.1 C.2 D.2.2
?已知int x=10,y=20,z=30;,执行if(x>y)z=x; x=y; y=z;后x,y,z的值是( B )。
A. 10,20,30
B. 20,30,30
C. 20,30,10
D. 20,30,20
?为了避免在嵌套的条件语句if-else中产生二义性,C语言规定:else子句总是与( B )配对。
A. 缩排位置相同的if
B. 其之前最近的没有else配对的if
C. 其之后最近的if
D. 同一行上的if
?下列各m的值中,能使表达式m%3==2&&m%5==3&&m%7==2值为1的是( A )。
A. 23
B. 17
C. 8
D. 6
?以下4个选项中,不能看作一条语句的是( D )。
A. ;
B. a=0,b=0,c=0;
C. while(i--);
D. if(b==0) m=1;n=2;
?逻辑运算符两侧运算对象的数据类型( D )。
A. 只能是0或1
B. 只能是0或非0正数
C. 只能是整型或字符型数据
D. 可以是任何类型数据
?以下程序段输出结果是( C )。
int x=3;
do { printf(“%3d”,x-=2);
}while(!(--x));
A.1 B. 3 0 C. 1 -2 D.死循环
?有定义”int a=5;”, 语句”a+=a-=a+a;”, 执行后,变量a的值为( C )。
A. 10
B. 5
C. -10
D. -5
?下列各语句中,能够将变量u、s中最大值赋给变量t的是( A )。C
A. if(u>s)t=u;t=s;
B. t=u;if(u>s)t=s;
C. t=s;if(u>s)t=u;
D. if(u>s)t=s;else t=u;
?下列可以正确表示字符型常量的是( B )。
A.“a”
B.’\t’
C.”\n”
D.18
?执行x=(6*7%8+9)/3;后,x的值为( C )。
?设int a=3,b=6,c=9;,下列表达式中值为0的是( D )。
A. 2*a<=b
B. a&&b
C. (3*a-c)||b
D. b-a ?下列语句中,哪一个可以输出26个大写英文字母( D )。 A.for(a=‘A’;a<=…Z?;printf("%c",++a)); B.for(a=‘A’;a<…Z?;a++)printf("%c",a); C.for(a=‘A’;a<…Z?;printf("%c",++a)); D.for(a=‘A’;a<=…Z?;printf("%c",a++)); ?下列( C )是c语言中的常量。 A. e+2 B. 068 C. …\x41? D. π ?下列( C )表达式的值等于0。 A. 2%5 B. 1/2.0 C. 10>5>3 D. !(…a?-97) ?设有定义double x=2.4, y=3.56;,则表达式(int)x+y的值为( A )。 A. 5.56 B. 5.4 C. 5 D. 6 ?设有语句int n=10,i=4;,则语句 n%=i+1;执行后,n的值是( A )。 A. 0 B. 1 C. 2 D. 3 ?下列语句将大写字母转换为小写字母,其它字符不变,其中正确的是 ( B )。 A.if(ch>=…A?||ch<=…Z?)ch=ch+32; B.if(ch>=…A?&&ch<=…Z?)ch=ch+32; C.ch=(ch>=…A?&&ch<=…Z?)?ch+32: … …; D.ch=(ch>…A?&&ch<…Z?)?ch+32:ch; ?设有定义int a=0,b=0,t;,则执行语句:t = a++&&++b;后,a和b的值是( C )。 A. a=0,b=0 B. a=0,b=1 C. a=1,b=0 D. a=1,b=1 ?若有int i;,执行语句for(i=1;i++<4; );后变量i的值是( C)。 A.3 B.4 C.5 D.不确定 ?程序段int n=10; while (n>7) { n--;printf("%d ",n);}的输出结果是( D )。 A.10 9 B.9 8 C.10 9 8 D.9 8 7 ?执行下面程序段,若从键盘输入33后,其输出结果是( B )。 int x; scanf(“%d”,&x); if(x>60) printf(“%d”,x); else if(x>30) printf(“%d”,x); else if(x>20) printf(“%d”,x); A.333333 B.3333 C.33 D.33 33 33 ?设有函数调用语句: m=max(a , max(b,c)); 则函数max有( C )个实参 A. 1 B. 4 C. 2 D. 0 ?程序中调用了库函数strlen,必须包含头文件( D )。 A.stdlib.h B.math.h C.ctype.h D.string.h ?下列数组s中所存放字符串的长度为( C )。 char s[]="a\127b\\\tcd\xdg\n"; A.9 B.10 C.11 D.18 ?下列能正确定义一维数组a的语句是( D )。 A.int a(20); B.int n=20,a[n]; C.int n;scanf("%d",&n); D.#define n 20 int a[n]; int a[n]; ?若有 int a[8]={1,9,8,0,4,2,5,3};则数值为2的表达式是( D )。 A.*a B.a[6] C.*a+1 D.*(a+1)+5 ?下列程序段的运行结果为( B )。 char s[]="mn\0gy"; printf("%s",s); A.mn0 B.mn C.Mngy D.mn gy ?若有定义char s[8]="broke",*ps=s;则不能代表字符k的表达式是( A)。A.ps+3 B.s[3] C.ps[3] D.*(ps+3) ?下面的程序段中循环体执行次数( B )。 char a[5],*t="Boy",*s=t; int i=0; while( *s!=‘\0’ ) { a[i]=*s; s++;} A、4次 B、3次 C、0次 D、无数次 ?对变量定义及初始化为:FILE *p=fopen("d:\\aa.txt","r"); int x; float a; char s;能正确的将文件中的整数、实数、字符输入到各变量的是 ( B )。 A、fgets(x,a,s,p); B、fprintf(p,”%d,%f,%c”,x,a,s); C、fgetc(x,a,s,p); D、fscanf(p,”%d,%f,%c”,&x,&a,&s); ?函数定义如下: void fun(int x, int y, int *a, int *b) { *a=x+y; *b=x*y; } 能够正确调用fun函数的是( B )。其中m、n是已经定义过的int型变量。 A、fun(5,8,m,n); B、fun(5,8,&m,&n); C、fun(5,8,*m,*n); D、fun(m,n,5,8); ?定义char s[4]={"Max"},t; 执行下面语句段后输出结果是( B )。 t=s[0];s[0]=s[2];s[2]=t; printf("%s \n", s); A、Max B、xaM C、axM D、 xMa ?以下叙述不正确的是( B )。 A. main函数在C语言中必须有且只有一个 B.C程序的执行从main函数开始,所以main函数必须放在程序最前面 C. 函数可以带参数,也可以不带参数 D. 每个函数执行时,按函数体中语句的先后次序,依次执行每条语句 ?在C程序中,若对函数返回类型未加说明,则函数的隐含类型为( A )。A.int B.double C.void D.char ?有一个函数调用f( (1,2), 3*4 ),则此次调用的是下面哪个函数f ( B )? ?void f (int a); ?void f (int a, int b); ?void f (int a, int b, int c); ?void f (int a, int b, int c,int d); ?若有定义语句“int a[10];”则下列对a中数组元素正确引用的是( C)。A.a[10] B.a[2.5] C.a[5%2] D.a[5+6] ?下列哪个语句存在语法错误( C )? A. char c = ‘A’; B. char c[] = "A"; C. char c = ‘AB’; D. char c[] = "AB"; ?已知”char s[] = “ab\0cd”;”,则数组s的长度为(),s所存放 的字符串的长度为( B )。 A.6和 5 B. 6和2 C. 5和2 D. 5和5 ?若有说明:int i,j=1,*p=&i;则与i=j;等价的语句是( D )。 A.i=*p; B.*p=j; C.i=&j; D.p=&j; ?有数组定义语句“char a[20];”,则正确的输入语句为( D )。 A.scanf("%s",&a); B.scanf("%s", a[]); C.gets(a[20]); D.gets(a) ; ?p和q同为指向int类型的指针,则下面哪个表达式会导致语法错误?( B) A.p+q B.p-q C.p=q D.p==q ?下列语句定义p为指向double型变量x的指针,其中正确的是( B)。A.double x,*p=*x; B.double x,*p=&x; C.double *p=&x, x; D.double x; int *p; p=&x; ?已定义以下函数:int fun(int *p){ return *p;},fun函数返回值是 ( B)。 A.不确定的值 B.形参p中存放的值 C.一个整数 D.形参p的地址值 ?下面程序的运行结果为( A )。 int a[] = {1,2,3,4}, *p=a; printf("%d ", *p++);!!!!! printf("%d ", *p); A.1 2 B.1 1 C.2 3 D.2 2 ?若有定义:char str[]=“ABCD”,*p=str;则语句printf(“%d\n”,*(p+4));的输出结果是( B )(已知’A’的ASCII码为65)。 A.68 B.0 C.字符D的地址 D.不确定的值 ?下面( B )语句是从文件中读取一个字符。 A.ch=getc(); B.fputc(ch,fp); C.fscanf(fp,"%c",&ch); D.scanf("%c",&ch); ?以“只读”方式打开文本文件c:\1.txt,下列语句中哪一个是正确的( B )。A. fp=fopen("c:\\1.txt","a"); B. fp=fopen("c:\\1.txt","r"); C. fp=fopen("c:\1.txt","wb"); D. fp=fopen("c:\1.txt","r"); ?已知数组的初始化语句为:int a[10] = {1,2,3,4,5}; 则表达式a[5]的值为( D)。 A. 5 B. 1 C. 不确定的值 D. 0 ?表达式“c=*p++”的执行过程是( A )。 A.复制*p的值给c后再执行p++ B.复制*p的值给c后再执行(*p)++ C.复制p的值给c后再执行p++ D.执行p++后将*p的值复制给c ?变量的指针,其含义是指该变量的( B)。 A.值 B.地址 C.名字 D.一个标志 ?若有定义:char s[] = "HappyNewYear"; 则下面那条语句能输出字符’N’( D )? A. printf(“%s”, s+5); B. printf(“%c”, s+5); C. printf(“%s”, *(s+5)); D. printf(“%c”, *(s+5)); ?C语言中函数返回值的类型是由( C )决定的。 A.调用该函数的主调函数类型 B.return语句中的表达式类型 C.定义函数时所指定的返回函数值类型 D.调用函数时临时 ?以下正确的函数说明是( A )。 A.int fun(int , int); B.int fun(int x,y); C.int fun(x,y); D.int fun(int x; int y); ?在C语言中,下面关于数组的描述正确的是( C )。 A.数组的大小是固定的,但可以有不同类型的数组元素 B.数组的大小是可变的,但所有数组元素的类型必须相同 C.数组的大小是固定的,所有数组元素的类型必须相同 D.数组的大小是可变的,可以有不同的类型的数组元素 ?假定int类型变量占用4个字节,有定义:int x[10]={0,2,4};,则数组x 在内存中所占字节数是( D )。 A.3 B.12 C.10 D.40 ?下列程序段执行后,s的值是( A)。 S=1 s=10+2 s=120+3 ? char ch[]="123"; int i,s=0; for(i=0;ch[i]>=…0?&&ch[i]<=…9?;i++) s=10*s+ch[i]-?0?;为 A.123 B.1 C.3 D.6 ?要将20,30,40,50 存入数组b中, 下列正确的程序段是( A )。 A.int i,b[4]; for (i=0; i<4; i++) b[i]=(i+2)*10; B.int b[4]; b={20,30,40,50}; C.int b[4]; b[1]=20,b[2]=30,b[3]=40,b[4]=50; D.int b[4]; b[4]={20,30,40,50}; ?设已有定义:char *st="how are you";下列程序段中正确的是( A )。A.char a[12], *p=a+1; strcpy(p,st+4); B.char a[12]; strcpy(++a, st); C.char a[12],*p;strcpy(p, st); D.char a[], *p=a+1;strcpy(p,&st[4]); ?若已有定义 char str[10]; 要将键盘输入的字符串"a pear" 赋给str,应使用( B )。 A.scanf("%s",str); B.gets(str); C.str="a pear"; D.getchar(str); ?若int a=1,b=2,*pa=&a,*pb=&b;,执行语句 *pa*=3;b*=2;printf(“%d,%d”,*pa,*pb);后输出( D )。 A.1,2 B.1,4 C.3,2 D.3,4 ?若有int a=100,b=200,t,*temp,*pa=&a,*pb=&b;则下列各语句组中,不能实现变量a,b值互换的是( B )。 A.t=a; a=b; b=t; B.t=*pa;*pa=*pb;*pb=t; C.temp=pa;pa=pb;pb=temp; D.a=a+b; b=a-b; a=a-b; ?已知有语句FILE *fp; int x=123; fp=fopen("out.dat","w");,如果需要将变量x的值以文本形式保存到磁盘文件out.dat中,则以下函数调用形式中,正确的是(B )。 A.fprintf("%d",x); B.fprintf(fp,"%d",x); C.fprintf("%d",x,fp); D.fprintf("out.dat","%d",x); ?以下正确的函数定义是( D)。 A.double fun(int x, int y) B.double fun(int x,y) { z=x+y ; return z ; } { int z ; return z ;} C.fun (x,y) D.double fun (int x, int y) { int x, y ; double z ; { double z ; z=x+y ; return z ; } z=x/y; return z ; } ?设有定义语句char s[ ]="abcDE";,则s[5]的值是( C)。 A.未知字符 B.’0’ C.’\0’ D.’E’ ?当调用函数时,实参是一个数组名,则向函数传送的是( B)。 A.数组的长度 B.数组的首地址 C.数组每一个元素的地址 D.数组每个元素中的值 ?能对一维数组正确初始化的语句是( C )。 A.int a[5]={0,1,2,3,4,5}; B.int a[5]={}; C.int a[5]={10}; D.int a[5]={1,……,5}; ?下面程序段的输出结果是( A )。 char a[10]= "abcd"; char b[4]= "ABC"; strcat(a,b); printf(“%s”,a); A.abcdABC B.abcd C.ABC D.ABCabcd ?设有下列定义 char s[ ]="12345", *p=s;则下列表达式中错误的是( C )。 A.*(p+1) B.*(s+2) C.p="ABC " D.s="ABC " ?设有如下定义: int a[]={1,3,5,7,9};int *p; 则下列程序段的输出结果为( A )。 p=a; *(p+2)+=2; printf (“%d,%d\n”,*p,*(p+2)); A.1,7 B.1,5 C.5,9 D.3,7 ?判断字符串s1与s2是否相等,应当使用的语句是( D )。 A.if(s1= =s2) B.if(s1=s2) C.if(s1[]= =s2[]) D.if(strcmp(s1,s2)= =0) 程序阅读题: 说明:阅读下列程序,在每小题提供的程序运行结果若干可选答案中,挑选一个正确答案。 #include void main() { int n; for(n=1;n<=10;n++) { if(n%3==0) break; printf("%d",n); } } A. 1 2 B.369 C. 12457810 D. 12345678910 #include void main() { int i,n; scanf("%d",&n); //输入24 i=2; while(n>1) if(n%i==0){ printf("%d\t",i); n/=i; } else i++; printf("\n"); } A. 2 2 6 1 B. 2 3 4 1 C. 3 2 2 2 D. 2 2 2 3 ?#include void main() { int i, m=15, y = -1; for(i=2; i<=m/2;i++) if (m%i==0) y=0; else y=1; printf("%d##",y); } A. 1## B.2## C. 0## D.3## ?#include void main() { int j,k,s1,s2; s1=s2=0; for(j=1;j<=5;j++){ s1++; for(k=1;k<=j;k++) s2++; } printf("%d %d", s1, s2); } A. 5 5 B.5 6 C.5 15 D. 5 21 ?#include "stdio.h" void main() C { int a; float b,c; scanf("%2d%3f%4f",&a,&b,&c); //输入12345654321 printf("a=%d,b=%.1f,c=%.1f\n",a,b,c); } A.a=12,b=345,c=6543 B.a=12,b=123,c=1234 C.a=12,b=345.0,c=6543.0 D.a=12.0,b=345.0,c=6543.0 ?#include void main() D { char grade; scanf("%c", &grade); // 输入 B switch(grade) { case ‘A’: printf(">=85"); case ‘B’: case ‘C’: printf(">=60"); case ‘D’: printf("<60"); default: printf("error.");} } A. >=85>=60<60 B. >=60<60 C.>=60 D. >=60<60error. ?#include void main() B { int a,b; for(a=1,b=1;a<100;a++) { if(b>=20) break; if(b%3==1){ b+=3;continue; } b-=5; } printf("%d\n",a); } A.7 B.8 C.9 D.10 ?#include void main() D { int i,j,k,a=3,b=2; i= (--a==b++)?--a:++b; j=a++; k=b; printf("i=%d,j=%d,k=%d\n",i,j,k); } A. i=1,j=1,k=3 B. i=1,j=1,k=2 C. i=4,j=2,k=4 D. i=2,j=1,k=3 ?#include void main( ) B { int a=1,b=0; do { switch(a) { case 1: b=1;break; case 2: b=2; break; default : b=0; } b=a+b; }while(b==0); printf("a=%d,b=%d \n",a,b); } A. a=1,b=3 B. a=1,b=2 C. a=1,b=1 D. a=1,b=0 ?#include void main() C { int i,a,b; for(a=10;a<=20;a++) { b=1; for(i=2;i<=a/2;i++) if(a%i==0) { b=0; break; } if(b==1) printf("%d ", a); } } A. 10 12 14 16 18 20 B. 11 13 15 17 19 C. 11 13 17 19 D. 10 14 18 ?#include void main() C { int n, sum_p=0, sum_f=0; scanf(“%d”, &n); while(n != -1){ if(n>=60 && n<=100) sum_p++; else if(n>= 0 && n<60) sum_f++; scanf(“%d”, &n); } printf(“%d,%d”, sum_p, sum_f); } 输入数据为23 67 87 98 26 101 -20 19 56 80 -1 A. 5,6 B. 4,5 C. 4,4 D. 5,4 ?#include void main( ) D { int s=0,i,t,flag=1; for(i = 1; i < 5; i++) { t = flag*i*i; 1 -4 9 -16 s += t; flag = -flag; } printf(“%d”, s); } A. 15 B. 10 C. -15 D. -10 ?#include void main(){ int i=0; while(i < 3){ switch(i){ case 0: printf("%d",i); case 1: printf("%d",i); break; case 2: printf("%d",i); break; } i++; } } A. 012 B. 0012 C. 00112 D. 001122 ?#include void main() C { int a=2,b=-1,c=2; if(a if(b<0) c=0; else c++; printf("%d\n",c); } A. 0 B. 1 C. 2 D. 3 ?#include void main() { int i; for(i=1;i<=5;i++) { if(i%2) printf(“*”); i=不为0 执行 else continue; printf(“#”); } printf(“$\n”); } A. *#*#*#$ B. #*#*#*$ C. *#*#$ D. #*#*$ ?#include void main( ) { int i,j,sum,m,n=4; sum=0; for(i=1;i<=n;i++) { m=1; 1+2+6 +24 for(j=1;j<=i;j++) m=m*j; sum=sum+m; } printf(“sum=%d\n”,sum); } A.sum=10 B.sum=24 C. sum=33 D. sum=303 ? #include "stdio.h" A void main() { int j,x=0; for(j=0;j<=3;j++) { if(j%2) continue; x++;} printf("x=%d\n",x); } A.x=2 B.x=4 C.x=3 D.x=1 ?#include void main() { int k; for(k=1; k<5; k++) { if(k%2) printf("#"); else break; printf("*"); } } A.# B.*#*# C、#* D.#*#* ?#include void main() { int x=6, y=5; x+=1/8; x=(++x==y++)? x%3 : x/3; printf("x=%d,y=%d\n",x,y); } A.x=2,y=6 B.x=1,y=5 C.x=2 y=6 D.x=1 y=5 ? #include void main( ) { int k=1,sum=0; do{ k=k*(k+1)/2; sum+=k; }while(sum%7); printf(“sum=%d”,sum); } A.7 B.sum=7 C.7.0 D.sum=7.0 ?下面程序执行后的正确输出项是(D)。 #include void swap1(int a[ ]) { int t; t=a[0]; a[0]=a[1]; a[1]=t; } void swap2(int a,int b) { int t; t=a; a=b; b=t; } void main() { int x[2]={1,5}; int y[2]={1,5}; swap1(x); swap2(y[0],y[1]); printf("x: %d %d\n", x[0],x[1]); printf("y: %d %d\n", y[0],y[1]); } A. x:5 1 B. x:1 5 C. x:1 5 D. x:5 1 y:1 5 y:5 1 y:1 5 y:5 1 ?指出正确的程序是( B )。 程序 (1) 程序 (2) #include void main() void main() { { char *p; char s[80]; double x,y, *p; p=s[0]; x=3.45; p=&x; y=*p; scanf("%s",s); printf("%f\n",y); printf("%s\n",p); } } 程序 (3) 程序 (4) #include void main() void main() { { int x,*p; int *p=&a; *p=x; int a; printf("%d\n",*p); printf("%d\n",*p); } } A.程序 (1) B.程序 (2) C.程序 (3) D.程序 (4) ?下面程序的输出结果是(B)。 #include void ast(int x,int y,int *cp,int *dp) { *cp=x+y; *dp=x-y; x=*cp+*dp; y=*cp-*dp; } void main() { int x,y,c,d; x=7; y=8; ast(x,y,&c,&d); printf("%d,%d,%d,%d\n",x,y,c,d); } A.7,8,0,0 B.7,8,15,-1 C.15,-1,15,-1 D.14,16,0,0 ?下面程序执行时输入:HangZhou China ,则输出结果是(A)。 #include void main() { char c[81]; int i; scanf(“%s”,c); for(i=0;c[i]!=‘\0’;i++) if(c[i]>=…a?&&c[i]<=…z?) c[i]-=32; printf(“%s”,c); } A.HANGZHOU B.HangZhou China C.HangZhou D.HANGZHOU CHINA ?#include void f(char *s,char *t){ for( ; *s!=‘\0’; s++); for( ; *t!=‘\0’ ; s++,t++) *s=*t; *s=‘\0’; } void main(){ char a[80],b[80]; printf(“Plese Input strings:”); gets(a); // 输入Hello, ↙ gets(b); // 输入Everyone!↙ f(a,b); printf("%s\n", a); A.Hello, B.Everyone! C.Everyone!Hello, D.Hello, Everyone! ?#include void main() { int a[6]={5,1,3,7,8,4},i,j,k; for(i=1;i<=3;i++){ k=a[5]; for(j=4;j>=0;j--) a[j+1]=a[j]; a[0]=k; } for(i=0;i<6;i++) printf("%2d",a[i]); printf(“\n”); } A. 4 8 7 3 1 5 B. 5 1 3 7 8 4 C. 7 8 4 5 1 3 D. 5 7 3 1 8 4 ?#include void fun(int a, int b, int *c) { int i,j; i=a%10; a=a/10; j=b%10; b=b/10; *c=a*1000+j*100+i*10+b; } void main() { int x=41,y=28,z=0; fun(x,y,&z); printf("%d,%d,%d\n",x,y,z); } A.41,28,0 B.41,28,4812 C.4,2,0 D. 4,2,4812 ?#include char fun(char *c){ if(*c>=…A? && *c<=…Z?)*c-=…A?-?a?; return *c; } void main(){ char s[81],*p=s; gets(s); while(*p != ‘\0’){ *p=fun(p);putchar(*p);p++;} printf("\n"); 若运行时从键盘输入:OPEN THE DOOR A.oPEN tHEN dOOR B.open then door C.OPEN THEN DOOR D.Open Then Door 程序填空题: 说明:阅读下列程序说明和相应程序,在每小题提供的若干可选答案中,挑选一个正确答案。 ?输入一批以 -1结束的整数,求偶数和。 【程序】 #include void main() { int x, sum; sum=0; scanf("%d", &x); ____(1)_B___ { if(___(2)C___) sum=sum+x; ___(3)_B___; } printf(___C(4)____); } (1) A. while(x == -1) B. while(x!=-1) C. if(x == -1) D. if(x != -1) (2) A. x==2 B. x%2==2 C. x%2==0 D. x/2==0 (3) A. scanf("%d",x) B. scanf("%d", &x) C. sum=0 D. x=sum (4) A."sum=%d , &sum" B."sum=%d ", &sum C."sum=%d ", sum D."sum=%d , sum " ?输入一个正整数n,计算s=1-1/3+1/5-1/7…前n项之和 #include void main() { int denominator, flag, i, n; double item, sum; printf("Enter n:"); scanf("%d",&n); denominator=1; ____(1)__B____; sum=0; for(i=1;____(2)C____;i++){ item=___(3)_D__A_; sum=sum+item; _____(4)_B_____; denominator=denominator+2; } printf("Sum=%.2f\n",sum); } (1) A.flag = 0 B. flag = 1 C.flag = -1 D. flag = -flag (2) A. i (3) A. flag*1.0/denominator; B. -flag*1.0/denominator; C. -flag/denominator; D. flag/denominator; (4) A. flag =1 B. flag = -flag C. flag = -1 D. flag = 0 ?输入1个整数,求各位数字的平方和。例如:输入-123,输出14(即 12+22+32)。 #include void main( ) { int digit,in,s; scanf("%d", &in); ____(1)A____; ____(2)_C___; while(in>0){ ____(3)B____; s=s+digit*digit; ____(4)D____; } printf("sum=%d\n", s); } (1) A. if(in<0)in=-in B. if(in)in=-in C. if(!in)in=-in D. in=-in (2) A. s=1 B. sum=1 C. s=0 D. sum=0 (3) A. digit=in/10 B. digit=in%10 C. digit=in/2 D. digit=in-10 (4) A. in*=10 B. in-- C. in++ D. in/=10 ?【程序说明】输入一行字符(以回车键结束),分别统计出其中的英文字母、空格、数字和其他字符的个数。 C语言程序设计 一、选择题(共40分,每小题2分) 1、以下叙述不正确的是(D) A、一个C源程序可由一个或多个函数组成 B、一个C源程序必须包含一个main函数 C、C程序的基本组成单位是函数 D、在C程序中,注释说明只能位于一条语句的后面 2、下列四个选项中,是不合法的用户标识符的选项是(B) A、abc B、12AC C、sun D、A 3、设有语句inta=4;则执行了语句a+=a-=a*a后,变量a的值是(A) A、-24 B、0 C、4 D、16 4、下列运算符中优先级最高的是(B) A、< B、+ C、&& D、== 5、在C语言中,运算对象必须是整型数的运算符是(A) A、% B、/ C、%和/ D、+ 6、以下关于运算符的优先顺序的描述正确的是(C) A、关系运算符<算术运算符<赋值运算符<逻辑与运算符 B、逻辑与运算符<关系运算符<算术运算符<赋值运算符 C、赋值运算符<逻辑与运算符<关系运算符<算术运算符 D、算术运算符<关系运算符<赋值运算符<逻辑与运算符 7、在C语言中,如果下面的变量都是int类型,则输出的结果是(C) sum=pad=5;pAd=sum++,pAd++,++pAd; printf(“%d\n”,pad); A、7 B、6 C、5 D、4 8、x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,正确的输入语句是(B) A、INPUTx、y、z; B、scanf(“%d%d%d”,&x,&y,&z); C、scanf(“%d%d%d”,x,y,z); D、read(“%d%d%d”,&x,&y,&z); 9、假定从键盘输入23456<回车>,下面程序的输出结果是:(C)voidmain() {intm,n; scanf(“%2d%3d”,&m,&n); printf(“m=%dn=%d\n”,m,n); } A、m=23n=45 B、m=234n=56 C、m=23n=456 D、语句有错误 10、若运行时,给变量x输入12,则以下程序的运行结果是(A)main() {intx,y; scanf(“%d”,&x); y=x>12?x+10:x-12; printf(“%d\n”,y); } A、0B、22C、12D、10 11、C语言中while和do-while循环的主要区别(A) A、do-while的循环体至少执行一次 B、while的循环控制条件比do-while的循环控制条件严格 C、do-while允许从外部转到循环体内 D、do-while的循环体不能是复合语句 12、以下对二维数组的正确说明的语句是(C) A、inta[3][] B、floata(3,4) C、doublea[3][4] D、floata(3)(4) 13、以下程序的输出结果是(C) main() C 语言程序设计(第三版)习题库 1、设圆半径r=,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf 输入数据,输出计算结果,输出时要求文字说明,取小数点后两位数字。请编程序。 #include<> main(){ floatr,h,C1,Sa,Sb,Va,Vb; scanf(__”%f ”__,&r); scanf(”%d ”,__&h _);; C1=2**r; Sa=*r*r; Sb=4*Sa; Va=4**r*r*r/3; Vb=Sa*h; printf(___”Cl=%.2fSa=%.2fSb=%.2fVa=%.2fVb=%.2f ”,Cl,Sa,Sb,Va,Vb ); } 2、输入一个华氏温度,要求输出摄氏温度。公式为c=5(F-32)/9 输出要求有文字说明,取位2小数。 #include<> main(){ floatF,c; scanf("%f",&F); ____c=5*(F-32)/9______; printf("c=%.2f",c); } 3、有一函数:?? ???≥-<≤-<=10113101121x x x x x x y 写一程序,输入x 值,输出y 值。 #include<> main(){ intx,y; printf("输入x :"); scanf("%d",&x); if(x<1){/*x<1*/ y=x; printf("x=%3d,y=x=%d\n",x,y); }elseif(____x<10_______){/*1≤x-10*/ _____y=2*x-1_______; printf("x=%3d,y=2*x-1=%d\n",x,y); }else{/*x≥10*/ y=3*x-11; printf("x=%3d,y=3*x-11=%d\n",x#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d",y); }#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d\n",y); }#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d",y); }scanf("%d",&x); 《C++程序设计》复习题 一、选择题 1.所谓数据封装就是将一组数据和与这组数据有关操作组装在一起,形成一个实体,这实体也就是( ) A、类 B、对象 C、函数体 D、数据块 2.面向对象的程序设计语言必须具备的关键要素是( ) A、抽象和封装 B、抽象和多态性 C、抽象、封装、继承和多态性 D、抽象、封装和继承性 3.类的构造函数被自动调用执行的情况是在定义该类的( ) A、成员函数时 B、数据成员时 C、对象时 D、友元函数时 4.设有函数模板 template c语言程序设计期末试题A(含答案) 一、单项选择题(选择一个最佳答案,每题2分,共20分) 1. 一个C程序的执行是从(A )。 A) 本程序的main函数开始,到main函数结束 B) 本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C) 本程序的main函数开始,到本程序文件的最后一个函数结束 D) 本程序文件的第一个函数开始,到本程序main函数结束 2. 下列选项中,不能用作标识符的是(D )。 A) _1234_ B) _1_2 C) int_2_ D) 2_int_ 3. 以下定义语句中正确的是( C)。 A) char a='A'b='B'; B) float a=b=10.0; C) int a=10,*b=&a; D) float *a,b=&a; 4. 设有以下定义:#define d 2 int a=0; double b=1.25; char c=’A’; 则下面语句中错误的是(B)。 A) a++; B) b++ C) c++; D) d++; 5. 以下4个选项中,不能作为一条C语句的是(D)。 A) {;} B) a=0,b=0,c=0; C) if(a>0); D) if(b==0) m=1;n=2; 6. 有以下定义语句double a,b; int w; long c; 若各变量已正确赋值,则下列选项中正确的表达式是( C)。 页脚内容1 A) a=a+b=b++ B) w%(int)a+b) C) (c+w)%(int)a D) w=a==b; 7. 设有定义:int n=0,*p=&n,**q=&p;则以下选项中,正确的赋值语句是(D)。 A) p=1; B) *q=2; C) q=p; D) *p=5; 选D. A.p是一个指针,不能给它赋一个整型的值1 B.*q仍然是一个指针,*q就是p.所以也不能给它赋一个整型的值. C.q=p;q是个二级指针,p是一级指针,不能把一级指针赋给二级指针. *p=5,即给n赋值为5,正确. 8. 设有定义:int a,*pa=&a; 以下scanf语句中能正确为变量a读入数据的是( A)。 A) scanf(“%d”,pa) ; B) scanf(“%d”,a) ; C) scanf(“%d”,&pa) ; D) scanf(“%d”,*pa); 9. 若有说明:char *language[]={”FORTRAN”,”BASIC”,”PASCAL”,”JAVA”,”C”};则表达式 *language[1]>*language[2]比较的是(A)。 A)字符B和字符P B) 字符串FORTRAN和字符串BASIC C)字符F和字符B D) 字符串BASIC和字符串PASCAL 10. 执行语句for(i=1;i++<4;);后变量i的值是(C )。 A) 3 B)4 C) 5 D) 不定 一、填空题(每空2分,共18分) 1. 若有定义:int a=7;float x= 2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值为2.5。 页脚内容2 第一章基础知识 一.填空 1. 每个C程序都必须有且仅有一个________ 函数。 2. C语言程序开发到执行通常要经过6个阶段即编辑、预处理、________、链接、加载和执行。 3. 软件是程序,以及______、使用和维护所需要的所有文档。 4. 国标中规定:“计算机程序是按照具体要求产生的适合于计算机处理的_________”。 5. 程序设计语言按照书写形式,以及思维方式的不同一般分为低级语言和________两大类。 6. C语言是由________组成的。 7. C语言的函数可分为主函数main、标准库函数和_________。 8. 一个函数是由两部分组成的,即:________和函数体。 9. 编译是将C语言所编写的源程序________成机器代码,也称为建立目标代码程序的过程。 程序是由某种程序设计语言编制出来,体现了编程者的控制思想和对计算机执行操作 的要求。不同的任务功能,就会需求不同的软件程序,如:控制计算机本身软硬件协调工作,并使其设备充分发挥效力,方便用户使用的系统软件程序,称为操作系统;而为办公自动化(OA)、管理信息系统(MIS)、人工智能、电子商务、网络互联等等应用而开发的软件程序,统称为_________。 11. 机器语言是以__________形式表示的机器基本指令的集合,是计算机系统唯一不需要翻译可以直接识别和执行的程序设计语言。 12. 与机器语言相比,使用汇编语言来编写程序可以用_______来表示指令的操作码和操作对 象,也可以用标号和符号来代替地址、常量和变量。 13. 在编译程序之前,凡以____开头的代码行都先由预处理程序预处理。 14. C程序的执行均是由执行_________开始。 15. 函数体即为包含在{}内的部分。它分为________和为完成功能任务由若干个C 语句 组成的执行部分。 16. C语言程序中一条简单语句是以________字符作为结束符的。 17. C语言是结构化、________的程序设计语言。 一.填空 1. 每个C程序都必须有且仅有一个________ 函数。 2. C语言程序开发到执行通常要经过6个阶段即编辑、预处理、________、链接、加载和执行。 3. 软件是程序,以及______、使用和维护所需要的所有文档。 4. 国标中规定:“计算机程序是按照具体要求产生的适合于计算机处理的_________”。 5. 程序设计语言按照书写形式,以及思维方式的不同一般分为低级语言和________两大类。 6. C语言是由________组成的。 7. C语言的函数可分为主函数main、标准库函数和_________。 8. 一个函数是由两部分组成的,即:________和函数体。 9. 编译是将C语言所编写的源程序________成机器代码,也称为建立目标代码程序的过程。 10. 程序是由某种程序设计语言编制出来,体现了编程者的控制思想和对计算机执行操作 的要求。不同的任务功能,就会需求不同的软件程序,如:控制计算机本身软硬件协调工作,并使其设备充分发挥效力,方便用户使用的系统软件程序,称为操作系统;而为办公自动化(OA)、管理信息系统(MIS)、人工智能、电子商务、网络互联等等应用而开发的软件程序,统称为_________。 11. 机器语言是以__________形式表示的机器基本指令的集合,是计算机系统唯一不需要翻译可以直接识别和执行的程序设计语言。 12. 与机器语言相比,使用汇编语言来编写程序可以用_______来表示指令的操作码和操作对 象,也可以用标号和符号来代替地址、常量和变量。 13. 在编译程序之前,凡以____开头的代码行都先由预处理程序预处理。 14. C程序的执行均是由执行_________开始。 15. 函数体即为包含在{}内的部分。它分为________和为完成功能任务由若干个C 语句 组成的执行部分。 16. C语言程序中一条简单语句是以________字符作为结束符的。 17. C语言是结构化、________的程序设计语言。 18. 由于计算机硬件不能直接识别高级语言中的语句,因此,必须经过“_______程序”,将用高级语言编写的程序翻译成计算机硬件所能识别的机器语言程序方可执行。 19. 用高级语言编写的程序需翻译成计算机硬件所能识别的机器语言程序方可执行。所以 说,用高级语言进行程序设计,其编程效率高,方便易用,但_______没有低级语言高。 20. 汇编语言程序设计练习题 一、字符与串处理类 1.逆序输出字符串“BASED ADDRESSING”。 2.试编写一段程序,要求对键盘输入的小写字母用大写字母显示出来。 3.编写程序,从键盘接收一个小写字母,然后找出它的前导字符和后续字符,再按顺序显示这三个字符。 4.从键盘上输入一系列以$为结束符的字符串,然后对其中的非数字字符计数,并显示计数结果。 5.从键盘上输入一串字符(用回车键结束,使用0A号功能调用。)放在STRING中,试编制一个程序测试字符串中是否存在数字。如有,则把CL的第5位置1,否则将该位置置0。 6.从键盘上输入一串字符(用回车键结束,使用0A号功能调用。),将其中的小写英文字母变换为大写英文字母,其他字符保持不变。然后将变换后的字符串显示出来。 7.试编制一个程序:从键盘输入一行字符,要求第一个键入的字符必须是空格符,如不是,则退出程序;如是,则开始接收键入的字符并顺序存放在首地址为buffer的缓冲区中(空格符不存入),直到接收到第二个空格符时退出程序。 8.试编写一段程序,要求比较两个字符串string1和string2所含字符是否相等,如相等则显示“MATCH”, 若不相同则显示“NO MATCH”。 9.试编写一段程序,要求输入两个字符串,如两个字符串相等则显示“MATCH”, 否则显示“NO MATCH”。 10.试编写一段程序,要求在长度为100H字节的数组中,找出大于61H的无符号数的个数并存入字节单元UP中,找出小于2FH的无符号数的个数并存入字节单元DOWN中。 11.在内存区域0B800:0000-0B800:0FFFF(都是16进制数)内查找首地址为SOURCE的串(SOURCE的首字节为串长度),如果找到,则把AL的第0位置0,否则将该位置置1。 12.已知数组A包含15个互不相等的整数,数组B包含20个互不相等的整数。试编制一个程序,把既在A中又在B中出现的整数存放于数组C中。 13.在附加段中,有一个首地址为LIST和未经排序的字数组。在数组的第一个字中,存放着该数组的长度,数组的首地址已存放在DI寄存器中,AX寄存器中存放着一个数。要求编制一个程序:在数组中查找该数,如果找到此数,则把它从数组中删除。 二、数字输入输出类 1. 试编制一个程序,把BX寄存器内的二进制数以十六进制数的形式在屏幕上显示出来。 2. 试编制一个程序,把BX寄存器内的二进制数以八进制数的形式在屏幕上显示出来。 3. 试编制一个程序,把BX寄存器内的二进制数以十进制数的形式在屏幕上显示出来。 4.从键盘上输入2个一位数,求出它们的和(假设和不超过1位)。 5.试编写一段程序,从键盘接收一个四位的十六进制数,并在终端上显示与它等值的二进制数。 6.试编写一段程序,从键盘接收一个0-65535间的十进制无符号数,并在终端上显示与它等值的二进制数。 7.试编写一段程序,从键盘接收一个-32768-32767间的十进制有符号数,并在终端上显示与它等值的二进制数。 8.编写一个程序,从键盘输入一个0~65535之间的10进制无符号数,然后以16进制 第一章1、一个C程序可能出现的错误有(A)A,以上都包括 B,逻辑错误 C,运行错误 D,语法错误 2、C程序中一般可以包含几个函数(D) A.1个 B.多个 C.0个 D.至少一个 3.C语言属于程序设计语言的哪个类别(B) A.机器语言 B.高级语言 C.面向对象语言 D.汇编语言 4.以下关于C语言描述错误的是(B) A.一个C程序总是从main函数开始执行 B.一个C程序可以包含多个main函数 C.每个语句的最后必须有一个分号 D.C语言的注释符是以"/*"开始并以"*/"结束 5、在调试过程中,逻辑错误是指(C) A.所书写的语句,不符合C的语法。 B.在从obj生成exe文件的过程中,如果函数名书写错误,可能产生的错误。 C.程序的运行结果不符合题目要求。 D.在exe文件的执行过程中,产生运行异常。 第二章 1、16位的二进制数可以表示的整数的范围是(C) A.[-32768,32768] B.[-32767,32768] C.[-32768,32767] D.[-32767,32767] 2、C语言中的实型数据包括(A) A.float和double B.int和float C.float和char D.int和double 3、以下不合法的字符常量是(C) A.'2' B.'A' C.'ab' 4、在以下各组标识符中,均是合法的C语言标识符是(A) A.abc,A_4d,_student,xyz_abc B.auto,12-a,a_b,ab5.x C.A_4d,_student,xyz_abc,if D.abc,a_b,union,scan 5、若有定义:chara;intb;floatc;doubled; 则表达式a*b+d-c值的类型为(A) A.char B.float C.double D.int 6、类型修饰符unsigned不能修饰(D) A.char B.longint C.int D.float 7、若有定义:doublex=1,y; 执行语句,则y的值是(B) A,1 B,2.0 指针 一单项选择题(每题2分,共40分) 1 以下叙述中错误的是_B__。 A 在程序中凡是以“#”开始的语句行都是预处理命令行 B 预处理命令行的最后不能以分号表示结束 C #define MAX是合法的宏定义命令行 D C程序对预处理命令行的处理是在程序执行的过程中进行的 2 若程序中有宏定义行:#define N 100 ,则以下叙述中正确的是__B_。 A 宏定义行中定义了标识符N的值为整数100 B 在编译程序对C源程序进行预处理时用100替换标识符N C 对C源程序进行编译时用100替换标识符N D 在运行时用100替换标识符 3 若有如下宏定义: #define N 2 #define y(n) ((N+1)*n) 则执行下列语句:z=4*(N+y(5));后的结果是_B__。 A 语句有错误 B z值为68 C z值为60 D z值为180 4 以下程序运行后的输出结果是_A__。 #define F(X,Y) (X)*(Y) main() { int a=3,b=4; printf("%d\n",F(a++,b++)); } A 12 B 15 C 16 D 20 5 以下程序运行后的输出结果是_C__。 #define f(x) (x*x) main() { int i1,i2; i1=f(8)/f(4); i2=f(4+4)/f(2+2); printf("%d,%d\n",i1,i2); } A 64,28 B 4,4 C 4,3 D 64,64 6 若已定义a为int型变量,则__D_是对指针变量p的正确说明和初始化。 A int p=&a; B int *p=a; C int *p=*a; D int *p=&a; 7 已知下列说明语句: static int a[]={2,4,6,8} static int *p[]={a,a+1,a+2,a+3}; int **q; q=p; 则表达式**(q+2)的值是_A__。 A 6 B 2 C 4 D 8 8 下面是一个初始化指针的语句:int *px=&a;,其中指针变量的名字应该__C_。 A *px B a C px D &a 9 若指针px为空指针,则_B__。。 习题解析与答案 第1章C语言概述 一.简答题 1.概述C语言的主要特点。 【解答】 (1)语言简洁、紧凑,使用方便、灵活。 (2)数据类型丰富,表达能力强。 (3)运算符多样。C语言中的运算符包含的范围非常广泛。 (4)具有结构化的控制语句。如if…else语句、while语句、do while语句、switch 语句、for语句。 (5)允许直接访问物理地址。C语言中含有的位和指针运算,能够直接对内存地址进行访问操作。 (6)所生成的目标代码质量高,可移植性好。 2.构成C语言程序的基本单位是什么?它由哪几部分组成? 【解答】函数是构成C语言程序的基本单位。一个完整的C程序一般由文件包含、宏定义、函数说明、变量和一个或若干个函数组成。 3.C语言程序的运行一般要经过哪几个步骤? 【解答】(1)编辑;(2)编译;(3)连接,生成EXE文件;(4)执行。 二.运行程序写结果 1.输入下面程序并运行。 main() { int a1,a2,x; a1=100; a2=50; x=a1-a2; printf(″x=%d\n″,x); } 【解答】运行结果为:x=50 2.输入下面程序并运行。 main() { int a1,a2,x; a1=10; a2=20; x=a1*a2; printf(″a1=%d,a2=%d\n″,a1,a2); printf(″x=%d\n″,x); } 【解答】运行结果为:a1=10,a2=20 x=200 3.输入下面程序并运行。 #include 《C语言程序设计》复习题库 1、计算下面公式的值。T=1/1!+1/2!+1/3!+……+1/m! 当m=5时的结果(按四舍五入保留3位小数)。(注:所有变量用float数据类型定义!)答案:1.717 #include printf("%ld",s);} 4、/*下面程序的功能是:计算并输出700以内的最大的10个能被13或者17整除的自然数之和。请改正程序中的错误,并运行,最后给出程序运行的正确结果。(注:只有一处错误!)*/ 答案:6591 #include c语言程序设计期末试题B(含答案) 一单项选择题(每小题1分,共10分) 1. A 2. C 3. D 4. A 5. B 1.以下4组用户定义标识符中,全部合法的一组是() A)_total clu_1 sum B)if -max turb C)txt REAL 3COM D)int k_2 _001 2.以下程序的输出结果是() #include 《C语言程序设计》练习及答案 得分评卷人复查人 一、单选题,每小题1分,共60分(将正确答案的序号写在题目的括号中)。 1、结构化程序设计的三种基本控制结构是(D )。 A、主程序、子程序、函数 B、输入、处理、输出 C、调用,返回,转移 D、顺序、选择、循环 2、下列关于C程序变量的叙述, ( D )是错误的。 A、变量名必须由字母或下划线开头。 B、程序中的变量必须在被使用之前定义。 C、不同的基本类型的变量之间可以混合运算。 D、变量的数据类型决定变量的"作用域"。 3、能将C语言编写的源程序转换为目标程序的软件是(C )。 A、编辑程序 B、汇编程序 C、编译程序 D、解释程序 4、以下符号中,合法的用户标识符是( D )。 A、-p B、int C、3ab D、_xt_ 5、以下选项中,与m=n++完全等价的表达式是( C )。 A、m=++n B、m+=n+1 C、m=n, n=n+1 D、n=n+1,m=n 6、若有定义:int aa[8];。则以下表达式中不能代表数组元aa[1]的地址的是(C )。 A、&aa[0]+1 B、&aa[1] C、&aa[0]++ D、aa+1 7、表达式!5&(7+3)&&(4+5)的值是(A)。 A、0 B、1 C、5 D、9 8、以下选项中非法的C语言表达式是(A )。 A、x+1=x+1 B、0<=x<100 C、i=j==0 D、(char)(65+3) 9、在TURBO C中, int类型变量所占字节数是(B )。 A、1 B、2 C、4 D、8 10、C语言中基本的数据类型包括(B)。 A、整型,实型,逻辑型 B、整型,实型,字符型 C语言考试期末考试复习题及答案 一、选择题 (1) 一个C语言程序总是从(C )开始执行 A) 书写顺序的第一个函数 B) 书写顺序的第一条执行语句 C) 主函数main() D) 不确定 (2) 设int x=3,y=4,z=5,则下列表达式中的值为0的是 ( D ) A) ‘x’&&’y’B) x||y+z&&y-z C) x<=y D) !((x C语言程序设计试题 (2008 /2009 学年第二学期) 一.选择题(满分30分,每题2分) 1.若a、b、c都定义为int类型且初值为0,则以下不正确的赋值语句是 D 。 A. a=b=c+8; B. a+=y+3; C. c++; D. a+b+c 2. 已知int j,i=1;执行语句“j=i++;”后,变量i的值是 B 。 A. 1 B. 2 C. –1 D. -2 3.执行下面程序: #include "stdio.h" void main() { int a=1,b=2,c=3; c=(a+=a+2),(a=b,b+3); printf(“%d,%d,%d”,a,b,c); } 则输出结果是: A 。 A. 2,2,4 B. 4,2,3 C. 5,5,3 D. 4,2,5 4.若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为 D 。 A. a< >0 B. !a C. a=0 D. a 5. for (j=0;j<11;j++);循环结束后,j的值是 B 。 A. 12 B. 11 C. 10 D. 9 6. C语言中函数返回值的类型由 D 决定的。 A. return语句中的表达式类型 B. 调用该函数的主调函数的类型 C. 调用函数时临时决定 D. 定义函数时所指定的函数类型 7. 下列说法中正确的是 B 。 A 在调用用户自定义函数时,必须对其进行声明。 B 函数可以返回一个值,也可以什么值也不返回。 C 说明函数时,必须明确参数的类型和返回值。 D 在程序设计中空函数没有什么作用。8. 若int i=10;执行下列程序后,变量i的正确结果是 D 。 switch ( i ) {case 0: i+=1; case 10: i+=1; case 11: i+=1; default: i+=1; } A. 10 B. 11 C. 12 D. 13 9. 下列语句中不正确的字符串赋值或初始化的是 C 。 A. char str[10]={"strings"}; B.char str[8]={'s','t','r','i','n ','g','s','\0'}; C. char str[10]; str= "strings"; D. char str[]= "strings"; 10. 有如下程序: #include 程序填空题 导读:在程序填空题中,已经给出了程序的主干,读者首先要理解程序的思路,再选择正确的内容填入空白处,使程序完成既定的功能。这类习题的设计就是要引导读者逐步掌握编程的方法。本节习题的难度适中,可能有些典型的程序在课堂上已经有所接触,读者一定要独立完成它,这样就可以逐步提高自己的编程能力。在程序设计语言学习的中期,读者对程序设计已经有了初步的了解,而自己编写程序又不知从何处入手,此时解答此类题目可以避免盲目性,从而提高学习的效率。 【】下面程序的功能是不用第三个变量,实现两个数的对调操作。#include <> main() { int a,b; scanf("%d%d",&a,&b); printf("a=%d,b=%d\n",a,b); a= ①; b= ②; a= ③; printf("a=%d,b=%d\n",a,b); } 【】下面程序的功能是根据近似公式:π2/6≈ 1/12+1/22+1/32+ …… +1/n2,求π值。 #include <> double pi(long n) { double s=; long i; for(i=1;i<=n;i++) s=s+ ①; return( ②); } 【】下面的程序的功能是求一维数组中的最小元素。 findmin(int *s,int t,int *k) { int p; for(p=0,*k=p;p C语言程序设计第二版 习题参考答案 Document serial number【LGGKGB-LGG98YT-LGGT8CB-LGUT- C语言程序设计习题参考答案 习题 1 一、判断题 1.在计算机中,小数点和正负号都有专用部件来保存和表示。 2.二进制是由0和1两个数字组成的进制方式。 3.二进制数的逻辑运算是按位进行的,位与位之间没有进位和借位的关系。 4.在整数的二进制表示方法中,0的原码、反码都有两种形式。 5.有符号数有三种表示法:原码、反码和补码。 6.常用字符的ASCII码值从小到大的排列规律是:空格、阿拉伯数字、大写英文字母、小写英文字母。 解:1.F2.T 3.T 4.T 5.T 6.T 二、单选题 1.在计算机中,最适合进行数值加减运算的数值编码是。 A. 原码 B. 反码 C. 补码 D. 移码 2.已知英文小写字母m的ASCII码为十进制数109,则英文小写字母y的ASCII 码为十进制数。 A. 112 B. 120 C. 121 D. 122 3.关于ASCII码,在计算机中的表示方法准确地描述是。 A. 使用8位二进制数,最右边一位为1 B. 使用8位二进制数,最左边一位为1 C. 使用8位二进制数,最右边一位为0 D. 使用8位二进制数,最左边一位为0 4.设在机器字长4位,X=0111B,Y=1011B,则下列逻辑运算中,正确的是 ___________。 A. X∧Y=1000 B. X∨Y=1111 C. X⊕Y=0011 D. ˉY=1000 5.下列叙述中正确的是()。 A.高级语言就是机器语言 B.汇编语言程序、高级语言程序都是计算机程序,但只有机器语言程序才是计算机可以直接识别并执行的程序 C.C语言因为具有汇编语言的一些特性,所以是汇编语言的一种 D.C源程序经过编译、连接,若正确,执行后就能得到正确的运行结果6.用C语言编写的源程序经过编译后,若没有产生编译错误,则系统将()。 A.生成可执行文件B.生成目标文件 C.输出运行结果D.自动保存源文件 7.下列叙述中不正确的是()。 A.main函数在C程序中必须有且只有一个 B. C程序的执行从main函数开始,所以main函数必须放在程序最前面 C. 函数可以带参数,也可以不带参数。C语言程序设计试题及答案
C语言程序设计第三版习题库答案
C++语言程序设计复习题
c语言程序设计期末试题A(含答案)
C语言程序设计试题集
C语言程序设计试题集与答案解析
汇编语言程序设计练习题
C语言程序设计期末考试选择题题库
C语言程序设计习题集(3)
c语言程序设计第五版习题答案
语言程序设计复习题
c语言程序设计期末试题B(含答案)
(完整版)C语言程序设计练习及答案
C语言程序设计期末考试复习题及答案[1]
C语言程序设计期末考试试题及答案知识分享
C语言程序设计程序填空题库及答案
C语言程序设计第二版习题参考答案