C语言各章练习题

更新时间:2023-12-09 22:04:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

目录

第一章 程序设计和C语言 ...................................................................... 2 第二章 最简单的C程序设计 .................................................................. 2 第三章 选择结构程序设计 ...................................................................... 4 第四章 循环结构程序设计 ...................................................................... 8 第五章 数组............................................................................................. 13 第六章 函数............................................................................................. 17 第七章 指针............................................................................................. 22

1/28

第一章 程序设计和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、Void 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)

2/28

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. putchar函数可以向终端输出一个( 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

3/28

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

main()

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

printf(\ printf(\

}

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

{ int m=12,n=34;

printf(\ printf(\

}

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

main()

{ int m,n,p;

scanf(\ printf(\

}

若想从键盘上输入数据,使变量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 。 3. 代数式

3?ab表示成C表达式为 (3+a*b)/(c+d) 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

4/28

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(\

}

程序运行后的输出结果是( 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\\n\

}

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

A、1 2 3 B、2 3 4 C、2 2 3 D、2 3 3 15. 有以下程序

main()

{ int a = 0,b = 0,c = 0,d = 0;

5/28

if (a = 1)b = 1; c = 2; else d = 3;

printf(\}

程序输出( 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

}

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

main() {

int a,b,c;

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

}

三、 写出程序运行的结果

【程序1】 #include void main() { char c1 = 97; if (c1 >= 'a'&&c1 <= 'z') printf(\ else printf(\} 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++;

6/28

case2:b++;break; }

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

}

printf(\

} 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(\ } }

输入:3210 输出结果: 6 45 34 1 四、 程序设计

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

1 #include ○ int main() {

int a,b,c,max,min;

printf(\ scanf(\ 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(\ }

return 0;

7/28

2#include

void main() { int a, b, c; printf(\请输入三个数:\\n\ scanf(\ 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() {

2#include

void main() { int score, i; printf(\ scanf(\ i = score / 10; switch (i)

}

{

case 10:

case 9: printf(\case 8: printf(\case 7: printf(\case 6: printf(\default: printf(\}

int m,s;

printf(\scanf(\m=s/10;

if(m<=10 && m>=9) printf(\

else if(m<9&&m>=8) printf(\

if(m<8 if(m<7

&&

m>=7)

else printf(\ else printf(\

&&m>=6)

else printf(\

return 0; }

第四章 循环结构程序设计

一、选择题:

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

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

8/28

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(\

}

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

A、3 B、4 C、5 D、6 9. ?下列程序运行的结果是(D )

#include main() {

int y = 10;

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

A、-1 B、-2 D、1 D、0

9/28

二、 程序填空

【程序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++)

10/28

本文来源:https://www.bwwdw.com/article/j7c5.html

Top