C语言各章习题集
更新时间:2024-04-18 01:53:01 阅读量: 综合文库 文档下载
- c语言第五章推荐度:
- 相关推荐
C语言习题集
第 1 章
C语言概述
一. 填空题
1. C程序是由 构成的,一个C程序中至少包含 。 是C程序的基本单位。 2. 任何C程序必须有且只有一个_______函数。
3. C程序注释是由 和 所界定的文字信息组成的。
二. 判断题
1. 2. 3. 4. 5.
一个C程序的执行总是从该程序的main函数开始,在main函数最后结束。 main函数必须写在一个C程序的最前面。 一个C程序可以包含若干的函数。
可用Visual C++ 6.0编译、连接、运行、调试C程序。
C程序的注释部分可以出现在程序的任何位置,它对程序的编译和运行不起任何作用。但是可以增加程序的可读性。
6. C程序的注释只能是一行。
7. C程序的注释不能是中文文字信息。
三. 简答题
1. 2. 3. 4.
简述C语言的特点。 写出C程序的基本结构。
简述使用Visual C++ 6.0编译和运行C程序的步骤。 简述C语言程序设计课程的学习方法。
四. 编程题
1. 编写C程序,输出如下信息:
**************************************************************** The only way to learn a new programming language is by writing programs in it. **************************************************************** 2. 编写C程序,输出如下信息:
C has proven to be a pleasant, expressive and versatile language for a wide variety of programs. It is easy to learn, and it wears well as on's experience with it grows. 3. 编写C程序,输入4个整数,输出其中最大者。
第 2 章
一. 填空题
程序的灵魂——算法
1. + = 程序。 是程序的灵魂。 2. 一个计算机程序应包括 和 的内容。
3. 算法是 。计算机算法的特性
是 、 、 、 、 。
4. 计算机算法可以用 , 和 等方法表示。 5. 三种基本程序结构是 , 和 。
6. 结构化程序设计的主要方法是 。
二. 简答题
1. 分别用ANSI流程图、N-S图、自然语言描述求解下面问题的步骤。 (1) 依次输入10个数,要求将其中最大的数打印出来。
(2) 有3个数a,b,c,要求按由大到小的顺序把它们打印出来。 (3) 求两个正整数m和n的最大公约数和最小公倍数。 (4) 有一函数:
输入x,输出y值。
(5) 求两个正整数m和n的最大公约数和最小公倍数。
2. 分别用ANSI流程图和N-S流程图表示求解下面问题的算法。 (1) 依次输入10个数,要求将其中最大的数打印出来。
(2) 有3个数a,b,c,要求按由大到小的顺序把它们打印出来。 (3) 判断一个数n能否同时被3和5整除。
?x(x?1)?y??2x?11(1?x?10)?3x?11(x?10)?
23581321,,,,,,?(4)有一个分数数列: 1235813求出这个数列前20项之和。
第 3 章
一. 选择题
数据类型、运算符与表达式
1. C语言的关键字是( )。
A. NULL B. file C. include D. typedef 2. 正确的自定义标识符是( )。
A. if B. a*b C. iF D. 8pq 3. 错误的转义字符是 ( )
A.'\\091' B. '\\\\' C. '\\0' D. '\\'' 4. 在C语言中,错误的常数是 ( )
A.1E+0.0 B.5 C.0xaf D.0L 5. 在C语言中,要求参加运算的数必须时整数的运算符是( )。
A./ B.* C. % D. = 6. 在C语言中,数字029是一个( )。
A.八进制数 B.十六进制数 C.十进制数 D.非法数 7. C语言中整数-8在内存中的存储形式为( )。
A.1111111111111000 B.100000000001000 C.000000000001000 D.1111111111110111 8. 对于char cx=? \\039?;语句,正确的是( )。
A.不合法 B.cx的值是?\\03?
C.cx的值为四个字符 D.cx的值为三个字符 9. 若int k=7,x=12; 则能使值为3的表达式是( )。
A. x%=(k%=5) B. x%=(k-k%5) C. x%=k-k%5 D. (x%=k)-(k%=5) 10. 为了计算s=10!(即10的阶乘),则s变量应定义为( )。
A.int B.unsigned C.long D.以上三种类型均可 11. 以下所列的C语言常量中,错误的是( )。
A.0xFF B.1.2e0.5 C.2L D.?\\72? 12. 假定x和y为double型,则表达式x=2, y=x+3/2的值是( )。
A.3.500000 B.3 C.2.000000 D.3.000000
13. 设变量n为float型,m为int类型,则以下能实现将n中的数值保留小数点后两位,第三位进行四
舍五入运算的表达式是( )。
A. n=(n*100+0.5)/100.0 B. m=n*100+0.5, n=m/100.0 C. n=n*100+0.5/100.0 D. n=(n/100+0.5)*100.0 14. 以下选项中不属于C语言的类型是( )。
A.signed short int B.unsigned long int C.unsigned int D.long short
15. 设以下变量均为int类型,则值不等于7的表达式是( )。
A.(x=y=6,x+y,x+1) B.(x=y=6,x+y,y+1) C.(x=6,x+1,y=6,x+y) D.(y=6,y+1,x=y,x+1)
16. 在16位C编译系统上,若定义long a;,则能给a赋40000的正确语句是( )。
A.a=20000+20000; B.a=4000*10; C.30000+10000; D.a=4000L*10L; 17. 对于语句:f=(3.0,4.0,5.0),(2.0,1.0,0.0);的判断中,( )是正确的。
A. 语法错误 B. f为5.0 C.f为0.0 D.f为2.0
x?y18. 与代数式u?v不等价的C语言表达式是( )。
A.x*y/u*v B.x*y/u/v C.x*y/(u*v) D.x/(u*v)*y
二. 填空题
1. 在C语言中(16位PC机),一个char数据在内存中所占字节数为 ,其数值范围
为 ;一个float数据在内存中所占字节数为 ,其数值范围为 。 2. C语言的标识符只能由大小写字母,数字和下划线三种字符组成,而且第一个字符必须
为 。
3. 在C语言中,不同运算符之间运算次序存在 的区别,同一运算符之间运算次序存在
的规则。
4. 设x,i,j,k都是int型变量,表达式x=(i=4,j=16,k=32)计算后,x的值为 。 5. 设x=2.5,a=7,y=4.7, 则x+a%3*(int)(x+y)%2/4为 。
6. 设a=2,b=3,x=3.5,y=2.5,则(float)(a+b)/2+(int)x%(int)y为 。
1?a?x?ax???24a??的C语言表达式为 。 7. 数学式子
8. 定义:double x=3.5,y=3.2;则表达式(int)x*0.5的值是 ,表达式y+=x++的值
是 。
9. 定义:int m=5,n=3;则表达式m/=n+4的值是 ,表达式m=(m=1,n=2,n-m)的值
是 ,表达式m+=m-=(m=1)*(n=2)的值是 。 10. 若a是int变量,则执行表达式a=25/3%3后,a的值是 。
11. 数学表达式x?2x?3x?4x?5x?6x?7对应的C语言表达式
为: 。
12. 已知a,b,c是一个十进制数的百位,十位,个位,则该数的表达式是 。
65432三. 判断题
1. 2. 3. 4. 5. 6. 7. 8. 9.
在C程序中对用到的所有数据都必须指定其数据类型。 一个变量在内存中占据一定的存储单元。 一个实型变量的值肯定是精确的。
对几个变量在定义时赋初值可以写成:int a=b=c=3;
自增运算符(++)或自减运算符(--)只能用于变量,不能用于常量或表达式。 在C程序的表达式中,为了明确表达式的运算次序,常使用括号“()”。 %运算符要求运算数必须是整数。
若a是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整型数。 在C程序中,逗号运算符的优先级最低。
10. C语言不允许混合类型数据间进行运算。
四. 简答题
1. c语言中运算符的优先级和其结合性有和区别? 2. \与 'A' 有何区别?
5c?(F?32)93. 华氏温度F与摄氏温度c的转换公式为:,则float c,F;c=5/9*(F-32)是其对应的C
语言表达式吗?如果不是,为什么?
五. 程序阅读题
1. 写出以下程序运行的结果。
main ( ) {
char c1=?a?,c2=?b?,c3=?c?,c4=?\\101?,c5=?\\x41?; printf(“a%c b%c\\tc%c\\tabc\\n”,c1,c2,c3); printf(“\\t\\b%c %c”,c4,c5); }
2. 写出以下程序运行的结果。
main ( ) { int i,j,m,n; i=8; j=10; m=++i; n=j++;
printf(“%d,%d,%d,%d”,i,j,m,n); }
六. 编程题
1. 输入三位十进制正整数m,将m的个位,十位,百位反序而成的三位数(如:123反序为321)输出。 2. 输入两个整数x,y,将其值互换后输出。
3. 利用ASCII表,输出笑脸及扑克牌符号、10个数字符号、26个大写字母。
第 4 章
一. 选择题
最简单的C程序设计
1. C语言的程序一行写不下时,可以( )。
A.用逗号换行 B.用分号换行 C.在任意一空格处换行 D.用回车符换行 2. putchar函数可以向终端输出一个( )。
A. 整型变量表达式值 B. 实型变量值
C. 字符串 D. 字符或字符型变量值 3. 执行下列程序段时输出结果是( )。
unsigned int a=65535; printf(“%d”,a); A.65535 B.-1 C.-32767 D.1 4. 执行下列程序段时输出结果是( )。
int x=13,y=5;
printf(“%d”,x%=(y/=2));
A.3 B.2 C.1 D.0 5. 下列程序的输出结果是( )。 main ( )
{ int x=023;
printf(“%d”,--x);
}
A.17 B.18 C.23 D.24 6. 执行下列程序段时输出结果是( )。 int x=5,y;
y=2+(x+=x++,x+8,++x); printf(“%d”,y);
A.13 B.14 C.15 D.16 7. 若运行时输入:12345678↙,则下列程序运行结果为( )。
main ( ) { int a,b;
scanf(“--=”,&a,&b); printf(“%d\\n”,a+b); }
A.46 B.579 C.5690 D.出错
8. 有输入语句:scanf(“a=%d,b=%d,c=%d”,&a,&b,&c);为使变量 a的值为1,b的值为3,c的值为2,
则正确的数据输入方式是( )。
A.132↙ B.1,3,2↙
C.a=1 b=3 c=2↙ D.a=1,b=3,c=2↙
9. 若运行时输入:12345678↙,则下列程序运行结果为( )。
main ( ) { int a,b;
scanf(“--=”,&a,&b); printf(“%d\\n”,a+b); }
A.46 B.579 C.5690 D.出错
10. 已知i,j,k为int型变量,若从键盘输入:1,2,3<回车>,使i的值为1,j的值为2,k的值为3,
以下选项中正确的输入语句是( )。
A.scanf(“---”,&i,&j,&k); B.scanf(“%d_%d_%d”,&i,&j,&k);
C.scanf(“%d,%d,%d”,&i,&j,&k); D.scanf(“i=%d,j=%d,k=%d”,&i,&j,&k); 11. 若int x,y; double z;以下不合法的scanf函数调用语句是( )。
A. scanf(“%d%lx,%le”,&x,&y,&z); B. scanf(“-*%d%lf”,&x,&y,&z); C. scanf(“%x%*d%o”,&x,&y); D. scanf(“%x%o%6.2f”, &x,&y,&z);
12. 有输入语句:scanf(“a=%d,b=%d,c=%d”,&a,&b,&c);为使变量 a的值为1,b的值为3,c的值为2,
则正确的数据输入方式是( )。
A.132↙ B.1,3,2↙
C.a=1 b=3 c=2↙ D.a=1,b=3,c=2↙
二. 填空题
1. C程序由若干个 文件组成,而此类文件可由若干个 和 以及
部分组成。
2. C语句可以分为 , , , 和 等5种类型。 3. 一个表达式要构成一个C语句,必须 。 4. 复合语句是用一对 界定的语句块。
5. printf函数和scanf函数的格式说明都使用 字符开始。 6. scanf处理输入数据时,遇到下列情况时该数据认为结束:(1) ,
(2) ,(3) 。
7. 已有int i,j; float x;为将-10赋给i,12赋给j,410.34赋给x;则对应以下scanf函数调用语
句的数据输入形式是 。
8. C语言本身不提供输入输出语句,其输入输出操作是由 来实现的。
9. 一般地,调用标准字符或格式输入输出库函数时,文件开头应有以下预编译命
令: 。
三. 程序阅读题
1. 用下面的scanf函数输入数据,使a=3,b=7,x=8.5,y=71.82,c1='A',c2='a',问在键盘上如何输入?
2. 3. 4. 5. 6. 7. 8. 在C语言中,函数可以嵌套定义。
函数是C程序的主体,任何C程序必须有且只有一个main函数。
c语言本身没有输入输出语句,其输入、输出是通过函数调用来完成的。 c程序可由若干个源程序文件组成。
实参变量对形参变量的数据传递是“值传递”,即单向传递。
在C语言中,函数中的任何变量都可以赋初值,每调用一次该函数,就赋一次初值。 c语言中函数定义不允许嵌套,但调用可嵌套。
四. 阅读程序
1. #include
{ int b=0; static int c=2; b++; c++; return a+b+c; }
main()
{ int i;
for (i=0; i<4; i++) printf(\
}
2. #include
{ if (a%b==0) return b;
else return fun(b,a%b); }
main()
{ int a=20,b=24;
printf(\} 3.
#include
void fun(int n,char a,char b,char c) { if (n>0)
{
fun(n-1,a,c,b); printf(\}
} main() {
fun(3,'1','2','3'); }
五. 程序判断题
1. 下面add函数求两个参数的和;判断下面程序的正误,如果错误请改正过来。
void add(int a,int b) { int c ; c = a + b; return (c) ; }
2. 下面函数fun的功能是:统计字符串s中各元音字母(即A,E,I,O,U)的个数,注意:字母不分大,
小写;判断下面程序的正误,如果错误请改正过来。 fun (char s[ ], int num[5]) { int k; i=5;
for (k=0; k
switch ( s ) {
case ?a?: case ?A?: i=0; case ?e?: case ?E?: i=1; case ?i? : case ?I? : i=2; case ?o?: case ?O?: i=3; case ?u?: case ?U?: i=4; }
if (i >= 0) num[i]++; } }
3. 下面函数fun的功能是:依次取出字符串中所有数字字符,形成新的字符串,并取代原字符串;判
断下面程序的正误,如果错误请改正过来。 void fun (char s[ ]) { int i,j;
for (i=0,j=0; s[i]!=?\\0?; i++) if (s[i]>=?0? && s[i]<=?9?) s[j]=s[i]; s[j]=”\\0”; }
六. 程序填空
1. 下面程序是求100~200间的全部素数(每10个素数输出在一行上)。
int prime( int m) { int n;
for (n=2; n main() { int m,n=0; /* n用来统计素数的个数*/ for (m=100; m<=200; m++) if (prime(m) ) printf(“M%c”,m , _______________ ); return 0; } 2. 下面程序的功能是把十进制正整数转换成2到16进制中任一数制的程序。 如:输入 10 2 则输出 1010。 输入 10 8 则输出 12。 #include void fun(int num, int base) { char s[]=\int p[20],n=0; do { p[n++]=numose; } while ( ______________ ); for ( ______________ ; n>=0; --n) printf(\ ] ); printf(\ } main() { int num,base; scanf(\ fun(num,base); } 3. 下面函数的作用是通过递归的方法将字符串倒置,请填空使程序完整。 void fun(char s[ ],int l,int h) { if ( ) return ; else { char t ; fun ( ) ; t = s[l] , s[l]=s[h] , s[h]=t ; } } 4. 设数组a中的n个整数已按从小到大的顺序排列,函数bin_search用折半法找出整数x是否在数组中, 找到则返回对应元素的下标,否则返回-1。 int bin_search(int a[],int x,int n) { int left,right,mid; left=0; right=n-1; while (left<=right) { mid=(left+right)/2; if (______________ ) return mid; else if (______________ ) right=mid-1; else ______________; } ______________ ; } 七. 程序编写 1. 编写一函数,由实参传来字符串,统计其中字母、数字、空格的个数,在主函数中输入串,并输出 统计结果。 2. 编一个函数sort,使10个整数按从大到小的顺序排列,在main函数中输入这10个数,并输出排好 序的数。 3. 写一个函数,使给定的一个二维数组(N×N)转置,即行列互换。(N是不大于10的数,由输入决 定)。 4. 用递归法将一个整数转换成字符串。例如,输入12345,应输出字符串“54321”。n的位数不确定, 可以是任意的整数。 5. 编写一个fun函数void fun(char s1[],char s2[]),将两个字符串s1和s2连接起来存放在s1中。 6. 编写一个fun函数:int fun(int a[], int n),删去一维数组中所有相同的数,使之只剩一个。数组中的数 已按由小到大的顺序排列,函数返回删除后数组中数据的个数。例如,一维数组中的数据是:2 2 2 3 4 4 5 6 6 6 7 7 8 9 9 10 10 10,删除后,数组中的内容应该是:2 3 4 5 6 7 8 9 10 7. 设计一个程序,统计一个班(最多有35人)的学生成绩,要求能实现如下四个功能:(1)由键盘输 入每个学生的四门课程的成绩;(2)计算每个学生的平均分和总分,这个功能模块由自定义函数实现;(3)计算每个学生的总分与平均分。同样用自定义函数实现;(4)根据用户的要求输出某门课程不及格的学生。 第 9 章 一. 选择题 编译预处理 1. 以下叙述不正确的是( )。 A. 预处理命令行都必须以#开始 B. 在程序中凡是以#开始的语句行都是预处理命令行 C. C程序在执行过程中对预处理命令行进行处理 D. 预处理命令行可以出现在C程序中任意一行上 2. 以下叙述中正确的是( )。 A. 在程序的一行上可以出现多个有效的预处理命令行 B. 使用带参数的宏时,参数的类型应与宏定义时的一致 C. 宏替换不占用运行时间,只占用编译时间 D. C语言的编译预处理就是对源程序进行初步的语法检查 3. 以下有关宏替换的叙述不正确的是( )。 A. 宏替换不占用运行时间 B. 宏名无类型 C. 宏替换只是字符替换 D. 宏名必须用大写字母表示 4. 在“文件包含”预处理命令形式中,当#include后面的文件名用\(双引号)括起时,寻找被包含 文件的方式是( )。 A. 直接按系统设定的标准方式搜索目录 B. 先在源程序所在目录中搜索,再按系统设定的标准方式搜索 5. 6. 7. 8. C. 仅仅搜索源程序所在目录 D. 仅仅搜索当前目录 在宏定义 #define PI 3.1415926 中,用宏名PI代替一个( )。 A.单精度数 B.双精度数 C.常量 D.字符串 以下程序的运行结果是( )。 A.9 B.10 C.12 D.18 #define ADD(x) x+x main ( ) { int m=1,n=2,k=3,sum ; sum = ADD(m+n)*k ; printf(“%d\\n”,sum) ; } 以下程序的运行结果是( )。 A.10 B.15 C.100 D.150 #define MIN(x,y) (x)>(y) ? (x) : (y) main ( ) { int i=10, j=15 , k; k = 10*MIN(i,j); printf(“%d\\n”,k); } 在任何情况下计算平方数都不会引起二义性的宏定义是( )。 A. #define POWER(x) x*x B. #define POWER(x) (x)*(x) C. #define POWER(x) (x*x) D. #define POWER(x) ((x)*(x)) 二. 判断题 1. 宏替换时先求出实参表达式的值,然后代入形参运算求值。 2. 宏替换不存在类型问题,它的参数也是无类型。 3. #include 5. 凡是c源程序中行首以\标识的控制行都是预处理命令。 6. #include ?>命令中的文件名是不能包括路径的。 7. 可以使用条件编译命令来选择某部分程序是否被编译。 8. 在软件开发中,常用条件编译命令来形成程序的调试版本或正式版本。 三. 阅读程序 1. #define S x=y #define P2(x,y) printf(\ main() { int x,y; S=1; ++x || ++y; P2(x,y); S=1; ++x && ++y; P2(x,y); S=-1; ++x || ++y; P2(x,y); } 2. #define M(x,y,z) x*y+z main() { int a=1,b=2, c=3; printf(\} 四. 程序编写 1. 定义一个带参数的宏,使两个参数的值互换。在主函数中输入两个数作为使用宏的实参,输出已交 换后的两个值。说明:在程序主函数使用宏时只能用两个实参,如SWAP(a,B.,不能用三个实参。 1s?(a?b?c)area?s(s?a)(s?b)(s?c)22. 三角形的面积为,其中,a,b,c为三角形的三边。定 义两个带参数的宏,一个用来求s,另一个用来求area。写程序,在程序中用带实参的宏名来求面积area。 第 10 章 一. 选择题 指针 1. 变量的指针,其含义是指该变量的( )。 A.值 B.地址 C.名 D.一个标志 2. 已有定义int k=2,*ptr1,*ptr2;且ptr1和ptr2均已指向变量k,下面不能正确执行的赋值语句是 ( )。 A.k=*ptr1+*ptr2 B.ptr2=k C.ptr1=ptr2 D.k=*ptr1*(*ptr2) 3. 若有说明:int *p,m=5,n; 以下程序段正确的是( )。 A.p=&n; scanf(“%d”,&p); B.p = &n ; scanf(“%d”,*p); C.scanf(“%d”,&n); *p=n ; D.p = &n ; *p = m ; 4. 若有说明:int *p1, *p2,m=5,n;以下均是正确赋值语句的选项是( )。 A.p1=&m; p2=&p1 ; B.p1=&m; p2=&n; *p1=*p2 ; C.p1=&m; p2=p1 ; D.p1=&m; *p1=*p2 ; 5. 若有语句:int *p,a=4;和p=&a;下面均代表地址的一组选项是( )。 A.a, p, *&a B.&*a,&a,*p C.*&p,*p,&a D.&a,&*p,p 6. 下面程序段中,for循环的执行次数是( )。 A.9 B.7 C.6 D.5 char *s=”\\ta\\018bc” ; for ( ; *s!=?\\0? ; s++) printf(“*”) ; 7. 下面能正确进行字符串赋值操作的是( )。 A.char s[5]={“ABCDE”}; B.char s[5]={?A?,?B?,?C?,?D?,?E?}; C.char *s ; s=”ABCDE” ; D.char *s; scanf(“%s”,s) ; 8. 下面程序段的运行结果是( )。 char *s=”abcde” ; s+=2 ; printf(“%d”,s); A.cde B.字符?c? C.字符?c?的地址 D.不确定 9. p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确执行的赋值语句是 ( )。 A.c=*p1+*p2 B.p2=c C.p1=p2 D.c=*p1*(*p2) 10. 以下说明不正确的是( )。 A.char a[10]=”china” ; B.char a[10],*p=a; p=”china”; C.char *a; a=”china” ; D.char a[10],*p; p=a=”china”; 11. 若有定义:int a[5];则a数组中首元素的地址可以表示为( )。 A.&a B.a+1 C.a D.&a[1] 12. 已有函数max(a,b),为了让函数指针变量p指向max,正确的方法是( )。 A.p=max; B.p=max(a,b); C.*p=max; D.*p=max(a,b); 13. 对于类型相同的指针变量,不能进行哪种运算? A. + B. - C. = D. == 14. 若有以下说明和语句,则p1-p2的值为多少? int a[10], *p1, *p2; p1=a; p2=&a[5]; A. 5 B. 6 C. 10 D. 非法 15. main()函数可以带两个形参,一般分为argc和argv,其中argv可以定义为( )。 A. int argv; B. char * argv[]; C. char argv[]; D.char ** argv[]; 16. 若有定义:int (*p)[4];则标识符p( )。 A.是一个指向整型变量的指针 B.是一个指针数组名 C.是一个指针,它指向一个含有四个整型元素的一维数组 D.定义不合法 A. 0 B.1 C.TRUE D. FALSE 7. 若有以下程序段 int x=20; printf(“%d\\n”,~x) ; 则执行以上语句后的输出结果是( )。 A. 02 B. -20 C. -21 D. -11 8. 若有以下程序段 char x=3,y=6,z ; z = x^y<<2 ; 则执行以上语句后,z的值是( ) 。 A.00010100 B.00011011 C.0001100 D.00011000 9. 设位段的空间分配由右到左,则以下程序的运行结果是( )。 struct packed { unsigned a : 2 ; unsigned b : 3 ; unsigned c : 4 ; int i ;} data ; main ( ) { data.a=8 ; data.b=2 ; printf(“%d\\n”,data.a+data.b) ; } A.语法错 B.2 C.5 D.10 10. 设有以下说明 struct packed { unsigned one:1 ; unsigned two:2 ; unsigned three:3 ; unsigned four:4 ; } data ; 则以下位段数据的引用中不能得到正确数值的是( )。 A.data.one=4 B.data.two=4 C.data.three=2 D.data.four=1 二. 填空题 1. 若有运算符<<,sizeof,^,&=,则按优先级由高到低排列为 。 2. 设有char a,b;若要通过a&b运算屏蔽掉a中的其它位,只保留第1和第7位(右起为第0位),则 b的二进制数是 。 3. 测试char型变量a第五位是否为1的表达式是 。 4. 把int型变量low中的低字节及变量high中的高字节放入变量s中的表达式 是 。 5. 以下函数: unsigned getbits(unsigned x ,unsigned p, unsigned n) { x = ((x<<(p+1-n) & ~((unsigned)~0>>n) ; return (x) ; } 若调用此函数时x=0115032, p=7, n=4, 则函数返回值是 。 6. 若x=0123,则表达式(5+(int)(x))&(~2)的值是 。 三. 程序分析题 1. # define F(y) 15>>y # define PRINT(a) printf(″﹪d″,a) main() { PRINT(F(2)); } 2. #include main() { int i,j; i=j=20; i++; j--; printf(\3. int fun(unsigned x) { int b; for (b=0; x!=0; x&=x-1) b++; return b; } main() { printf(\4. #include { int a=40,b=60; a=a^b; b=a^b; a=a^b; printf(\5. #include { unsigned m=0x8000; int i,j; for (i=0; i<16; i++) { printf(\ if (i==7) printf(\ m>>=1; } } main() { fun(97); } 6. #include { struct bit {unsigned b0:1,b1:1,b2:1,b3:1,b4:1,b5:1,b6:1,b7:1;} *p; char s[]=\ while (s[i]!=NULL) { p=(struct bit*)s[i]; sum=p->b0+p->b1+p->b2+p->b3+p->b4+p->b5+p->b6; printf(\ i++; } } 四. 编程题 1. 编写一个函数,对一个unsigned int 变量取出它的奇数位(即从右边起第1,,3,5,7,??,15 位)。 2. 编一函数用来实现左右循环移位。函数名为move,调用方法为move(value,n);其中value为要循环移 位的数,n为移位的位数。如果n<0表示左移,n>0表示右移,n=0表示不移位。 3. 编写一个函数,给出一个数的原码,得到该数的补码。 第 13 章 一. 选择题 文件 1. 将一个整数10002存到磁盘上,以ASCII码形式存储和以二进制形式存储,占用的字节数分别是 ( )。 A. 2和2 B. 2和5 C. 5和2 D. 5和5 2. 若执行fopen函数时发生错误,则函数的返回值是( )。 A.地址值 B.0 C.1 D.EOF 3. 若要用fopen函数打开一个新的二进制文件,该文件既要能读也能写,则文件打开方式字符串应是 ( )。 A.”ab+” B.”wb+” C.”rb+” D.”ab” 4. 利用fseek函数可实现的操作是( )。 A. 改变文件的位置指针 B.文件的顺序读写 C. 文件的随机读写 D.以上答案均正确 5. 函数ftell(fp)的作用是( )。 A.得到流式文件中的当前位置 B.移动流式文件的位置指针 C.初始化流式文件的位置 D.以上答案均正确 二. 填空题 1. C语言流式文件的两种形式是 和 。 2. C语言打开文件的函数是 ,关闭文件的函数是 。 3. 按指定格式输出数据到文件中的函数是 ,按指定格式从文件输入数据的函数 是 ,判断文件指针到文件末尾的函数是 。 4. 输出一个数据块到文件中的函数是 ,从文件中输入一个数据块的函数 是 ;输出一个字符串到文件中的函数是 ,从文件中输入一个字符串的函数是 。 5. feof(fp)函数用来判断文件是否结束,如果遇到文件结束,函数值为 ,否则为 。 6. 在C语言中,文件的存取是以 为单位的,这种文件被称作 文件。 三. 程序填空题 1. 以下程序的功能是将文件file1.c的内容输出到屏幕上并复制到文件file2.c中。 #include { FILE ; fp1=fopen(“file1.c”,”r”); fp2=fopen(“file2.c”,”w”); while (!feof(fp1)) putchar(getc(fp1)); while (!feof(fp1)) putc( ); fclose(fp1); fclose(fp2) ; } 2. 下面程序的功能是将由命令行给出的某源程序文件加行号显示出来(行号从1开始)。 #include main(int argc,char *argv[]) { FILE *in; char line[81]; int row; if ( ) { printf(\exit(1); } if ((in=fopen(argv[1],\ printf(\ row=0; while ( fgets(line,81,in)!= ) { printf(\ } ; } 四. 程序编写 1. 统计一个文本文件中数字、空格、字母出现的次数,以及文件的字节数,并将结果输出,文本文件 名由命令行给出。 2. 有5个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学生号、姓名、三门课成绩), 计算出平均成绩,将原有数据和计算出的平均分数存放在磁盘文件“Stud”中。 3. 编写一个程序并取名test.c,统计该文件中出现”if”,”while”,”for”的次数。
正在阅读:
C语言各章习题集04-18
爱是妈妈的手作文600字06-28
一年级上册图形与位置教学反思01-27
2011年嵊州市中小学教育教学论文的获奖名单 - 图文04-06
科技知识资料02-20
克、千克、吨的认识08-25
XX学院萧湖双创基地会议室和报告厅音视频系统采购招标文件【模板】05-27
2013年5月时事政治(按日整理)04-06
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 各章
- 习题集
- 语言
- 光电课程设计
- 安阳综合交通发展战略 - 图文
- 四季知识乐园-夏
- 国外教师教育改革的经验与启示
- 分离工程习题完整答案
- 个体工商户个人所得税计税办法
- 16秋福建师范大学《组织行为学》在线作业一
- 修试所规章制度
- 自考00504《艺术概论》复习资料
- 2018年中考语文《一碗热汤》《开在心里的橘子花》阅读附答案
- 团委实践部笑脸计划爱心回访活动策划书
- 现在进行时 - 一般将来时 - 一般现在时 - 一般过去式 - 现在完成
- 浙江省杭州市2018届高考英语模拟卷四Word版含解析
- 张之洞实业教育思想与实践述评 doc
- 小学奥数平面几何五大定律
- 北京化工大学-电子材料导论复习题
- 项目经理带班生产情况记录表(样板)
- Authorware中控制音乐停止的方法
- 中国经济发展方式
- 多媒体技术(大作业)