文档库 最新最全的文档下载
当前位置:文档库 › c语言复习材料(四)答案

c语言复习材料(四)答案

c语言复习材料(四)答案
c语言复习材料(四)答案

一、选择题

1、下面程序段的运行结果是( )

a=1; b=2; c=2;

while(a

printf("%d,%d,%d",a,b,c);

(A) 1,2,0

(B) 2,1,0

(C) 1,2,1

(D) 2,1,1

2、若运行以下程序时,从键盘输入2473〈CR〉(〈CR〉表示回车),则下面程序的运行结果是( )

#include

void main()

{

int c;

while((c=getchar())!='\n')

switch(c-'2')

{

case 0:

case 1: putchar(c+4);

case 2: putchar(c+4); break;

case 3: putchar(c+3);

default: putchar(c+2); break;

}

printf("\n");

}

(A) 668977

(B) 668966

(C) 66778777

(D) 6688766

3、以下能正确计算1×2×3×...×10的程序段是( )

(A) do{i=1; s=1;

s=s*i;

i++;

}while(i<=10);

(B) do{i=1;s=0;

s=s*i;

i++;

}while(i<=10);

(C) i=1; s=1;

do{s=s*i;

i++;

}while(i<=10);

(D) i=1; s=0;

do{s=s*i;

i++;

}while(i<=10);

4、若有如下语句

int x=3;

do{printf("%d\n",x-=2);}while(!(--x));

则上面程序段( )

(A) 输出的是1

(B) 输出的是1和-2

(C) 输出的是3和0

(D) 是死循环

5、下面程序的运行结果是( )

#include

void main()

{

int y=10;

do{y--;}while(--y);

printf("%d\n",y--);

}

(A) -1

(B) 1

(C) 8

(D) 0

6、若运行以下程序时,从键盘输入ADescriptor〈CR〉(〈CR〉表示回车),则下面程序的运行结果是( )

#include

void main()

{

char c;

int v0=0,v1=0,v2=0;

do{

switch(c=getchar())

{

case 'a': case 'A':

case 'e': case 'E':

case 'i': case 'I':

case 'o': case 'O':

case 'u': case 'U': v1+=1;

default: v0+=1; v2+=1;

}

}while(c!='\n');

printf("v0=%d,v1=%d,v2=%d\n",v0,v1,v2);

}

(A) v0=7,v1=4,v2=7

(B) v0=8,v1=4,v2=8

(C) v0=11,v1=4,v2=11

(D) v0=12,v1=4,v2=12

7、下面有关for循环的正确描述是( )

(A) for循环只能用于循环次数已经确定的情况

(B) for循环是先执行循环体语句,后判断表达式

(C) 在for循环中,不能用break语句跳出循环体

(D) for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来

8、对for(表达式1; ; 表达式3)可理解为( )

(A) for(表达式1; 0; 表达式3)

(B) for(表达式1; 1; 表达式3)

(C) for(表达式1; 表达式1; 表达式3)

(D) for(表达式1; 表达式3; 表达式3)

9、若i为整型变量,则以下循环执行次数是( )

for(i=2;i==0;) printf("%d",i--);

(A) 无限次

(B) 0次

(C) 1次

(D) 2次

10、以下for循环的执行次数是( )

for(x=0,y=0;(y=123)&&(x<4);x++);

(A) 是无限循环

(B) 循环次数不定

(C) 执行4次

(D) 执行3次

11、下面程序段的运行结果是( )

for(y=1;y<10;) y=((x=3*y,x+1),x-1);

printf("x=%d,y=%d",x,y);

(A) x=27,y=27

(B) x=12,y=13

(C) x=15,y=14

(D) x=y=27

12、下面程序段的运行结果是( )

for(x=3;x<6;x++) printf((x%2)?("**%d"):("##%d\n"),x);

(A) **3

##4

**5

(B) ##3

**4

##5

(C) ##3

**4##5

(D) **3##4

**5

13、执行语句for(i=1;i++<7; ); 后变量i的值是( )

(A) 6

(B) 7

(C) 8

(D) 不定

14、下面程序的运行结果是( )

#include

void main()

{

int x,i;

for(i=1;i<=100;i++)

{

x=i;

if(++x%2==0)

if(++x%3==0)

if(++x%7==0)

printf("%d ",x);

}

}

(A) 39 81

(B) 42 84

(C) 26 68

(D) 28 70

15、下面程序的功能是求算式xyz+yzz=532中x,y,z的值(其中xyz和yzz分别表示一个三位数),请选择填空。①( )②( )

#include

void main()

{

int x,y,z,i,result=532;

for(x=1; x<10; x++)

for(y=1; y<10; y++)

for( ①; z<10; z++)

{

i=100*x+10*y+z+100*y+10*z+z;

if( ②) printf("x=%d,y=%d,z=%d\n",x,y,z);

}

}

①(A) z=x

(B) z=1

(C) z=0

(D) z=y

②(A) i/result==1

(B) i=result

(C) i!=result

(D) i==result

16 、以下正确的描述是( )

(A) continue语句的作用是结束整个循环的执行

(B) 只能在循环体内和switch语句体内使用break语句

(C) 在循环体内使用break语句或continue语句的作用相同

(D) 从多层循环嵌套中退出时,只能使用goto语句

17、下面程序段( )

for(t=1;t<=100;t++)

{

scanf("%d",&x);

if(x<0) continue;

printf("%3d",t);

}

(A) 当x<0时整个循环结束

(B) x>=0时什么也不输出

(C) printf函数永远也不执行

(D) 最多允许输出100个非负整数

18、下面程序段( )

x=3;

do{

y=x--;

if(!y){printf("x"); continue;}

printf("#");

}while(1<=x<=2);

(A) 将输出##

(B) 将输出##*

(C) 是死循环

(D) 含有不合法的控制表达式

19、以下是死循环的程序段是( )

(A) for(i=1; ; )

{

if(++i%2==0) continue;

if(++i%3==0) break;

}

(B) i=32767;

do{if(i<0) break;}while(++i);

(C) for(i=1; ; ) if(++i<10) continue;

(D) i=1;

while(i--);

二、填空题

1、下面程序的运行结果是________。

#include

void main()

{

int a,s,n,count;

a=2; s=0; n=1; count=1;

while(count<=7){n=n*a; s=s+n; ++count;}

printf("s=%d",s);

}

2、当运行以下程序时,从键盘输入China#〈CR〉(〈CR〉表示回车),则下面程序的运行结果是________。

#include

void main()

{

int v1=0,v2=0;char ch;

while((ch=getchar())!='#')

switch(ch)

{

case 'a':

case 'h':

default: v1++;

case 'o': v2++;

}

printf("%d,%d\n",v1,v2);

}

3、执行下面程序段后,k值是________。

int k=1,n=263;

do{ k*=n%10; n/=10;}while(n);

4、下面程序段的运行结果是________。

x=2;

do{printf("*");x--;}while(!x==0);

5、下面程序段的运行结果是________。

i=1;a=0;s=1;

do{a=a+s*i;s=-s;i++;}while(i<=10);

printf("a=%d",a);

6、下面程序的功能是求11的11次方的个、十、百位上的数字之和。请填空。

#include

void main()

{

int i,s=1,m=0;

for(i=1;i<=11;i++) s=s*11%1000;

do{ m+=________; s=________;}while(s); //s%10 s/10

printf("m=%d\n",m);

}

7、当运行以下程序时,从键盘输入12345-1〈CR〉(〈CR〉表示回车),则下面程序的运行结果是________。

#include

void main()

{

int k=0,n;

do{scanf("%d",&n);k+=n;}while(n!=-1);

printf("k=%d n=%d\n",k,n);

}

8、下面程序的运行结果是________。

#include

void main()

{

int i,x,y;

i=x=y=0;

do{

++i;

if(i%2!=0){x=x+i;i++;}

y=y+i++;

}while(i<=7);

printf("x=%d,y=%d\n",x,y);

}

9、当运行以下程序时,从键盘输入-1 0〈CR〉(〈CR〉表示回车),则下面程序的运行结果是________。

#include

void main()

{

int a,b,m,n;

m=n=1;

scanf("%d%d",&a,&b);

do{

if(a>0){m=2*n;b++;}

else{n=m+n;a+=2;b++;}

}while(a==b);

printf("m=%d n=%d",m,n)

}

10、下面程序段是找出整数的所有因子,请填空。

scanf("%d",&x);

i=1;

for( ;________; )

{

if(x%i==0) printf("%3d",i);

i++;

}

11、下面程序的运行结果是________。

#include

void main()

{

int i,t,sum=0;

for(t=i=1;i<=10; )

{

sum+=t; ++i;

if(i%3==0) t=-1;

else t=i;

}

printf("sum=%d",sum);

}

12、下面程序的运行结果是________。

#include

void main()

{

int y,a;

y=2;a=1;

while(y--!=-1)

{ do{ a*=y; a++;} while(y--); }

printf("%d,%d",a,y);

}

13、下面程序段的运行结果是________。

int i=1,s=3;

do{

s+=i++;

if(s%7==0) continue;

else ++i;

}while(s<15);

printf("%d",i);

14、下面程序的运行结果是________。

#include

void main()

{

int i=1;

while(i<=15)

if(++i%3!=2) continue;

else printf("%d ",i);

printf("\n");

}

15、下面程序的输出结果是________。

#include

void main()

{

int i,j,k=19;

while(i=k-1)

{

k-=3;

if(k%5==0) {i++;continue;}

else if(k<5) break;

i++;

}

printf("i=%d,k=%d\n",i,k);

}

16、下面程序的运行结果是________。

#include

void main()

{

int a,y;

a=10;y=0;

do{

a+=2;y+=a;

if(y>50) break;

}while(a=14);

printf("a=%d y=%d\n",a,y);

}

c语言复习题答案

c语言复习题-2010 1~5 ABCDB 6~10 BADAD 11~15 DABAB 16~20 ADDDC 1. 编程计算1!+2!+3!+……+n!的值,其中n的值由用户输入。 #include main() { long term = 1,sum = 0; int i,n; scanf(“%d”,&n); for (i = 1; i <= n; i++) { term = term * i; sum = sum + term; } printf("1!+2!+...n! = %ld \n", sum); } 2. 从键盘任意输入某班20个学生的成绩,打印最高分,并统计不及格学生的人数。要求按如下函数原型进行编程,分别计算最高分和统计不及格学生的人数:int FindMax(int score[], int n); int CountFail(int score[], int n); #include int FindMax(int score[], int n); int CountFail(int score[], int n); main() { int i, score[20],max,count; for (i=0; i<20; i++) { scanf("%d",&score[i]); } max = FindMax(score, 20); printf("max = %d\n",max); count = CountFail(score, 20); printf("count = %d\n",count); } int FindMax(int score[], int n) { int max,i;

c语言试题及答案

1、以下正确的说法是( B ) (A) 用户若需要调用标准库函数,调用前必须重新定义 (B) 用户可以重新定义标准库函数,若如此,该函数将失去原有含义 (C) 系统根本不允许用户重新定义标准库函数 (D) 用户若需调用标准库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自动去调 2、以下正确的函数声明形式是( A ) (A) double fun(int x, int y) (B) double fun(int x; int y) (C) double fun(int x, int y); (D) double fun(int x,y); 3、以下正确的函数形式是( D ) (A) double fun(int x, int y) { z=x+y; return z;} (B) fun(int x,y) { int z; return z;} (C) fun(x,y) { int x,y; double z; z=x+y; return z;} (D) double fun(int x, int y) { double z; z=x+y; return z;} 4、以下正确的说法是( A ) 在C语言中 (A) 实参和与其对应的形参各占用独立的存储单元 (B) 实参和与其对应的形参共占用一个存储单元 (C) 只有当实参和与其对应的形参同名时才共占用存储单元 (D) 形参是虚拟的,不占用存储单元 5、若调用一个函数,且此函数中没有return语句,则正确的说法是( A ) 该函数 (A) 没有返回值 (B) 返回若干个系统默认值 (C) 能返回一个用户所希望的函数值 (D) 返回一个不确定的值 6、以下不正确的说法是( B ) C语言规定 (A) 实参可以是常量、变量和表达式 (B) 形参可以是常量、变量和表达式 (C) 实参可以为任意类型 (D) 形参应与其对应的实参类型一致 7、以下正确的说法是( C ) (A) 定义函数时,形参的类型说明可以放在函数体内 (B) return后边的值不能为表达式 (C) 如果函数值的类型与返回值类型不一致,以函数值类型为准 (D) 如果形参与实参的类型不一致,以实参类型为准 8、C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是( B ) (A) 地址传递 (B) 单向值传递 (C) 由实参传给形参,再由形参传回给实参 (D) 由用户指定传递方式

C语言习题级参考答案

测试题11 1.以下程序段中,不能正确赋字符串(编译时系统会提示错误)的是(B)。 A、char s[10];strcpy(s,"abcdefg"); B、char s[10];s="abcdefg"; C、char s[10]="abcdefg"; D、char t[]="abcdefg",*s=t 2.下列语句的输出结果是(B)。 printf("%d\n",(int)(2.5+3.0)/3); A、2 B、1 C、有语法错误不能通过编译 D、0 3.以下程序段的输出结果是 A main() { char ch1, ch2; ch1 = …A? + …5? - …3?; ch2 = …A? + …5? - …3?; printf(“%d,%c\n”, ch1,ch2); } A、67, C B、B,C C、不确定的值 D、C,D 4.以下程序段的输出结果为(B)。 char c[]="abc"; int i=0; do ;while(c[i++]!='\0');printf("%d",i-1); A、abc B、3 C、ab D、2 5.相同结构体类型的变量之间,可以(C)。 A、比较大小 B、地址相同 C、赋值 D、相加 6. C语言源程序文件经过C编译程序编译连接之后生成一个后缀为(B)的可执行文件 A、.obj B、.exe C、.c

D、.bas 7.以下程序的输出结果是 C main() { char s[] = “ABCD”, *p; for(p = s; p < s + 4; p++) printf(“%s\n”, p); } A、 B、 C、 D、 8.当调用函数时,实参是一个数组名,则向函数传送的是(B)。 A、数组每一个元素的地址 B、数组的首地址 C、数组每个元素中的值 D、数组的长度 9.如果int a=2,b=3,c=0,下列描述正确的是(D) A、a>b!=c和a>(b!=c)的执行顺序是一样的 B、a&&b>c的结果为假 C、a||(b=c)执行后b的值为0 D、!a!=(b!=c)表达式的值为1 10.当调用函数时,实参是一个数组名,则向函数传送的是(B)。 A、数组每个元素中的值 B、数组的首地址 C、数组的长度

C语言基础练习题(含答案)Word版

第一章C语言基础知识 1.1 选择题 1. 以下不是C语言的特点的是()。B A、语言简洁紧凑 B、能够编制出功能复杂的程序 C、C语言可以直接对硬件操作 D、C语言移植性好 2. 下列字符序列中,不可用作C语言标识符的是()。B A.abc123 B.no.1 C._123_ D._ok 3. 正确的C语言标识符是()。A A._buy_2 B.2_buy C.?_buy D.buy? 4. 请选出可用作C语言用户标识符的一组标识符()。B A.void B.a3_b3 C.For D.2a define _123 -abc DO WORD IF Case sizeof 5. 下列符号中,不属于转义字符的是()。B A.\\ B.\0xAA C.\t D.\0 6. 不属于C语言关键字的是()。d A.int B.break C.while D.character 7. 是C语言提供的合法关键字的是()。b A.Float B.signed C.integer D.Char 8. 以下不能定义为用户标示符的是()。b A.scanf B.Void C._3com_ D.int 9. 一个C程序是由()。 b A.一个主程序和若干子程序组成 B.一个或多个函数组成 C.若干过程组成 D.若干子程序组成 10. C语言程序的基本单位是()。 c A.程序行 B.语句 C.函数 D.字符 11. 下列说法中,错误的是()。 a A.每个语句必须独占一行,语句的最后可以是一个分号,也可以是一个回车换行符号B.每个函数都有一个函数头和一个函数体,主函数也不例外 C.主函数只能调用用户函数或系统函数,用户函数可以相互调用 D.程序是由若干个函数组成的,但是必须有、而且只能有一个主函数 12. 以下说法中正确的是()。 c A.C语言程序总是从第一个定义的函数开始执行 B.在C语言程序中,要调用的函数必须在main( )函数中定义 C.C语言程序总是从main( )函数开始执行

(完整版)C语言试题及答案解析

C语言 一、选择题(第题2分,共20分) 1.一个C程序的执行是从 A 。 A) 本程序的main函数开始,到main函数结束 B) 本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C) 本程序文件的第一个函数开始,到本程序main函数结束 D) 本程序的main函数开始,到本程序文件的最后一个函数结束 2.若x、i、j、k都是int型变量,则计算下面表达式后,x的值为 C 。 x=(i=4,j=16,k=32) A) 4 B) 16 C) 32 D) 52 3.设C语言中,一个int型数据在内存中占2个字节,则unsigned int 型数据的取值范围为 C 。 A) 0~255 B) 0~32767 C) 0~65535 D) 0~2147483647 4.设有说明:char w; int x; float y; double z;则表达式w*x+z-y值的数据类型为 D 。 A) float B) char C) int D) double 5. putchar函数可以向终端输出一个 D 。 A) 整型变量表达式 B) 实型变量值 C) 字符串 D) 字符或字符型变量值 6. printf函数中用到格式符%5s,其中数字5表示输出的字符串占用5列。如果字符串长度大于5,则输出按方式 B ;如果字符串长度小于5,则输出按方式 C 。 A) 从左起输出该字符串,右补空格 B) 按原字符长从左向右全部输出 C) 右对齐输出该字符串,左补空格 D) 输出错误信息 7.判断char型变量ch是否为大写字母的正确表达式是 C 。 A) ‘A’<=ch<=‘Z’ B) (ch>=‘A’)&(ch<=‘Z’) C) (ch>=‘A’)&&(ch<=‘Z’) D) (‘A’<= ch)AND(‘Z’>= ch) 8.已知int x=10,y=20,z=30;以下语句执行后x,y,z的值是 B 。 if(x>y) z=x; x=y; y=z; A) x=10, y=20, z=30 B) x=20, y=30, z=30 C) x=20, y=30, z=10 D) x=20, y=30, z=20 9.以下程序段______C__. x=-1; do{ x=x*x; } while(!x); A)是死循环 B)循环执行二次 C)循环执行一次 D)有语法错误 10.以下正确的描述是___B____. A)continue语句的作用是结束整个循环的执行

C语言习题全集+答案

第一单元程序设计和C语言 一、选择题 1.C语言的基本构成单位是:。 A. 函数 B. 函数和过程 C. 超文本过程 D. 子程序 2.一个C语言程序总是从开始执行。 A. 主过程 B. 主函数 C. 子程序 D.主程序 3.C语言的程序一行写不下时,可以。 A. 用逗号换行 B. 用分号换行 C. 在任意一空格处换行 D. 用回车符换行 4.以下叙述不正确的是:。 A. 在C程序中,语句之间必须要用分号";"分隔 B. 若a是实型变量,C程序中a=10是正确的,因为实型变量中允许存放整型数 C. 在C程序中,无论是整数还是实数都能正确无误地表示 D. 在C程序中,%是只能用于整数运算的运算符 5.以下不正确的C语言标识符是。 A. ABC B. abc C. a_bc D. 6.下列字符串是标识符的是:。 A. _HJ B. 9_student C. long D. LINE 1 7.以下说法中正确的是:。 A. C语言程序总是从第一个定义的函数开始执行 B. 在C语言程序中,要调用的函数必须放在main()函数中定义 C. C语言程序总是从main()函数开始执行 D. C语言程序中的main()函数必须放在程序的开始部分 8.不合法的常量是:。 A. ‘\2’ B. " " C. ‘3’ D. ‘\483’ 9.已知各变量的类型说明如下,则以下不符合C语言语法的表达式是:。 int k,a,b; unsigned long w=5; double x=; A. x%(-3) B. w+=-2 C. k=(a=2,b=3,a+b) D. a+=a=+(b=4)*(a=3) 10.在C语言中,字符型数据在内存中以形式存放。 A. 原码 B. BCD码 C. 反码 D. ASCII码 11.若有定义:int a=7; float x=; y=;

C语言1-5章复习题及参考答案

一.选择题 1、若a为int类型,且其值为3,则执行完表达式a+=a-=a*a后,a的值是()。 A .-3 B.9 C.-12 D.6 2、若有定义:int a=8, b=5, c; 执行语句 c=a/b+0.4; 后,c的值为()。 A .1.4 B.1 C.2.0 D.2 3、有如下程序: void main() { int i,sum; for(i=1;i<=3;sum++) sum+=i; printf("%d\n",sum); } 该程序的执行结果是()。 A .6 B.3 C.死循环 D.0 4、下列关于表达式的描述中,错误的是()。 A . 常量和变量都是表达式。 B. 运算符类型对应表达式的类型。 C. 每一个表达式都有自己的值。 D. 表达式必须以分号结尾。 5、C语言中,合法的长整型常数是()。 A . '\t' B.” A” C.65 D.a 6、若已定义 x 和 y为double 类型,则表达式 x=1;y=(x+3)/2 的值是()。 A .1 B.2 C.2.00000 D.2.50000 7、表达式:10!=9的值是()。 A . true B. 非零值 C.0 D.1 8、以下程序的输出结果是()。 #include void main() { printf("%d\n", NULL); } A . 不确定的 B.0 C.-1 D.1 9、请选出合法的C语言赋值语句。() A . a=b=58 B.i++; C. a=58,b=58 D. k=int(a+b); 10、假设 int b=2; 表达式(b>>2)/(b>>1)的值是()。 A .0 B.2 C.4 D.8 11、关于语句printf(“hello world\n”);,下列描述中错误的是()。 A . printf()是格式化输出函数,用于输出信息。 B. printf()括号中的内容为函数的参数。 C. printf()括号中的内容会全部输出到控制台上。 D. \n表示换行操作。 12、下列选项中,哪一项不是C语言中的位运算符()。 A .& B.|| C.~ D.^ 13、以下程序的输出结果是()。 void main()

c语言试题及答案

C语言部分 一、选择题(每小题2分,共10分) (下在各小题,分别有一个或多个正确答案,请将所有正确答案的编号,填写在该小题题干后的括号内。错选或漏选均不得分)。 1、若定义:int a[2][3]{0,2,4,6,8,10};以下描述正确的有( A,C,D, E ) A、*(a+1)为元素6的地址 这里a+1=a[1]的地址;*(a+1)的值是6,故A正确。 B、*(a[1]+1)的值为2 为8,故B不正确 C、**(a+1)+2的值为8 这里a+1是一个指针,指向的是a[1]. *(a+1)为a[1],a[1]指向的是a[1][0]. **(a+1)为6,加2得8,故C正确; D、a[0]与a相同 因二者都是指针,指针的地址都是指向数组中的第一个元素的地址,故D正确。 E、a[1][2]的值为10 它是指第二行的第三个元素,为10,正确 2、对函数的正确使用方法描述( A,C,D )。 A、用数组做函数参数时,必须在主调函数和被调函数中分别定义数组 B、实参数组元素和形参数组元素类型可以不一致 C、形参数组长度可以不指定 D、形参数组长度可以大于实参数组长度 E、数组名做参数属于值传递 3、对静态变量的正确描述( A,B,D,E )

A、静态局部变量在静态存储区内分配单元() B、静态外部变量可以赋初值,也可以不赋初值 C、静态外部变量的作用与外部变量相同 D、静态局部变量在函数调用结束时,仍保存其值,不会随着消失。 E、静态局部变量只赋一次初值 4、下列描述正确的是( A ,C)。 A、由main 函数及其参数argc和* argv[]可以实现命令行方式 B、使用fclose关闭文件时,先释放文件指针,再写缓冲区数据到文件中 //先写缓冲区数据到文件中,再释放文件指针 C、字符数组并不要求它的最后一个字符是‘\0’ //是的,以字符指针指向的字符串才要求,因为只有这样,才能知道字符串的长度,而在字符数组中,不用\0,一样可以知道到哪里是字符数组的结尾。 D、‘A’和“A”都是字符串常量 E、若char*S=“\ta\017bc”;则指针变量S指向的字符串所占的字节数是7 5、在缓冲文件系统中用于读写的函数有( A,B,D ) A、putchar () B、fread() C、rewind () D、purw() E、fseek() 二、程序阅读,并给出运行结果(共10分,每题5分)。 (1)main() { unsigned a,b,x int n; a=0x763 输出结果: n=6;

C语言课后习题答案(最终)

第0章习题 1. 将下列十进制数分别转化为二进制数、八进制数和十六进制数: (1)128 (2)511 (3)1024 (4)65535 (5)1048575 答: (1)10000000、200、80 (2)111111111、777、1FF (3)10000000000、2000、400 (4)1111111111111111、177777、FFFF (5)11111111111111111111、3777777、FFFFF 2. 将下列二进制数转化为十进制数和十六进制数: (1)1100110101B (2)101101.1011B 答: (1)821、335 (2)45.6875、2D.B 3. 写出下列数的原码、反码、补码:15、-20、-27/32 答: (1)00001111、00000000、00001111 (2)10010100、11101011、11101100 (3)1.1101100、1.0010011、1.0010100 4. 16位无符号定点整数的数值表示范围为多少?8位补码的表示范围是多少?16位补码的表示范围是多少? 答: 0~65535、-128~127、-32768~32767 5.1968年Dijkstra提出结构化程序设计的思想的原因是什么?简要回答结构化程序设计的经典定义。 答: 结构化程序设计概念的提出主要是源于程序结构的层次性与模块化使得构造出来的软件具有良好的可理解性和可维护性,随着软件规模的扩大与复杂性的提高,程序的可维护性成为程序设计者们关注的重要问题之一。 如果一个程序的代码块仅仅通过顺序、选择和循环这3种基本控制结构进行连接,并且每个代码块只有一个入口和一个出口,则称这个程序是结构化的。 6.C程序在内存中存储在哪儿?计算机的内存空间是如何分区的?分区存放不同类型的数据的目的是什么? 答:

C语言练习题(带答案)-绝对经典题目不看后悔

1单选题 1.(A)是构成C语言程序的基本单位。 A、函数 B、过程 C、子程序 D、子例程 2.C语言程序从C开始执行。 A) 程序中第一条可执行语句B) 程序中第一个函数 C) 程序中的main函数D) 包含文件中的第一个函数 3、以下说法中正确的是(C)。 A、C语言程序总是从第一个定义的函数开始执行 B、在C语言程序中,要调用的函数必须在main( )函数中定义 C、C语言程序总是从main( )函数开始执行 D、C语言程序中的main( )函数必须放在程序的开始部分 4.下列关于C语言的说法错误的是(B)。 A) C程序的工作过程是编辑、编译、连接、运行 B) C语言不区分大小写。 C) C程序的三种基本结构是顺序、选择、循环 D) C程序从main函数开始执行 5.下列正确的标识符是(C)。 A.-a1 B.a[i] C.a2_i D.int t 5~8题为相同类型题 考点:标识符的命名规则 (1)只能由字母、数字、下划线构成 (2)数字不能作为标识符的开头 (3)关键字不能作为标识符 选项A中的“-” ,选项B中“[”与“]”不满足(1);选项D中的int为关键字,不满足(3) 6.下列C语言用户标识符中合法的是(B)。 A)3ax B)x C)case D)-e2 E)union 选项A中的标识符以数字开头不满足(2);选项C,E均为为关键字,不满足(3);选项D中的“-”不满足(1); 7.下列四组选项中,正确的C语言标识符是(C)。 A)%x B)a+b C)a123 D)123 选项A中的“%” ,选项B中“+”不满足(1);选项D中的标识符以数字开头不满足(2) 8、下列四组字符串中都可以用作C语言程序中的标识符的是(A)。 A、print _3d db8 aBc B、I\am one_half start$it 3pai C、str_1 Cpp pow while D、Pxq My->book line# His.age 选项B中的“\”,”$” ,选项D中“>”,”#”,”.”,”-”不满足(1);选项C中的while为关键

C语言考试复习试题及参考答案

中南大学现代远程教育课程考试复习试题及参考答案 C语言程序设计 一、单项选择题 若以下各题所有库函数都可以合法使用,且变量定义如下: int m=5, i=3,j=2,*p, a=8,b=0; int arr[10]={0,1,2,3,4,5,6,7,8,9},td[ ][3]={1,2,3,4,5,6}; float x=2.5,y=3.0; double z=0; long n=1; char c=’A’,ch[20]={’a’,’b’,’c’,’\0’,’d’,’\0’}; struct student { int num; char name[20]; float score; struct student *next; }st1,st2,*ps;

FILE *fp; 1.若将3和10从键盘输入给变量a、x,输入语句为 scanf(“a=%d,x=%f”,&a,&x);正确的键盘输入是(↙表回车): A a=3,x=10↙ B 3,10↙ C 3 10↙ D 3,10.0↙ 2. 以下不是死循环的语句是: A for ( ;;y+=i++); B while(a) y+=i++ ; C do{ y+=i++}while (a>0); D for (b=0;(c=getchar()!=’\n’);)b++; 3.若p=arr;正确的语句是: A *p=arr[10]; B *p=arr[2*a]; C p=arr[5]; D p[i]=arr[0]; 4.若ps=&st1;则下面描述正确的是: A ps->num与st1->num等价。 B ps.num与st1.num等价。 C ps->num与num等价。 D ps->num与st1.num等价。 5.语句printf(“%d",aj);的输出结果是:

C语言试题库(带答案解析)~排版

一、选择题 1、以下不能定义为用户标识符的是( )。 (A) MAIN (B) _HJ (D) LINE1 2、以下不能定义为用户标识符的是( ) (A) If (B) H_J (D) LINE12 3、下面属于C 语言标识符的是( )。 (A) 2ab (B) @f (C) b 4、下列符号中用来表示C 语言中的回车换行的是( )。 (A) \r (C) \b (D) \t 5、在计算机系统中,可执行程序是( ) (A) 源代码 (B)汇编语言代码 (D) ASCII 码 6、在Visual C++ 环境下,C 源程序文件名的默认后缀是( )。 (A) .obj (B) .txt (D) .doc 7、Microsoft Visual C++ 中,C 语言可执行程序的扩展名是:( ) (B) obj (C) c 或cpp (D) txt 8、C 程序由( )组成。 (A)子程序 (B) 主程序和子程序 (D) 过程 9、C 程序的基本组成单位( )。 (A) 数据类型 (B) 变量和常量 (D) 表达式 10、C 语言中主函数的个数是( )。 (A) 2个 (C) 任意个 (D) 10个 11、一个 C 程序的执行是从( ) (B)本程序文件的第一个函数开始,到本程序文件最后一个函数结束. (C)本程序文件的第一个函数开始,到本程序main 函数结束. (D) 本程序的main()函数开始,到本程序文件的最后一个函数结束. 12、以下叙述正确的是 (A)在C 语言程序中,main 函数必须放在其他函数的最前面 (C)在C 语言程序中,只有main 函数才可单独进行编译 (D)每个后缀为.C 的C 语言源程序都应该包含一个main 函数 13、设变量a 是整型,b 是实型,c 是双精度型,则表达式2+’a’+b*c 值的数据类型是( )。 (A) int (B) float 14、以下选项中表示一个合法的常量是(说明:符号□表示空格) A) 9□9□9 C) D) 15、以下选项中非法的字符常量是 A)'\102' B)'\65' C)'\xff' 16、以下选项中,能表示逻辑值“假”的是 A)1 B) D) 17、下列关系表达式中,结果为“假”的是 A)(3+4)>6 C) 3<=4||3 D)(3<4)==1 18、关于C 语言变量,以下说法不正确的是( ) (A) 变量名由程序员定义,必须符合标识符的命名规则。 (B) 变量是程序运行过程中其值可以改变的量。 (D) 变量命名时应尽量做到见名知意。 19、关于C 语言中数的表示,以下叙述正确的是 B)只要在在允许范围内整型和实型都能精确表示 C)只有实型数在允许范围内能精确无误的表示,整型数会有误差 D)只有八进制表示的数在不会有误差 20、设有语句int a=3;,则执行了语句a+=a=a*a;后,变量a 的值是 。 A .3 B .0 C .9 21、在C 语言中,要求运算数必须是整型的运算符是 。 B ./ C .< D .! 22、C 语言中最简单的数据类型包括 。 A .整型、实型、逻辑型 C .整型、字符型、逻辑型 D .整型、实型、逻辑型、字符型 23 、在C 语言中,合法的字符型常量是 。 B ."A" C .65 D .A 24、若已定义x 和y 为double 型变量,则表达式x=1 ,y=x+3/2的值是 。 A .1 B .2 D . 25、设正x 、y 均为整型变量,且x=10,y=3,则以下语句的输出结果是 。 printf("%d,%d\n",x--,--y); A .10,3 B .9,3 C .9,2 26、若有定义int a=8,b=5,C;,执行语句C=a/b+;后,C 的值为 。 A . C . D .2 27、以下选项中,不正确的赋值语句是 。 A .++t; B .n1=(n2=(n3=0)); C .k=i==j; 28、设x 和y 均为 int 型变量,则语句:x+=y,y=x-y;x-=y;的功能是 。 A .把x 和y 按从大到小的顺序排列 B .把x 和y 按从小到大的顺序排列 C .无确定结果 29、以下程序的输出结果是 。 #include <> main() { char c='z'; printf("%c",c-25); } B .Z C .z-25 D .y 30、已知字母A 的ASCII 码为十进制数的65,以下程序的输出结果是 。 #include <> main() { char ch1,ch2; ch1='A'+'5'-'3'; ch2='A'+'6'-'3'; printf("%d,%c\n",ch1,ch2); B .B,C C .C,D D .不确定的值 31、若k 是int 型变量,则以下程序片段的输出结果是 。 k=-3; if(k<=0) printf("####"); printf("&&&&"); B .&&&& C .####&&&& D .有语法错误,无输出结果 32、关于以下程序,说法正确的是 。 #include <> main()

C语言习题及参考答案

C语言习题集 习题一 一.填空题 1.C程序是由(函数)构成的,一个C程序中至少包含(main函数)。因此,( 函数) 是C程序的基本单位。 2.C程序注释是由( /*) 和( */ ) 所界定的文字信息组成的。3.函数体一般包括( 变量声明) 和( 语句) 。 二.判断题 1.一个C程序的执行总是从该程序的main函数开始,在main函数最后结束。【错】 2.main函数必须写在一个C程序的最前面。【错】 3.一个C程序可以包含若干的函数。【对】 4.C程序的注释部分可以出现在程序的任何位置,它对程序的编译和运行不起任何作用。但是可以增加程序的可读性。【对】 5.C程序的注释只能是一行。【错】 6.C程序的注释不能是中文文字信息。【错】 8.可以使用Visual C++ 6.来编译和连接一个C程序。【对】 9.可以使用Visual C++ 6.来运行一个C程序。【对】 10.可以使用Visual C++ 6.来实时调试(即动态调试)一个C程序。【对】三.简答题 1.写出一个C程序的基本结构。 2.简要叙述使用Visual C++ 6.0编译和运行一个程序的步骤。 四.编程题 1.提高题:参照课本例1.1,试编写一个C程序,输出如下信息。(提示:使用键盘上的一些符号)。 2.提高题:试编写一个C程序,输出如下信息。 ********************** *** @ @ *** *** @ *** ********************** 试试看,可以输出其他组合图案吗?

习题二 一.选择题 1、合法的字符常量是(ACD)。 A)…\t?B) “A” C)…a?D)?\x32? 2、合法的字符常量是( D) 。 A)…\084?B) …\84? C)…ab?D)?\x43? 3、(B)是C语言提供的合法的数据类型关键字。 A)Float B)signed C)integer D)Char 4、在以下各组标识符中,合法的标识符是((4))。 (1)A)B01 B)table_1 C)0_t D)k% (2)A)Fast_ B)void C)pbl D) (3)A)xy_ B)longdouble C)*p D)CHAR ( 4 ) A) sj B) Int C)_xy D)w_y23 5、属于合法的C语言长整型常量的是(BD)。 A)5876273 B)0L C)2E10 D)(long)5876273 6、下面选项中,不是合法整型常量的是(B )。 A)160 B)-0xcdg C)-01 D)-0x48a 7、判断int x = 0xaffbc;x的结果是(D)。 A)赋值非法B)溢出C)为affb D)为affbc 8、下面选项中,均是合法浮点数的是(B)。 A)+1e+1 B)-.60 C)123e D)-e3 A)5e-9.4 B)12e-4 C)1.2e-.4 D).8e-4 A)03e2 B)-8e5 C)+2e-1 D)5.e-0 9、在C语言中,要求参加运算的数必须时整数的运算符是(C)。 A)/ B)* C)% D) = 10、在C语言中,字符型数据在内存中以(D)形式存放。 A)原码B)BCD码C)反码D)ASCII码 11、下列语句中,符合语法的赋值语句是(C)。 A)a=7+b+c=a+7;B)a=7+b++=a+7; C)a=(7+b,b++,a+7);D)a=7+b,c=a+7; 12、是非法的C语言转义字符(B )。 A)…\b?B)…\0xf? C)…\037? D)… \?? 13、对于语句:f=(3.0,4.0,5.0),(2.0,1.0,0.0);的判断中,( B )是正确的。A)语法错误B)f为5.0 C)f为0.0 D)f为2.0 14、与代数式(x*y)/(u*v) 不等价的C语言表达式是(A )。 A)x*y/u*v B)x*y/u/v C)x*y/(u*v) D)x/(u*v)*y 15、在C语言中,数字029是一个(D)。

C语言面试题及答案

1、局部变量能否和全局变量重名? 答:能,局部会屏蔽全局。要用全局变量,需要使用"::" 局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内。 2、如何引用一个已经定义过的全局变量? 答:extern 可以用引用头文件的方式,也可以用extern关键字,如果用引用头文件方式来引用某个在头文件中声明的全局变理,假定你将那个变写错了,那么在编译期间会报错,如果你用extern方式引用时,假定你犯了同样的错误,那么在编译期间不会报错,而在连接期间报错。 3、全局变量可不可以定义在可被多个.C文件包含的头文件中?为什么? 答:可以,在不同的C文件中以static形式来声明同名全局变量。 可以在不同的C文件中声明同名的全局变量,前提是其中只能有一个C文件中对此变量赋初值,此时连接不会出错 4、语句for( ;1 ;)有什么问题?它是什么意思? 答:和while(1)相同。 5、do……whi le和while……do有什么区别? 答:前一个循环一遍再判断,后一个判断以后再循环 6、请写出下列代码的输出内容 以下是引用片段: #include main() { int a,b,c,d; a=10; b=a++; c=++a; d=10*a++; printf("b,c,d:%d,%d,%d",b,c,d); return 0; }

答:10,12,120 7、static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别? 全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。而静态全局变量则限制了其作用域,即只在定义该变量的源文件内有效,在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用,因此可以避免在其它源文件中引起错误。 从以上分析可以看出,把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域,限制了它的使用范围。 static函数与普通函数作用域不同。仅在本文件。只在当前源文件中使用的函数应该说明为内部函数(static),内部函数应该在当前源文件中说明和定义。对于可在当前源文件以外使用的函数,应该在一个头文件中说明,要使用这些函数的源文件要包含这个头文件 static全局变量与普通的全局变量有什么区别:static全局变量只初使化一次,防止在其他文件单元中被引用; static局部变量和普通局部变量有什么区别:static局部变量只被初始化一次,下一次依据上一次结果值; static函数与普通函数有什么区别:static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝 8、程序的局部变量存在于(堆栈)中,全局变量存在于(静态区)中,动态申请数据存在于( 堆)中。 9、设有以下说明和定义: typedef union {long i; int k[5]; char c;} DATE; struct data { int cat; DATE cow; double dog;} too; DATE max; 则语句printf("%d",sizeof(struct date)+sizeof(max));的执行结果是:___52____ 答:DATE是一个union, 变量公用空间. 里面最大的变量类型是int[5], 占用20个字节. 所以它的大小是20 data是一个struct, 每个变量分开占用空间. 依次为int4 + DATE20 + double8 = 32.

c语言习题答案

实验一 (1)编程求37+29的值,实习VC环境。 #include void main() { int a,b,sum; a=37; b=29; sum=a+b; printf("sum=%d",sum); } (2)从键盘输入三个整数,求出最大数并输出。 #include void main() { int a,b,c,y; int max(int x,int y); printf("input a,b,and c:"); scanf("%d,%d,%d",&a,&b,&c); y=max(a,b); y=max(y,c); printf("\nmax=%d\n",y); } int max(int x,int y) { int z; if(x>y) z=x; else z=y; return(z); } (3)通过上机实践,运行下列程序并分析输出结果。 A 程序代码 #include void main() { char ch='a'; printf("%c对应的ASCII码是:%d\n",ch,ch); } 程序输出结果:a对应的ASC||码是:97

B 程序代码 #include void main() { int a=168; float b=123.456; float x=35.567,y; printf("a=%5d\n",a); printf("a=%-5d\n",a); printf("b=%6.2f\n",b); printf("b=%e\n",b); y=(int)(x*100+0.5)/100.0; printf("x=f,y=%f\n",x,y); } 程序输出结果: a=168 a=168 b=123.46b=1.234560e+002 x=f,y=35.567001 C程序代码 #include void main() { int a=168; printf("十进制数%d对应的八进制数是%o\n",a,a); printf("十进制数%d对应的十六进制数是%x\n",a,a); } 程序输出结果: 十进制数168对应的八进制数是250 十进制数168对应的十六进制数是a8

C语言练习题及参考答案

练习题1及参考答案 1. 单项选择题 (1)以下并非C语言的特点的是。 A. C语言简洁和紧凑 B. 能够编制出功能复杂的程序 C. C语言可以直接对硬件进行操作 D. C语言移植性好 【答】B (2)一个C程序的执行是从。 A. main()函数开始,直到main()函数结束 B. 第一个函数开始,直到最后一个函数结束 C. 第一个语句开始,直到最后一个语句结束 D. main()函数开始,直到最后一个函数结束 【答】A (3)在C程序中,main()的位置。 A. 必须作为第一个函数 B. 必须作为最后一个函数 C. 可以任意 D. 必须放在它所调用的函数之后 【答】C (4)一个C程序是由。 A. 一个主程序和若干子程序组成 B. 一个或多个函数组成 C. 若干过程组成 D. 若干子程序组成 【答】B (5)下列说法正确的是。 A. 在执行C程序时不是从main()函数开始的 B. C程序书写格式限制严格,一行内必须写一个语句 C. C程序书写格式比较自由,一个语句可以分行写在多行上 D. C程序书写格式严格要求一行内必须写一个语句,并要求行号 【答】C 2. 填空题 (1)一个C源程序至少有①个main()函数和②个其他函数。【答】①一②若干 (2)任何C语句必须以结束。

【答】分号 (3)C语言源程序的基本单位是。【答】函数 (4)C编译程序的功能是。【答】将C源程序编译成目标代码

练习题2及参考答案 1. 单项选择题 (1)以下字符串为标识符的是。 A. _MY B. 2_2222 C. short D. LINE 5 【答】A (2)下列符号可以作为变量名的是。 A. +a B. *p C. _DAY D. next day 【答】C (3)设c是字符变量,则以下表达式正确的是。 A. c=666 B. c='c' C. c="c" D. c="abcd" 【答】B (4)23+'m'+3.6-123.45/'b'的结果是型数据。 A. char B. double C. int D. long int 【答】3.6和123.45均为double型,运算结果也是double型。本题答案为B。 (5)若变量已正确赋值,以下符合C语言语法的表达式是。 A. a=a+7; B. a=7+b+c,a++ C. int(12.3%4) D. a=a+7=c+b 【答】选项A错误,以分号结尾是一个语句而不是表达式;选项B正确,是一个逗号表达式;选项C错误,因为%求模运算的两个运算数必须均为整数;选项D错误,给一个表达式(a+7)而非变量赋值是不正确的。本题答案为B。 (6)整型变量x=1,y=3,经下列计算后,x的值不等于6的表达式是。 A. x=(x=1+2,x*2) B. x=y>2?6:5 C. x=9-(--y)-(--y) D. x=y*(int)(4.8/2) 【答】选项A的计算过程——x=1+2=3,再计算x=x*2=6;选项B的计算过程——y>2为真,x=6;选项C的计算过程——式中有两个--运算,最后y=1,x=9-1-1=7;选项D的计算过程——x=y*(int)(4.8/2)=y*2=6。本题答案为C。 (7)若定义 int m=7,n=12; 则能得到值为3的表达式是。 A. n%=(m%=5) B. n%=(m-m%5) C. n%=m-m%5 D. (n%=m)-(m%=5) 【答】A、B、C、D选项各表达式的值分别是0、2、2、3。本题答案为D。 (8)以下程序的运行结果是。

c语言实验习题及答案详解

1.数据类型 a.输入一个小数点后有多位数字的小数,实现将其保留三位小数,并输出;, #include<> main() {double b,d; printf("请输入一个小数:"); scanf("%lf",&b); printf("输出原来的数:%f\n",b); b*=1000; b+=; b=(int)b; d=b/1000; printf("输出现在的数:%.3lf\n0",d); } b.输入一个4位整数,求其得各位数字的平方和;(1234 1+4+9+16=30) #include<> main() {int n,sum=0,i,t; printf("请输入一个四位整数:\n"); scanf("%d",&n); for(i=0;i<4;i++) {t=n%10; n/=10; sum+=t*t; } printf("%d\n",sum);

} c.定义字符型变量ch,写出六种给ch赋值字符’A’的代码; #include<> main() {char ch; ch='A'; ch=65; ch=0x41; ch=0101; ch='\101'; ch='\x41'; } d.编写程序输出26组大小写字母;(AaBbCc……….XxYyZz) #include<> main() {int i; for(i=65;i<91;i++) {printf("%c",i); printf("%c",i+32); } printf("\n"); } e.定义浮点型变量f1、f2,为f1赋值10的-30次,为f2赋值10的30次 #include<> main() { double f1,f2; f1=10e-30;

相关文档
相关文档 最新文档