当前位置:文档之家› C语言各章练习题

C语言各章练习题

C语言各章练习题
C语言各章练习题

目录

第一章程序设计和C语言 (2)

第二章最简单的C程序设计 (2)

第三章选择结构程序设计 (4)

第四章循环结构程序设计 (8)

第五章数组 (13)

第六章函数 (17)

第七章指针 (22)

第一章程序设计和C语言

一、选择题:

1.一个C程序的执行是从( A )

A、本程序的main函数开始,到main函数结束

B、本文件第一个函数开始,到本文件的最后一个函数结束

C、本程序的main函数开始,到本文件的最后一个函数结束

D、本文件的第一个函数开始,到本文件的main结束

2.以下说法不正确的是(D)

A、一个C源程序可由一个或多个函数组成

B、一个C程序必须包含一个main函数

C、C程序的基本组成单位是函数

D、在C程序中,注释说明只能位于一条语句的后面

3.C语言规定:在一个源程序中,main函数的位置(C)

A、必须在开始

B、必须在系统调用的库函数的位置

C、可以任意

D、必须在最后

4.源程序program.c经编译产生的目标文件和连接后产生的可执行文件是( B )

A、program.bak和program.obj

B、program.obj和program.exe

C、program.exl和program.c

D、program.bak和prgram.exe

第二章最简单的C程序设计

一、选择题

1.是合法的用户自定义标识符的( D )

A、ah-spks

B、double

C、

D、_myapple

2.以下正确的C语言标识符是(C)

A、%x

B、a+b

C、a123

D、test!

3.以下不能定义为用户标识符的是(C)

A、V oid

B、b_2

C、int

D、name

4.以下选项中可作为C语言合法整数的是( D )

A、11010(B)

B、0583

C、x2b2

D、0xafb

5.VC++6.0中的短整型数值在计算机中占用的字节个数是( B)

A、1

B、2

C、3

D、4

6.设short int型的数据长度为2个字节,则unsigned short 类型数据的取值范围是(B)P34

A、均为2个字节

B、0至65535

C、-3276至32767

D、-256至255 7.以下选项中可作为C语言合法常量的是(A)(指数E或e前必须有数字,后面必须有整数)

A、-80.0

B、-080

C、-8e1.2

D、-80.0e

8.在VC++6.0编译环境下,下列式中,值不为4的表达式是(D)P34,double为8字节

A、sizeof(unsigned long)

B、sizeof(long)

C、sizeof(unsigned int)

D、sizeof(double)

9.设有说明语句:char a=?\123?;则变量a( A)一个ascii字符

A、包含1个字符

B、包含2个字符

C、3个字符

D、说明不合法10.设x为一数字字符,则其所对应的十进制数值为(B)。

A、x

B、x-…0?

C、*x

D、&x

11.已知大写字母A的ASCII码值是65,a的ASCII码值是97,则用八进制表示的字符常量‘\101?为(A)

A、字符A

B、字符a

C、字符e

D、非法常量12.执行语句:int a=?1?+1.5;后,正确的叙述是(D)

A、a的值是字符‘3’

B、a的值是浮点数

C、不允许字符型和浮点型相加

D、a的值是字符?1?的ASCII码加1 13.若a为int类型,且其值为5,则执行表达式a+=a-=a*a后,a的值是(B)

A、-5

B、-40

C、-15

D、不确定14.设整型变量a的值为2,下列表达式值为1的是(C)

A、a%3

B、a/3

C、--a

D、a++

15.设变量a、b、c已定义并赋值,则下列表达式中符合C语言语法规则的是(B)

A、a=5++

B、a=b=c++

C、a=%2

D、b=a+1=2 16.下列式中,最终运算结果的数据类型不是浮点型的表达式的是(A )

A、(int)(3+3.0)

B、1e-3

C、(float)(3)

D、(int)3.0+3.0 17.设整型变量x、y、z均为2,表达式(x++)+(y++)+(z++)的值是(A)P45

A、6

B、7

C、8

D、9

18.C语言中计算a3的正确表达式是(C)P278 附录E

A、a^3

B、a**3

C、pow(a,3)

D、power(a,3) 19.下列表达式的值为0的是(A)

A、7/8

B、7%8

C、7/8.0

D、7<8

20.设float m=4.0, n=4.0; 使m为10.0的表达式是(D)

A、m-=n*2.5

B、m/=n+9

C、m*=n-6

D、m+=n+2 21.C语言中运算对象必须是整型的运算符是(A)。

A、%=

B、/

C、=

D、<=

22.C标准函数中,数学函数原型在(B)头文件中。

A、stdio.h

B、math.h

C、string.h

D、etype.h 23.p utchar函数可以向终端输出一个(D)P65

A、整数

B、实数

C、字符串

D、字符

24.设有语句scanf(%d,%d”,&m,&n);要使m、n的值依次是2、3,正确是输入是(B)

A、2 3

B、2,3

C、2;3

D、2

3

25.设变量定义为int a,b;执行下列语句时,输入( B),则a和b的值都是10 scanf(“%d,%d”,&a,&b);

A、10 10

B、10,10

C、a=10 b=10

D、a=10,b=10 26.有如下程序段:

int a=3,b=15;

float f=7.5;

printf(“%.1f”,(float)a+b/2+(int)f%3);

执行该程序段后,运算结果为:( B )

A、11.5

B、11.0

C、11

D、12.0

27. 数字字符0的ASCII 值为48,若有以下程序

main()

{ char a='1',b='2';

printf("%c,",b++); printf("%d\n",b-a);

}

程序运行后的输出结果是 ( C ) A 、3,2 B 、50,2 C 、2,2 D 、2,50 28. 有以下程序 void main()

{ int m=12,n=34;

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

}

程序运行后的输出结果是 ( A ) A 、12353514 B 、12353513 C 、12343514 D 、12343513 29. 有以下程序

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 )

A 、m=123n=456p=789

B 、m=123 n=456 p=789

C 、m=123,n=456,p=789

D 、123 456 789 30. ?short int a=-2;printf(“%hu ”,a);输出为( C )

A 、2

B 、-2

C 、65534

D 、-65534

二、填空题

1. 设int a=3,b=5;float x=7.5,y=3.5;则表达式:(float)a+b/2+(int)x%(int)y 是值是 6.0 。

2. 一个三位整数n 的中间一位数字可表示为 n/10%10 。

3. 代数式

d

c ab

++3表示成C 表达式为 (3+a*b)/(c+d) 第三章 选择结构程序设计

一、选择题

1. 在C 程序中,用(A )表示逻辑”真”。

A 、1

B 、非0的数

C 、非1的数

D 、大于0的数 2. 若有定义:int x=2,y=3,z=4;则表达式!(x+y)+z-1&&y+z%2的值为( C )

A 、4

B 、0

C 、1

D 、2 3. 设int a=0,b=0,c=0;c=++a||b++;则a 、b 、c 值分别为( D )P77

A、0 1 0

B、1 1 1

C、1 1 0

D、1 0 1

4.执行语句:int a=1,b=0,c;c=a>0||++b;后,b的值为( A )

A、0

B、1

C、2

D、不确定

5.为表示关系x>y>=z,则正确的c语言表达方式为( C )。

A、(x>y>=z)

B、(x>y)and(y>=z)

C、(y=z)

D、(x>y)&(y>=z)

6.若变量ch为char类型,能正确判断出ch为大写字母的表达式是(D)

A、?A?<=CH<=‘Z’

B、(ch>=?A?)||(ch<=?Z?)

C、(…A?<=ch) and (…Z?>=ch)

D、(ch>=?A?)&&(ch<=?Z?)

7.?若变量已正确定义,语句”if(x>y) z=0;else z=1”和( C)等价。

A、z=(x>y)?1:0

B、z=x>y;

C、z=x<=y;

D、x<=y?0:1

8.最适合解决选择结构”a>=0,则b=1;否则b=0”的语句是(B)

A、if

B、if—else

C、switch

D、嵌套的if--else

9.若a=3, 执行下列语句后,b的值为(D)(两个if..else语句)

if (a>=2) if( a!= 2) b=3; else b=2; else b=1;

A、0

B、1

C、2

D、3

10.若整型变量a、b、c、d中的值依次为:1、4、3、2。则条件表达式a

(A)(相当于a>b?a:(c>d?c:d))

A、1

B、2

C、3

D、4

11.逗号表达式(a=4*5,a*2),a+15 的值是(A)

A、35

B、40

C、55

D、20

12.设int a=5, b=4; 则表达式(a = b++)?++a:b++)的值是(B)

A、4

B、5

C、6

D、3

13.有以下程序

main()

{

int a,b,d=25;

a=d/10%9;

b=a&&(-1);

printf("%d,%d\n",a,b);

}

程序运行后的输出结果是(B)

A、6,1

B、2,1

C、6,0

D、2,0

14.有以下程序

main()

{ int i=1,j=2,k=3;

if(i++==1&&(++j==3||k++==3))

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

}

程序运行后的输出结果是( D)

A、1 2 3

B、2 3 4

C、2 2 3

D、2 3 3

15.有以下程序

main()

{ i nt a = 0,b = 0,c = 0,d = 0;

if (a = 1)b = 1; c = 2;

else d = 3;

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

}

程序输出(D)

A、0,1,2,0

B、0,0,0,3

C、1,1,2,0

D、编译有错

二、填空题

1.条件判断语句包括if语句和switch语句。

2.判断两个float类型变量x,z是否相等,一般语句:if( abs(x-z)<1e-6)。

3.表达式1<0<2的值是1

4.以下程序运行后的输出结果是 4 5 99

main()

{

int a=3,b=4,c=5,t=99;

if(b

if(a

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

}

5.以下程序运行后的输出结果是10 20 0P77

main()

{

int a,b,c;

a=10;b=20;c=(a%b<1)||(a/b>1);

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

}

三、写出程序运行的结果

【程序1】

#include

void main()

{

char c1 = 97;

if (c1 >= 'a'&&c1 <= 'z')

printf("%d, %c", c1, c1 + 1);

else printf("%c", c1);

} 97 , b

【程序2】#include

main()

{ int x=1,y=1,a=0,b=0;

switch(x)

{case 1:switch(y)

{ case0:a++;

case 1:b++;

case2:b++;break;

}

case 2:a++;b++;break;

case 3:a++;b++;

}

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

} a=1,b=3

【程序3】#include

main()

{

char c;

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

{

switch (c - '1')

{

case 0:

case 1:putchar(c + 2);

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

case 3:putchar(c + 4);

default:putchar(c + 1); break;

}

printf("\n");

}

}

输入:3210输出结果:

6

45

34

1

四、程序设计

1.设计程序实现从键盘接收3个数,输出最大数和最小数。

○1#include

int main()

{

int a,b,c,max,min;

printf("please input three interge:\n");

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

if(a>b) max=a,min=b;

else max=b,min=a;

if(a>c) max=a,min=c;

else max=c,min=a;

if(b>c) max=b,min=c;

else max=c,min=b;

printf("max=%d,min=%d\n",max,min);

return 0;

}

○2#include

void main()

{

int a, b, c;

printf("请输入三个数:\n");

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

int max = a;

int min = a;

if (max < b)

max = b;

else

min = b;

if (max < c)

max = c;

else if (min > c)

min = c;

printf("最大数为%d\n最小数为%d\n", max, min);

}

2.输入一百分制的成绩,输出他的等级,90以上“A”等,80-89为“B”等,70-79为“C”等,60-69为“D”等,60以下为“E”等。

○1#include

int main()

{

int m,s;

printf("Enter the Student's Score:\n");

scanf("%d",&s);

m=s/10;

if(m<=10 && m>=9) printf("A\n");

else if(m<9&&m>=8) printf("B\n");

else if(m<8 && m>=7) printf("C\n");

else if(m<7 &&m>=6) printf("D\n");

else printf("E");

return 0;

}

○2#include

void main()

{

int score, i;

printf("Enter the Student's Score:\n");

scanf("%d",&score);

i = score / 10;

switch (i)

{

case 10:

case 9: printf("A\n"); break;

case 8: printf("B\n"); break;

case 7: printf("C\n"); break;

case 6: printf("D\n"); break;

default: printf("E\n");

}

}

第四章循环结构程序设计

一、选择题:

1.以下叙述正确的是(D)

A、do-while语句构成的循环不能用其它语句构成的循环来代替

B、do-while语句构成的循环只能用break语句退出

C、do-while语句构成的循环,在while后的表达式为非零时结束循环

D、do-while语句构成的循环,在while后的表达式为零时结束循环

2.设有程序段:

int k=10;

while(k=0) k=k-1;

则循环体执行的次数为(C)

A、10次

B、9次

C、0次

D、1次

3.有以下循环:

int i;

for(i=0;i<10;i++)i++;

循环次数为:(B)

A、10

B、5

C、6

D、7

4.语句while(!end);中的条件!end等价于(A)

A、end==0

B、end!=1

C、end!=0

D、-end

5.设变量y值为3,执行下列循环语句后,变量y的值的是(C)

do y++; while(y++<4);

A、3

B、4

C、5

D、6

6.?执行语句for(i=1;i++<4;); 后变量i的值是( C)

A、3

B、4

C、5

D、0

7.?下列( D) 循环不是无限循环

A、for(y=0; x=1 ; ++y);

B、for(; ; x=0);

C、while (x=1) {x=1; }

D、for(y=0,x=1;x> ++ y; x++) ;

8.有以下程序

main()

{ int a=1,b;

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

{ if(a>=8) break;

if(a%2==1) { a+=5; continue;}

a-=3;

}

printf("%d\n",b);

}

程序运行后的输出结果是( B)

A、3

B、4

C、5

D、6

9.?下列程序运行的结果是(D)

#include

main()

{

int y = 10;

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

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

}

A、-1

B、-2 D、1 D、0

二、程序填空

【程序1】求两个整数m 和n 最大公约数。

# include

void main( )

{ int m, n, a, b, r;

scanf("%d%d", &m, &n);

a=m; b=n;

do{ r= a%b;

a=b;

b= r;

} while ( b!=0 );

printf("The greatest common divide of %d and %d is %d\n" , m, n, a);

}

【程序2】下列程序的主要功能是计算并输出(1)×(1+2)×(1+2+3)×…×(1+2+…+10),将程序中横线处缺少的部分填上。

# include

void main()

{float y=1,x;

int i,j;

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

{ x=0 ;

for(j=1;j<=i;j++) x=x+j;

y=y*x;

}

printf("%f\n",y);

}

三、阅读程序,写出运行结果

[程序1] #include

main( )

{ int i, m=0, n=0, k=0;

for(i=5;i<=7;i++)

switch(i/6)

{ case 0: m++; n++;

case 6: n++; break;

default: k++; n++;

}

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

}1,4,2

【程序2】#include

main()

{ int i,j;

for(i=0;i<=3;i++)

{ for(j=0;j

printf("%d",i);

printf("*\n");

}

}

*

1*

22*

333*

【程序3】有如下程序

main()

{ int n=8;

while(n>5)

{n--;

printf("%d",n);}

}7 6 5

则该程序输出的结果是:

【程序4】main()

{ int i,j,k;

for(i=0;i<5;i++)

{ for(k=0;k<=5-i;k++) printf(" ");

for(j=0;j<2*i-1;j++) printf("*");

printf("\n");

}

}

*

* * *

* * * * *

* * * * * * *

四、程序设计

1.编写程序打印以下图案(必须使用循环结构,直接输出不给分)1

23

456

7890

○1#include

int main()

{ int i, j, k = 1;

for ( i = 0; i < 4; i++)

{

for (int j = 0; j <= i; j++)

{

printf("%d", k % 10);

k++;

}

putchar('\n');

}

return 0;}

○2#include

int main()

{

int a[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };

int i, j, k = 0;

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

{

for (j = 0; j

printf("%d",a[k++]);

printf("\n");

}

return 0;

}

2.求出10 到100内能同时被2、3、7整除的数,并输出。

#include int main()

{

int i; for(i=10;i<100;i++)

if(i%2==0 && i%3==0 && i%7==0)

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

}

3.从键盘输入若干学生成绩,找出并输出最高和最低成绩,当输入成绩为负值是结束。

#include

int main()

{

float score,max,min;

int i=0;

printf("please input yours score:\n"); scanf("%f",&score);

max=0;

min=101;

while(score!=-1) {

i++;

if(score>max) max=score;

if(score

scanf("%f",&score);

}

printf("max=%.3f,min=%.3f\n",max,min) ;

}

4.计算1~500之间(即从1到500)的全部"完数"之和。所谓"完数"是指一个数,它的所有真因子之和等于该数。

#include

int main()

{

int i,j,sum=0,n;

for(i=1;i<=500;i++) {n=0;

for(j=1;j

if(i%j==0)

n=n+j;

if(i==n)

{sum=sum+i;

printf("%d\n",i);} }

printf("sum=%d\n",sum); }

5."百马百担"问题。有100匹马驮100担货,每匹大马每次驮3担,每匹中马每次驮2担,2匹小马每次分驮1担。编写程序求大、中、小马的匹数(大、中、小马的匹数均不得为

0)。

#include

int main()

{

int big,small,middle;

int i,j; for(big=0;big<34;big++)

{

for(middle=0;middle<=50;middle++) {

for(small=0;small<100;small=small+2)

if(big+middle+small==100 && big*3+middle*2+small/2==100)

printf("big

horse=%d,middle horse=%d,middle horse=%d\n",big,middle,small);

}

} }

6.求s=2/1-3/2+5/3-8/5+...前20项的值

#include "stdio.h"

void main()

{ int i,sign=1;

float m = 1, n = 1, t, s = 0;

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

{

t = m + n;

s = s + (t / n)*sign;

sign = -sign;

m = n;

n = t;

}

printf("s is %9.6f\n", s);

}

7.输入一行字符(以回车结束输入),统计其中数字字符、字母和其它字符的个数。

#include

int main()

{

char a;

int number=0,letter=0,other=0;

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

{

if(a<='9' && a>='0')

number=number+1;

else if((a>='A'&& a<='Z') || (a>='a' && a<='z'))

letter=letter+1;

else

other=other+1;

}

printf("number=%d,letter=%d,other=%d\ n",number,letter,other);

}

第五章数组

一、选择题:

1.数组定义为int a[10][10];,则数组a有(A)个数组元素。

A、100

B、81

C、20

D、121

2.以下一维数组a的正确定义是(D)

A、int a(10);

B、int n=10,a[n];

C、int n;

D、#define N 10

scanf(“%d”,&n); int a[N];

int a[n];

3.设有语句”int a[]={3,4,5,9,8,7};”则表达式a[1]-a[4]的值是(C)

A、-6

B、6

C、-4

D、2

4.以下不能正确定义二维数组的是(D)

A、int a[2][2]={ {4}, {5}};

B、int a[][2]={4,5,6,7};

C、int a[2][2]={ {4},5,6};

D、int a[2][]={{4,5},.{6,7}};

5.有以下程序

main()

{ int num[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}},i,j;

for(i=0;i<4;i++)

{for(j=0;j<=i;j++) printf("%4c",' ');

for(j= ; j<4;j++) printf("%4d",num[i][j]);

printf("\n");

}

}

若要按以下形式输出数组右上半三角

1 2 3 4

6 7 8

11 12

16

则在程序下划线处应填入的是( B)

A、i-1

B、i

C、i+1

D、4-i

6.在执行char str[10]="china\n\0";strlen(str)的结果是(B )

A、5

B、6

C、7

D、8

7.有以下程序

main()

{ int p[8]={11,12,13,14,15,16,17,18},i=0,j=0;

while(i++<7) if(p[i]%2) j+=p[i];

printf("%d\n",j);

}

程序运行后的输出结果是( B)

A、42

B、45

C、56

D、60

8.以下程序的输出结果是( B )

#include

#include

main()

{ char st[20]="2000\0\t\\";

printf("%d,%d\n",strlen(st),sizeof(st));

}

A、7,7

B、4,20

C、10,20

D、20,20

9.将两个字符串s1和s2 连接起来,正确的函数为(B) P280

A、strcpy( s1,s2)

B、strcat( s1,s2)

C、strcmp(s1,s2)

D、strlen(s1,s2)

10.以下能正确定义一维数组的选项是( B )

A、int a[5]={0,1,2,3,4,5};

B、char a[]={0,1,2,3,4,5};

C、char a={'A','B','C'};

D、int a[5]="0123";

11.设char b[10]; 若从键盘输入字符串“spkaoshi” ,则正确的函数引用是( C)

A、scanf(“%s”, &b);

B、scanf(“%c”,&b[10]);

C、gets(b);

D、gets(b[10]);

12.有以下程序

main()

{ char p[]={'a', 'b', 'c'}, q[]="abc";

printf("%d %d\n", sizeof(p),sizeof(q));

}

程序运行后的输出结果是( C )

A、4 4

B、3 3

C、3 4

D、4 3

13.有以下程序

main( )

{ char a[]="abcdefg",b[10]= "abcdefg";

printf("%d %d\n",sizeof(a),sizeof(b));

}

执行后输出结果是( C)

A、7 7

B、8 8

C、8 10

D、10 10

二、程序填空

下列程序是建立一个按以下格式输出的二维数组。

1 0 0 0 1

0 1 0 1 0

0 0 1 0 0

0 1 0 1 0

1 0 0 0 1

# include

main( )

{ int a[5][5],i,j;

for(i=0;i<5;i++)

for(j=0;j<5; j++)

a[i][j]= 0__ ___ ;

for(i=0;i<5;i++)

{ a[i][i]=1;

a[i][5-1-i]=0;

}

for(i=0;i<5;i++)

{ for(j=0;j<5;j++)

printf(“%3d”,a[i][j]);

printf(“\n”);

}

}

三、写出程序运行的结果

【程序1】程序运行时,假定从键盘输入:1234567890987654321

#include

main()

{

int i, ch,a[8];

for (i = 0; i<8; i++) a[i] = 0;

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

if (ch >= '0'&&ch <= '7')

a[ch - '0']++;

for (i = 0; i<8; i += 2)

printf("a[%d], %d\n", i, a[i]);

}

a[0],1

a[2],2

a[4],2

a[6],2

【程序2】

#include

main()

{

int y[2][3] = { 9, 8, 7, 6, 5, 4 };

int m[2], k, j;

for (k = 0; k<2; k++)

{

m[k] = y[k][0];

for (j = 1; j<3; j++)

if (y[k][j]

}

k = 0;

printf("%d\n", m[k]);

} 7

四、程序设计

1.将一个字符串中的所有数字字符组合成一个整数(如“a1bc23d4”,组合成整数1234)。

#include void main()

{

char n[20];

int m=0,i,j;

gets(n);

for(i=0;n[i]!='\0';i++)

if(n[i]>='0' &&n[i]<='9')

{ j=n[i]-'0';

m=m*10+j;

}

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

}

2.将输入的十进制数转换为二进制数输出。

#include

void main()

{

int i,n,a[20];

scanf("%d",&n);

for(i=0;n!=0;i++)

{ a[i]=n%2;

n=n/2;

}

for(i--;i>=0;i--)

printf("%d",a[i]);

printf("\n");

}

3.计算200以内的其平方具有回文性质的正整数输出。例如11^2=121,111^2=12321都是满足条件的正整数。

#include

void main()

{

int i,j,k,n,a[20];

for(i=0;i<=200;i++)

{ n=i*i;

for(j=0;n!=0;j++)

{ a[j]=n%10;

n=n/10;

}

for(k=0;k<=(j-1)/2;k++)

if(a[k]!=a[j-1-k]) break;

if(k>(j-1)/2)

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

}

}

第六章函数

一、选择题:

1.在C程序中,若对函数类型未加说明,则函数的隐含类型为( A )

A、int

B、double

C、void

D、char

2.C语言中的函数(D)

A、可以嵌套定义

B、不可以嵌套调用

C、可以嵌套定义,但不能递归调用

D、嵌套调用和递归调用都可以

3.C语言auto型变量是( A)

A、存储在动态存储区中

B、存储在静态存储区中

C、存储在外存储器中

D、存储在计算机CPU的寄存器中

4.有以下函数定义:

void fun( int n, double x) { …………}

下面函数调用正确的是(A)

A、fun( x, n)

B、k=fun(10,12.5)

C、fun(int x, double y)

D、void fun(n, x)

5.有以下程序

int f1(int x,int y){return x>y?x:y;}

int f2(int x,int y){return x>y?y:x;}

main()

{ int a=4,b=3,c=5,d=2,e,f,g;

e=f2(f1(a,b),f1(c,d));

f=f1(f2(a,b),f2(c,d));

g=a+b+c+d-e-f;

printf("%d,%d,%d\n",e,f,g);

}

程序运行后的输出结果是( A)

A、4,3,7

B、3,4,7

C、5,2,7

D、2,5,7

6.以下叙述中错误的是( C )

A、对于double类型数组,不可以直接用数组名对数组进行整体输入或输出

B、数组名代表的是数组所占存储区的首地址,其值不可改变

C、当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”

的出错信息

D、可以通过赋初值的方式确定数组元素的个数

7.有以下程序

#define N 20

fun(int a[],int n,int m)

{ int i,j;

for(i=m;i>=n;i--)

a[i+1]=a[i];

}

main()

{ int i,a[N]={1,2,3,4,5,6,7,8,9,10};

fun(a,2,9);

for(i=0;i<5;i++)

printf("%d",a[i]);

}

程序运行后的输出结果是( C)

A、10234

B、12344

C、12334

D、12234

8.有以下程序

int a = 2;

int f(int n)

{ static int a = 3;

int t = 0;

if (n % 2){ static int a = 4; t+=a++; }

else { static int a = 5; t+=a++; }

return t+a++;

}

main()

{ int s = a, i;

for (i = 0; i<3; i++)

s += f(i);

printf("%d\n", s);

}

程序运行后的输出结果是( C)

A、26

B、28

C、29

D、24

9.有以下程序

void sum(int a[])

{ a[0] = a[-1] + a[1]; }

main()

{ int a[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

sum(&a[2]);

printf("%d\n", a[2]);

}

程序运行后的输出结果是( A)

A、6

B、7

C、5

D、8

10.有以下程序

int f(int a)

{ return a%2; }

main()

{ int s[8]={1,3,5,2,4,6},i,d=0;

for (i=0;f(s[i]);i++) d+=s[i];

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

}

程序运行后的输出结果是( A)

A、9

B、11

C、19

D、21

二、程序填空

下面程序实现删除字符串中某个字符,请将程序补充完整。

# include < stdio.h>

char s[] = "this, is, a string";

void main()

{ void sdelete (char s[] , char c);

char c =','; //这里说的是可以删除的字符,这里删除的是“,”,可以更改

printf("%s\n", s);

sdelete( s,c);

printf("%s\n", s);

}

void sdelete (char s[] , char c)

{ int i,j;

for(i=j=0;s[i]!= '\0'; ++i)

if (s[i]!= c)

s[j++]=s[i];

s[j]=?\0?;

}

三、写出程序运行的结果:

【程序1】以下程序运行后的输出结果是:

#include"stdio.h"

int f(int c)

{ static int a=10;

int b=++a;

printf(“%d,%d,%d\n”,a,b,c);

return (a+b+c);

}

main()

{ printf("%d",f(f(5)));}

11,11,5

12,12,27

51

【程序2】以下程序运行后的输出结果是:

#include"stdio.h"

int fun( int n)

{ if(n<10)

return n;

else

return (n%10)*fun(n/10);

}

main()

{ printf("%d",fun(218)); }

16

//将218给n,n=218,n>10,所以(218%10)*fun(218/10)=8*fun(22)fun(22),n=22>10,所以(22%10)*fun(22/10)=2*fun(2)

fun(2),n<10,所以返回n,8*2=16

【程序3】以下程序运行后的输出结果是:

int w=2;

int f(int x)

{ int y=1;

static int z=3;

y++;z++;

return(x+y+z);

}

main()

{ int k;

for(k=0;k<3;k++)

printf("%4d",f(w++));

}

8 10 12

【程序4】以下程序运行后的输出结果是:

#include

long fun( int n)

{ long s;

if( n== 1|| n==2) s=2;

else s=n+ fun(n-1);

return s;

}

void main ( )

{ printf("\n %ld", fun (5)); }

14

【程序5】以下程序运行后的输出结果是:

void swap(int x,int y)

《C语言程序设计教程》(第三版)李凤霞 主编——第一章习题答案

第一章:程序设计基础知识 一、单项选择题 1、面向过程的程序设计语言是________。 A)机器语言 B)汇编语言 C)高级语言 D)第四代语言 2、程序设计一般包含以下四个步骤,其中其中首先应该完成的是_________。 A)设计数据结构和算法B)建立数学模型 C)编写程序 D)调试和运行程序 3、以下常用算法中适合计算等差级数的算法是_________。 A)枚举法B)递推法 C)分治法 D)排序法 4、以下不属于算法基本特征的是__________。 A)有穷性 B)有效性C)可靠性 D)有一个或多各输出 5、以下描述中不正确的是___________。 A)程序就是软件,但软件不仅仅是程序。 B)程序是指令的集合,计算机语言是编写程序的工具。 C)计算机语言都是形式化的语言,它有一个语法规则和定义。 D)计算机语言只能编写程序而不能表示算法。 6、下面描述中,正确的是_____________。 A)结构化程序设计方法是面向过程程序设计的主流。 B)算法就是计算方法。 C)一个正确的程序就是指程序书写正确。 D)计算机语言就是编写程序的工具而不是表示算法的工具。 7、下面描述中,不正确的是______________。 A)递归法的关键是必须有一个递归终止的条件。 B)递归算法要求语言具有反复自我调用子程序的能力。 C)对于同一个问题,递推算法比递归算法的执行时间要长。 D)递推算法总可以转换为一个递归算法。 8、N-S图与传统流程图比较,主要优点是_________。 A)杜绝了程序的无条件转移。 B)具有顺序、选择和循环三种基本结构。 C)简单、只管。 D)有利于编写程序。 A)B)C)D) 二、填空题 1、在流程图符号中,判断框中应该填写的的是________。(判断条件) 2、结构化程序设计是__________应遵循的方法和原则。(面向过程编程) 3、结构化程序必须用__________程序设计语言来编写。(具有结构化控制语句) 4、可以被连续执行的一条条指令的集合称为计算机的________。(程序) 5、只描述程序应该“做什么”,而不必描述“怎样做”的语言被称为________。(面向对象) 6、任何简单或复杂的算法都是由_____和_____这两个要素组成。(功能操作流程控制) 7、算法的_______特征是指:一个算法必须在执行有限个操作步骤后终止。(有穷性) 8、在三种基本结构中,先执行后判断的结构被称为_________。(直到型循环结构) 9、在程序设计中,把解决问题确定的方法和有限的步骤称为______。(算法) 10、程序设计风格主要影响程序的________。(可读性)

(完整版)C语言程序设计教程第五章练习题题目

单选题 1、关于数组的定义与初始化,下列哪一项是错误的() A.int arr[5] = {1,2,3,4,5}; B.int arr[] = {1,2,3,4,5}; C.int arr[5] = {1,2,3}; D.int arr[5] = {1,2,3,4,5,6}; 2、在定义数组int arr[10]后,下列选项中对arr的引用正确的是() A.arr[10] B.arr[6.3] C.arr(6) D.arr[0] 3、在C语言中,引用数组元素时,其数组下标的数据类型允许是() A.整型常量 B.整型表达式 C.整型常量或整型表达式 D.任何类型的表达式 4、若int arr[5] = {1,2,3}; 则arr[2]的值为() A.1 B.2 C.3 D.null 5、在执行int arr[][3] = {1,2,3,4,5,6}:语句后,arr[1][0]的值为() A.4 B.1 C.2 D.5 6、关于二维数组,下列选项能正确定义并赋初值的是() A.int n = 5,b[n][n]; B.int a[1][2] = {{1},{3}}; C.int c[2][] = {{1,2},{3,4}}; D.int a[3][2] = {{1,2},{3,4}}; 7、阅读下列程序段: char s[18] = "a book!"; printf("%.4s\n", s); 其输出结果为() A.a book! B.a book C.a bo D.a 8、阅读下列程序: int a[4][4] = { { 1, 3, 5, }, { 2, 4, 6 }, { 3, 5, 7 } }; printf("%d%d%d%d\n", a[0][0], a[1][1], a[2][2], a[3][3]);

《C语言程序设计》第1章 C语言概述练习题答案

第一章 C语言概述练习题 一、选择题 1.C语言是一种( )。 A) 机器语言B) 汇编语言C) 高级语言D) 低级语言 2.下列各项中,不是C语言的特点是( )。 A) 语言简洁、紧凑,使用方便B) 数据类型丰富,可移植性好 C) 能实现汇编语言的大部分功能D) 有较强的网络操作功能 3.下列叙述正确的是( )。 A) C语言源程序可以直接在DOS环境中运行 B) 编译C语言源程序得到的目标程序可以直接在DOS环境中运行 C) C语言源程序经过编译、连接得到的可执行程序可以直接在DOS环境中运行 D) Turbo C系统不提供编译和连接C程序的功能 4.下列叙述错误的是()。 A) C程序中的每条语句都用一个分号作为结束符 B) C程序中的每条命令都用一个分号作为结束符 C) C程序中的变量必须先定义,后使用 D) C语言以小写字母作为基本书写形式,并且C语言要区分字母的大小写 5.一个C程序的执行是从()。 A) 本程序的main函数开始,到main函数结束 B) 本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C) 本程序文件的第一个函数开始,到本程序main函数结束 D) 本程序的main函数开始,到本程序文件的最后一个函数结束 6.以下叙述不正确的是()。 A) 一个C源程序必须包含一个main函数 B) 一个C源程序可由一个或多个函数组成 C) C程序的基本组成单位是函数 D) 在C程序中,注释说明只能位于一条语句的后面 7.C语言规定:在一个源程序中,main函数的位置( )。 A)必须在程序的开头B)必须在系统调用的库函数的后面 C)可以在程序的任意位置D)必须在程序的最后 8.一个C语言程序是由( )。 A)一个主程序和若干个子程序组成B) 函数组成 C) 若干过程组成D) 若干子程序组成 9.以下有4组用户标识符,其中合法的一组是()。 A) For B) 4d C) f2_G3 D) WORD -sub DO IF void Case Size abc define 10. 一个算法应该具有“确定性”等5个特性,下面对另外4个特性的描述中错误的是 ()。 A) 有零个或多个输入B) 有零个或多个输出C) 有穷性D) 可行性 二、填空题 1.汇编语言属于面向( 面向机器的 )语言,高级语言属于(面向问题的)语言。 2.用高级语言编写的程序称为(源)程序,它可以通过解释程序翻译一句执行一句的方式 执行,也可以通过编译程序一次翻译产生(目标)程序,然后执行。

C语言程序设计教程第一章练习题题目

单选题 1、下列语言中不属于计算机语言的三大类的是(C)。 A.机器语言 B.汇编语言 C.脚本语言 D.高级语言 2、下列说法中不正确的是(C) A.计算机语言大致可分为三大类,即机器语言、汇编语言和高级语言 B.C语言是一种通用的、过程式的编程语言,具有高效、灵活、可移植等优点 C.C语言属于汇编语言 D.高级语言比汇编语言更贴近于人类使用的语言,易于理解、记忆和使用 3、以下开发工具中不属于主流的开发工具的是(B) A.Visual Studio B.Xcode C.Code::Block D.Eclipse 4、下列选项是对主流开发工具的介绍,其中错误的是(B) A.Visual Studio支持C/C++、C#、F#、VB等多种程序语言的开发和测试 B.Code::Block是一个免费的跨平台IDE,支持C、C++和Fortan程序的开发 C.Eclipse是一种被广泛使用的免费跨平台IDE,最初由IBM公司开发 D.Vim是一款功能非常强大的IDE ( 和其他IDE不同的是,Vim本身并不是一个用于开发计算机程序的IDE,而是一款功能非常强大的文本编辑器,它是UNIX系统上Vi编辑器的升级版。) 5、下列选项中,不属于开发一个C语言应用程序的具体实现步骤的是(A) A.启动开发工具 B.添加源文件 C.编写代码 D.运行程序 6、下列选项中,关于main()函数叙述不正确的是(C) A.一个完整的C语言程序中,有且只能有一个main()函数 B.main()函数是程序的主入口,程序总是从main()函数开始执行 C.如果没有声明main()函数,程序将从第1行开始执行 D.main()函数可以有返回值,也可以没有返回值 7、下面程序中,合法的选项是(D) A.#includeint main() { printf("hello world\n"); return 0; } B.#includeint man() { printf("hello world\n"); return 0; } C.#includeint main() { printf("hello world\n") return 0; } D.#includeint main() { print("hello world\n"); return 0; } 8、下面程序中,运行结果为“1,2”的是(A) A.#includeint main() { int a = 1; int b = 2; printf("%d %d\n",a,b); return 0; } B.#includeint main() { int a = 1; int b = 2; printf("%d,"a); printf("%d\n",b); return 0; } C.#includeint main() { int a = 1, b = 2; printf("%d,,%d\n",a,b); return 0; }

第一章C语言概述习题附答案

第一章C语言概述 一、单选题 1. C语言程序的执行,总是起始于()。C A.程序中的第一条可执行语句 B.程序中的第一个函数 C.main函数 D.包含文件中的第一个函数 分析:在一个C语言源程序中,无论main函数书写在程序的前部,还是后部,程序的执行总是从main函数开始,并且在main函数中结束。本题正确答案为C。 2、C语言程序的基本单位是()。C A)程序行B)语句C)函数D)字符 3、C语言中规定:在一个源程序中main函数的位置()。C A.必须在最开始 B.必须在系统调用的库函数的后面 C.可以任意 D.必须在最后 4、以下述叙正确的是()。C A.在C程序中,main函数可有可无 B. C程序的每行中只能写一条语句 C. C语言本身没有输入输出语句 D. 在对一个C程序进行编译的过程中,可发现注释中的拼写错误 5、能将高级语言编写的源程序转换为目标程序的是()。C A.链接程序 B.网络程序 C.编译程序 D.WORD字处理程序 6、下列说法中正确的是()。C A)C程序书写时,不区分大小写字母 B)C程序书写时,一行只能写一个语句 C)C程序书写时,一个语句可分成几行书写 D)C程序书写时每行必须有行号 分析:C语言严格区分大小写字母,如"A1"和"a1"被认为是两个不同的标识符,C程序的书写非常灵活,既可以一行多句,又可以一句多行,且每行不加行号。本题正确答案为C。 7、下面对C语言特点,不正确描述的是()。C A)C语言兼有高级语言和低级语言的双重特点,执行效率高 B)C语言既可以用来编写应用程序,又可以用来编写系统软件 C)C语言的可移植性较差 D)C语言是一种结构式模块化程序设计语言 分析:C语言是介于汇编语言和高级语言之间的一种语言,由于它可以直接访问物理地址,对硬件操作,所以C语言既可以编写应用程序,又可以开发系统软件,而且C程序可移植性好于汇编语言,程序清晰具有模块化的特点。本题正确答案为C。 8、C语言源程序的最小单位是()。D A)程序行B)语句C)函数D)字符 分析:程序行、语句、函数都是由字符构成的,字符是C语言的最小单位。本题正确答案为D。 9.计算机内部运算使用的数是()。C A)十进制数B)十六进制数C)二进制数D)八进制数

计算机二级C语言章节练习题及答案(一)

1.1 程序和程序设计 1[单选题] 数据库概念设计的过程中,以下各项中不属于视图设计设计次序的是( )。 A.自顶向下 B.由整体到个体 C.由内向外 D.由底向上 参考答案:B 参考解析:数据库概念设计的过程中,视图设计一般有三种设计次序,它们是:自顶向下。这种方法是先从抽象级别高且普遍性强的对象开始逐步细化、具体化与特殊化。 由底向上。这种设计方法是先从具体的对象开始,逐步抽象,普遍化与一般化,最后形成一个完整的视图设计。由内向外。这种设计方法是先从最基本与最明显的对象着手逐步扩充至非基本、不明显的其他对象。 2[单选题] 关系数据库管理系统能实现的专门关系运算包括( )。 A.选择、投影、连接 B.排序、查找、统计 C.关联、更新、排序 D.显示、打印、制表 参考答案:A 参考解析:关系数据库管理系统能实现的专门关系运算,包括选择运算、投影运算、连接运算。 3[单选题] 关系表中的每一横行称为一个( )。 A.字段

B.元组 C.行 D.码 参考答案:B 参考解析:在关系数据库中,关系模型采用二维表来表示,简称“表”。二维表由表框架及表元组组成。在表框架中,按行可以存放数据,每行数据称为元组。本题答案是B)。 4[单选题] 下列叙述中正确的是( )。 A.数据库不需要操作系统的支持 B.数据库设计是指设计数据库管理系统 C.数据库是存储在计算机存储设备中的、结构化的相关数据的集合 D.数据库系统中,数据的物理结构必须与逻辑结构一致 参考答案:C 参考解析:数据库是存储在计算机存储设备中的、结构化的相关数据的集合。数据库中的数据不只是面向某一项特定的应用,而是面向多种应用,可以被多个用户、多个应用程序共享,不具有独立的系统。设计数据库的目的实质上是设计出满足实际应用需求的实际关系模型。数据库技术的主要目的是有效地管理和存取大量的数据资源,包括:提高数据的共享性,使多个用户能够同时访问数据库中的数据;减小数据的冗余,以提高数据的一致性和完整性;提供数据与应用程序的独立性,从而减少应用程序的开发和维护代价。本题答案为c)。 5[单选题] 数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是( )。 A.加工 B.控制流 C.数据存储

C语言程序设计第一章参考答案

第一章参考答案 1.3.1 思考: 1.error C2199: syntax error : found 'int (' at global scope (was a declaration intended?) error C2143: syntax error : missing ';' before '{' error C2447: missing function header (old-style formal list?) 在c程序设计中特别要注意每个程序都有且只有一个主函数,切忌不可忘了主函数main. 2. error LNK2001: unresolved external symbol _main fatal error LNK1120: 1 unresolved externals 在c程序设计中要注意区分大小写,相同的字符的大小写所代表的意义可能完全不一样。 3.error C2146: syntax error : missing ';' before identifier 'printf'. 在c程序设计中要注意每个完整的语句后面都必须要有“;”,否则就会出现错误。 4.error C2065: 'printf' : undeclared identifier error C2146: syntax error : missing ';' before identifier 'printf't. 在c程序设计中#include是包含头文件函数库,象标准的输入和输出函数’scanf’和’printf’都是包含定义在#include中的。所以一般的函数都不应缺少这个头文件。 5在例1-1.c中,任何一行的输出语句中少了符号\n,将会使下一条语句的输出紧跟在该行,而不会出现在例1-1.c那样的每行输出一条语句。 在C语言中符号\n的作用是在输出中换行。 6. error C2001: newline in constant error C2146: syntax error : missing ')' before identifier 'printf'’ 1.3.2 思考: 1.error C2065: ’x’ :undeclared identifier error C2065: ’y’ :undeclared identifier 在c程序设计中要注意,任何一个变量都要遵循先定义再使用的原则。 2 .程序运行出错,无法得到结果。 3 能 4. warning C4390: ';' : empty controlled statement found; is this the intent? error C2181: illegal else without matching if 这是因为判断语句if后面必须要有其他语句,这样if语句才有意义,满足if语句的条件后就执行跟在其后的语句,而在if(x>y)后面加分号就是使if(x>y)单独成为一个语句,所以才出现了错误。 5. 因为int、if、else在c语言中都是保留字(也叫关键字),它们是具有特定含义的、用 于构成语句成分或作为存储类型和数据类型说明的一些单词。

c语言循环章节练习题(部分答案)

循环章节练习题 一、选择题 1.设有程序段 int k=10; while (k=0) k=k-1; 则下面描述中正确的是_______. A. while循环执行10次。 B.循环是无限循环。 C.循环体语句一次也不执行。 D.循环体语句执行一次。 2.设有以下程序段: int x=0,s=0; while(!x!=0) s+=++x; printf(“%d”,s); 则________。 A. 运行程序段后输出0。 B. 运行程序段后输出1。 C.程序段中的控制表达式是非法的。 D.程序段执行无限次。 3.下面程序段的运行结果是________。 x=y=0; while(x<15) {y++;x+=++y;} printf(“%d,%d”,y,x); A.20,7 B. 6,12 C. 20,8 D. 8,20 3.下面程序的功能是从键盘输入的一组字符中统计出大写字母的个数m和小写字母的个数n,并输出m、n 中的较大者,请选择填空。 #incldue main() { int m=0,n=0; char c; while( (___1____)!=’\n’) { if(c>=’A’&&’Z’) m++; if(c>=’a’&&’z’) n++;} printf(“%d\n”,m main() { int a,max=0; scanf(“%d”,&a); while(_______) { if(max main() { int num=0; while(num<=2) { num++; printf(“%d\n”,num);} } A.1 B.1 C.1 D.1 2 2 2 3 3 4 6.若运行以下程序时,从键盘输入2473↙,则下面程序的运行结果是_______。 #include 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); defauit: putchar(c+2); break;} printf(“\n”); } A.668977 B.668966 C.66778777 D.6688766 7.C语言中while 和do—while循环的主要区别是_______。 A.do—while的循环体至少无条件执行一次 B.while的循环控制条件比do—while的循环控制条件严格。 C. do—while允许从外部转到循环体内。 D. do—while的循环体不能是复合语句。

c语言第1、2章练习题答案

第1、2章练习题 1.以下叙述正确的是()。B A)C语言程序是由过程和函数组成的B)C语言函数可以嵌套调用,例如fun(fun(x)) C)C语言函数不可以单独编译D)C语言除了main函数外,其他函数不可以作为单独文件形式存在 2.以下叙述正确的是()。C A)C程序的基本组成单位是语句B)C程序中的每一行只能写一条语句 C)简单的C语句必须以分号结束D)C语句必须在一行内写完 3.以下叙述中正确的是()。C A)C程序中的注释只能出现在程序的开始位置和语句的后面 B)C程序书写格式严格,要求一行内只能写一条语句 C)C程序书写格式自由,一条语句可以写在多行上 D)用C语言编写的程序只能放在一个程序文件中 4.下列叙述中错误的是()。A A)一个C语言程序只能实现一种算法B)C语言程序可以由多个程序文件组成 C)C语言程序可以由一个或多个函数组成D)一个C函数可以单独作为一个C程序文件存在5.以下叙述中正确的是()。C 页脚内容1

A)C语言程序将从源程序中的第一个函数开始执行 B)可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行C)C语言规定必须用main作为主函数名,程序从此开始执行,在此结束 D)main可作为用户标识符,用以命名任意一个函数作为主函数 6.对于一个正常运行的C程序,以下叙述正确的是()。A A)程序的执行总是从main函数开始,在main函数中结束 B)程序的执行总是从程序的第一个函数开始,在main函数结束 C)程序的执行总是从main函数开始,在程序的最后一个函数中结束 D)程序的执行总是从程序的第一个函数开始,在程序的最后一个函数中结束7.下列叙述正确的是()。D A)每个C语言程序文件中都必须有一个main( )函数 B)在C语言程序中main( )函数的位置是固定的 C)C语言程序中所有函数之间都可以相互调用,与函数所在的位置无关 D)在C语言程序的函数中不能定义另一个函数 8.下列叙述中错误的是()。B A)C程序在运行过程中所有计算机都以二进制方式进行 B)C程序在运行过程中所有计算机都以十进制方式进行 页脚内容2

C语言第一章习题带答案

练习1-1答案 选择题 1.下列4组字符串中都可以用作C语言程序中的标识符的是( D )。 A.print 3d oodb B.I\m one_half start$it C.Pxq my->book line# D.str_1 Cpp into 2.下面的说法正确的是( C )。 A.C程序由符号构成B.C程序由标识符构成 C.C程序由函数构成D.C程序由C语句构成3.与十进制数35相等的二进制数是( A )。 A.100011 B.01001 C.100110 D.100101 4.与47值相等的十六进制数是( A )。 A.2F B.215 C.32F D.115 5.(01101)2 + (101101)2的值是( B )。 A.(101010)2 B.(3A)16 C.(2A)16 D.57 6.将15向左移动2位后的值是( D )。 A.(3C)16 B.(00111100)2 C.(60)10 D.都正确7.将250与5进行按位与的结果是( A )。 A.0 B.1 C.(FF)16 D.(F0)16 8.将(AF)16与(78)16进行按位异或的结果是( A )。 A.(D7)16 B.(28)16 C.(D8)16 D.(27)16 9.将(717)8按位取反的结果是( B )。

A.(110001)2 B.(060)8 C.(60)10 D.都不正确 练习2-1答案 选择题 1.C语言中的简单数据类型包括( B )。 A.整型、实型、逻辑型B.整型、实型、字符型 C.整型、字符型、逻辑型D.整型、实型、逻辑型、字符型2.在C语言中,错误的int类型的常数是( A )。 A.32768 B.0 C.037 D.0Xaf 3.下列常数中不能作为C的常量的是( D )。 A.0x45 B.2.5e-2 C.3e2 D.0582 4.设int类型的数据长度为2个字节,则unsigned int类型数据的取值范围是( B )。 A.0至255 B.0~65535 C.-32768~32767 D.-256~255 5.下面4个选项中,均是合法转义字符的选项是( A )。 A.'\'','\\','\n' B.'\','\017','\' C.'\018','\f','xab' D.'\\0,'101','x1f 6.在C语言中,数字029是一个( D )。 A.八进制数B.十六进制数 C.十进制数D.非法数 7.下列可以正确表示字符型常数的是( B )。 A."a" B.'\t' C."\n" D.297 8.以下( C )是错误的转义字符。 A.'\\' B.'\'' C.'\81' D.'\0'

C语言 第1-9章基本概念练习题ans(最全)

第一单元(1-5章)基本概念练习题 一、单选选择(直接在正确的选项上打勾,每题) 1、下面关于C语言特点的描述,不正确的是( )。D A、C语言兼有高级语言和低级语言的双重特点,执行效率高 B、C语言既可以用来编写应用程序,又可以用来编写系统软件 C、C语言是一种结构式模块化程序设计语言 D、C语言的可移植性较差 2、C语言规定,在一个源程序中,main函数的位置( )。B A、必须在最开始 B、可以任意 C、必须在最后 D、必须在系统调用的库函数的后面 3、下列说法中正确的是( )。C A、C程序书写时,不区分大小写字母 B、C程序书写时,一行只能写一个语句 C、C程序书写时,一个语句可分成几行书写 D、C程序书写时每行必须有行号 4、C语言编译程序的首要工作是( )。A A、检查C语言程序的语法错误 B、检查C语言程序的逻辑错误 C、检查程序的完整性 D、生成目标文件 5、C语言程序经过连接以后生成的文件名的后缀为( )。C A、.c B、.obj C、.exe D、.cpp 6、以下关于算法的说法中,错误的是( )。D A、一个算法应包含有限个步骤 B、在计算机上实现的算法是用来处理数据对象的 C、算法的目的是为了求解 D、算法中指定的操作,不能通过已经实现的基本运算执行有限次后实现 7、算法是指为解决某个特定问题而采取的确定且有限的步骤,下面不属于算法的五个特性之一的是( )。C A、确定性 B、有穷性 C、零个或多个输出 D、零个或多个输入 8、以下不属于结构化程序设计三种基本结构之一的是( )。B A、顺序 B、递归 C、循环 D、选择 9、下列数据中,不合法的C语言实型数据是( )。C A、0.123 B、123e3 C、2.1e3.5 D、789.0 10、若变量a、i已正确定义,且i已正确赋值,以下属于合法的C语句是( )。 A、a==1 B、++i; C、a=a++=5; D、a=int(i); 11、已有定义int a=6; 则执行语句a+=a-=a*a;后,a的值为( )。D A、36 B、0 C、-24 D、-60 12、若有以下程序段,其输出结果是( )。B int a = 0, b = 0, c = 0; c = ( a -= a - 5), (a -= 3,++b); printf(“%d,%d,%d\n”,a, b, c); A、0,0,-10 B、2,1,5 C、-10,-3,-10 D、3,3,-10 13、有以下定义:int i = 10, j = 1; 执行语句printf("%d,%d\n",i--, ++j); 后输出结果是( )。B A、9,2 B、10,2 C、9,1 D、10,1 14、字符串"\t\"\065\xff\n"的长度为( )。A A、5 B、14 C、8 D、输出项不合法,无正常输出 15、已有定义:char c;执行赋值语句c=('z'-'a')/2+'A';后,变量c的值为( )。A

C语言各章节练习题(含答案)

一、C语言概述练习题 选择1.一个C程序的执行是从。 本程序的main函数开始,到main函数结束 B) 本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C) 本程序文件的第一个函数开始,到本程序main函数结束 D) 本程序的main函数开始,到本程序文件的最后一个函数结束 2.以下叙述不正确的是。 A) 一个C源程序必须包含一个main函数 B)一个C源程序可由一个或多个函数组成 C) C程序的基本组成单位是函数在C程序中,注释说明只能位于一条语句的后面 3.以下叙述正确的是。 A) 在对一个C程序进行编译的过程中,可发现注释中的拼写错误 B) 在C程序中,main函数必须位于程序的最前面 语言本身没有输入输出语句 D) C程序的每行中只能写一条语句 4.一个C语言程序是由。 A)一个主程序和若干个子程序组成函数组成 C) 若干过程组成 D) 若干子程序组成 二、数据类型、运算符与表达式 选择. 1.若x、i、j、k都是int型变量,则计算下面表达式后,x的值为。 x=(i=4,j=16,k=32) A) 4 B) 16 D) 52 2.下列四组选项中,均不是C语言关键字的选项是。 C) include case scanf D) while go pow 3.下列四组选项中,均是不合法的用户标识符的选项是。 int C) float la0 _A D) -123 abc TEMP 4.下列四组选项中,均是合法转义字符的选项是。 \”’‘\\’‘\n’ B)‘\’‘\017’‘\”’ C)‘\018’‘\f’‘xab’ D)‘\\0’‘\101’‘xlf’ 5.下面不正确的字符常量是。 “c”B) ‘\\’’C) ‘’D) ‘K’ 6.以下叙述不正确的是。 A) 在C程序中,逗号运算符的优先级最低 B) 在C程序中,MAX和max是两个不同的变量 C) 若a和b类型相同,在计算了赋值表达式a=b后,b中的值将放入a中,而b中的值不变 当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值 7.以下叙述正确的是。A) 在C若a是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整型数 C) 在C程序中,%是只能用于整数运算的运算符(字符型也可以) D) 在C程序中,无论是整数还是实数,都能被准确无误地表示 8.已知字母A的ASCII码为十进制数65,且c2为字符型,则执行语句c2=‘A’+‘6’-‘3’后,c2中的值为。 B) 68 C) 不确定的值 D) C

《明解C语言》第1章 初识C语言练习题答案

【个人观点】 练习1-1 #include int main(void) { printf("15减去的结果是%d\n",15 - 37); return (0); } 练习1-2 #include int main(void) { printf("风\n林\n火\n山\n"); return (0); } 练习1-3 #include int main(void) { printf("喂!\n您好!\n\n再见\n"); return (0); } 练习1-4 #include int main(void) { int no; printf("请输入一个整数:"); scanf("%d",&no); printf("它与10的和是:%d\n",10 + no); return (0); } 练习1-5 #include

int main(void) { int no; printf("请输入一个整数:"); scanf("%d",&no); printf("该数减去10的结果是:%d\n",no - 10); return (0); } 练习1-6 #include int main(void) { puts("风"); puts("林"); puts("火"); puts("山"); } 练习1-7 #include int main(void) { int n1,n2; int wa; puts("请输入两个整数:"); printf("整数:"); scanf("%d",&n1); printf("整数:"); scanf("%d",&n2); wa = n1 * n2; printf("它们的和是:%d\n",wa); return (0); } 练习1-8 #include

C语言预习及课后习题(参考答案1-5)

第一章C语言概述 课前预习题 1.函数 2.main()函数3.单行注释、块注释、A 参考分析:C语言总是从main函数开始,main函数结束。但是C语言中存在一个exit(0)函数,它可以使得程序在任何时候、任何位置结束程序的运行。如果不考虑exit(0)等函数的特殊作用,C则总是在main函数结束。 2.C 参考分析:C程序对main函数的位置没有任何要求;其书写格式自由,一行可以写多条语句,一条语句(多关键字语句)可以写在多行;C语言忽略注释,把注释看作是一个空格,不会对注释中的内容进行语法检查。因此,如果注释中存在错误,系统是不可能发现的。另外,C语言的I/O操作均通过函数实现,系统本身未提供相应的语句。 3.D 参考分析:C语言中,注释语句的位置是任意的,当然,它不能破坏标识符的完整性。C语言只是将一个注释看作是一个空格,因此对注释内的任何错误都不作检查。 4. C 5.B 参考分析:通常许多语言程序由主程序和子程序构成,但是C语言是函数式语言,整个程序由众多函数组成。尽管有时习惯上称main函数为主程序,显然,严格地讲还是B更为符合C语言的规则。 6.C 7.B 8.C 9.C 10.C 11.绘制NS算法流程图。 (1)输入10个数,求其中的最大值。 (2)输入3个数,将它们升序排列输出。 (3)输入2个数,求它们的最大公约数。(4)输入一元二次方程的系数a、b、c,判断其根。

第二章数据类型、运算符与表达式 课前预习题 1.变量在内存中所占的字节数、变量的表数范围、变量允许参与的运算2.1、4、8 3.float、double 4.八进制、十进制、十六进制5.1 6.26 7.12、4 8.6、4、2 9.-60 10.2 11.10、6 12.13.14.4 15.1 16.0 17.9 18.字符、数字、下划线19.'f' 20.21.int型22.m/10%10*100+m/100*10+m%10 课后习题 1.A 分析:在不同的计算机系统中,不同的C语言系统中,其各种数据类型所占据的存储空间是不同的,但是有一个总的原则,即:char<=short<=int<=long<= float<=double,只有A符合16位PC机中的具体环境。 2.C 参考分析:逗号表达式的计算结果是最后一个表达式的值。k=23是括号内最后一个表达式,因此x变量的值来自k变量的值。 3.B 参考分析:逗号表达式的计算结果是最后一个表达式的值。b++在所在表达式参与运算时的值是5,该表达式计算完成后,b进行自增运算,故a+b的值为2+6=8。 4.A 参考分析:是关键字的有:char、case、while。 5.B 参考分析:不是关键字的:include、scanf、type 6.C 参考分析:合法的有:A、P_0、la0、_A、_123、temp、INT。 7.C 参考分析:教材中只是强调首字符必须为字母,我们应当知道,在语言系统中,下划线和字母具有同等的“法律效力”。 8.A 参考分析:不合法的B2,C2,C3,D2。解释:A2:-0xffff十六进制数本身已经包含了符号位,一般不前面加符号位,但加上符号位也不错误;C3:0668在有些C系统中,八进制数中允许出现8,但是通常不允许使用8;D3:0x显然后面缺少数值,但在TC中是允许的。 9.D 参考分析:不合法的A1,B3,C1,C3,D。解释:A1:--0f1十六进制数没有0x,显然不合法,这里需要讨论的是常

c语言章节作业练习题

c语言章节作业练习题 选择1.一个C程序的执行是从 A 。 本程序的main函数开始,到main函数结束 B) 本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C) 本程序文件的第一个函数开始,到本程序main函数结束 D) 本程序的main函数开始,到本程序文件的最后一个函数结束 2.以下叙述不正确的是 D 。 A) 一个C源程序必须包含一个main函数 B)一个C源程序可由一个或多个函数组成 C) C程序的基本组成单位是函数在C程序中,注释说明只能位于一条语句的后面 3.以下叙述正确的是C。 A) 在对一个C程序进行编译的过程中,可发现注释中的拼写错误 B) 在C程序中,main 函数必须位于程序的最前面 语言本身没有输入输出语句D) C程序的每行中只能写一条语句 4.一个C语言程序是由 B 。 A)一个主程序和若干个子程序组成

函数组成C) 若干过程组成 D) 若干子程序组成 选择. 1.若x、i、j、k都是int型变量,则计算下面表达式后,x的值为 C. x= A)B) 16D)2 2.下列四组选项中,均不是 C语言关键字的选项是A。 C) include case scanf D) whilego pow 3. 下列四组选项中,均是不合法的用户标识符的选项是B 。.下列四组选项中,均是合法转义字符的选项是A。 \”’‘\\’‘\n’ B)‘\’‘\017’‘\”’ C)‘\018’‘\f’‘xab’ D)‘\\0’‘\101’‘xlf’ 5.下面不正确的字符常量是 A 。 “c” B) ‘\\’’ C) ‘’ D) ‘K’ 6.以下叙述不正确的是 D 。 A) 在C程序中,逗号运算符的优先级最低 B) 在C 程序中,MAX和max是两个不同的变量 C) 若a和b类型相同,在计算了赋值表达式a=b后,b中的值将放入a中,而b中的值不变 当从键盘输入数据时,对于整型变量只能输入整型数

C语言基础练习题含复习资料

目录 第1-3章C语言基础知识习题 (2) 1 选择题 (2) 2 填空题 (7) 3 答案及部分解析 (9) 第4章选择结构习题 (11) 1 选择题 (11) 2 填空题 (17) 3 答案及部分解析 (23) 第5章循环结构习题 (26) 1 选择题 (26) 2 填空题: (32) 3 答案及部分解题分析 (39) 第6章数组习题 (41) 1. 单项选择题 (41) 2. 填空题 (44) 3. 判断题 (45) 4. 程序填空题 (45) 5. 阅读程序,分析程序的功能。 (49) 第7章函数习题 (55) 1. 单项选择题 (55) 2. 填空题 (56) 3. 判断题 (57) 4. 程序填空题 (58) 5. 写出下列程序运行结果 (59) 第8章指针习题 (67) 1 选择题 (67) 2 填空题 (69)

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

C语言章节练习题

C 程序设计基本概念 1.编写C程序一般需经过的几个步骤依次是 A )编辑、调试、编译、连接 B)编辑、编译、连接、运行 C)编译、调试、编辑、连接 D ) 编译、编辑、连接、运行 2.以下叙述中正确的是 A)C语言比其他语言高级 B)C语言可以不用编译就能被计算机识别执行 C)C语言以接近英语国家的自然语言和数学语言作为语言的表达形式 D) C 语言出现的最晚,具有其他语言的一切优点 3.C语言中用于结构化程序设计的3种基本结构是 A )顺序结构、选择结构、循环结构 B ) if,switch,break C ) for,while,do-while D ) if,for,continue 4.以下叙述中正确的是 A)构成C程序的基本单位是函数 B)可以在一个函数中定义另一个函数 C)main ()函数必须放在其他函数之前 D)所有被调用的函数一定要在调用之前进行定义 5.C语言规定,在一个源程序中,main函数的位置 A )必须在最开始 B)必须在系统调用的库函数的后面 C)可以任意 D )必须在最后 6.以下叙述不正确的是 A)一个C源程序可由一个或多个函数组成 B)一个C程序必须包含一个main函数 C)C程序的基本组成单位是函数 D )在。程序中,注释说明只能位于一条语句的后面 7.下列选项中不是结构化程序基本结构的是 A )顺序结构 B )跳转分支结构 C )选择结构 D )循环结构

基本数据类型、常量和变量、操作符 1.下列可用于C语言用户标识符的一组是 A ) void, define, WORD B)a3_b3, _123,Car C)For, -abc, IF Case D)2a, DO, sizeof 2.C语言中基本数据类型包括 A)整型、实型、逻辑型 B)整型、实型、字符型 C)整型、字符型、逻辑型 D)字符型、实型、逻辑型 3.下面哪些不是常量 A)067 B) 'x' C) abc D) ”abc”E) 6.12 F) max G) 0xab H) 3e5 I) 65535 J) '\t' 4.C语言中,常量23和3.14的数据类型为 A ) int 和float B)long 和float C)int和double D)int和long double 5.下面四个选项中,均是不正确的8进制数或16进制数的选项是 A) 016 0x8f 018 B) 0abc 017 0xa C) 010 -0x11 0x16 D) 0a12 7ff -123 6. 下面四个选项中,均是合法整型常量的选项是 A ) 160 -0xffff 011 C) -01 986012 0668 B) -0xcdf D ) -0x48a 01a 2e5 0xe 0x 7. 下列数据中,不合法的C语言实型数据的是 A)0.123 B ) 123e3 C) 2.1e3.5 D) 789.0 8.若变量已正确定义并赋值,以下符合C语言语法的表达式是 A ) a:=b+1 B ) a=b=c+2 C) int 18.5%3 D ) a=a+7=c+b 9.C语言中运算对象必须是整型的运算符是 A ) %= B ) / C ) = D ) <= 10.若变量a,i已正确定义,且i已正确赋值,合法的语句是 A ) a==1 B ) ++i ; C) a=a++=5; D ) a=int( i ) ; 11.若有定义:int a=7;float x=2.5,y=4.7;则表达式x+a%3* ( int) ( x+y) %2/4 的值是 A) 2.500000 B)2.750000 C) 3.500000 D )0.000000 12.若x,i,j和k都是int型变量,则计算表达式x= ( i=4,j=16,k=32 )后,x的值为 A) 4 B)16 C)32 D)52 13.设有int x=11 ;则表达式(x++*1/3 )的值是 A) 3 B)4 C)11

相关主题
相关文档 最新文档