以下为《c语言练习集(含答案)》的无排版文字预览,完整内容请下载
《C语言程序设计》
习题集
班级:
学号:
姓名:
第1章 C语言概述
1.1 基本知识点
( C语言的特点
( C程序基本结构
( C程序的运行过程
( C程序的语法规则
( C程序的开发过程
1.2 练习题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章 数据类型及其运算
2.1 基本知识点
( C语言标识符的定义
( C语言的数据类型
( C语言的基本数据类型(整型、单精度型、双精度型、字符型和枚举型)
( 各种修饰符与基本数据类型的组合方式
( 各种数据类型表示的数值范围以及数据所占内存空间的大小
( 常量:整型、实型及符号常量
( 变量:变量的定义与初始化
( 运算符与表达式:运算符的优先级及结合性
( 算术表达式中数据间的混合运算与类型转换
( 数据类型的隐含转换和强制转换
( 赋值运算符与赋值表达式
( 条件运算符和条件表达式
2.2 练习题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)以下程序的运行结果是 。
#include
main()
{
int i=5,j=6,m=i+++j;
printf("%d,%d,%d\n",i,j,m);
}
A. 6,6,11 B. 5,6,11 C. 5,6,12 D. 6,6,12
【答】m=i+++j等价于m=(i++)+j。本题答案为A。
(9)以下程序的运行结果是 。
#include
void main()
{
double f=3.14159;
int n;
n=(int)(f+10)%3;
printf("%d\n",n);
}
A. 1 B. 0 C. 2 D. 3
【答】f+10=13.14159,(int)(f+10)=13,13%3=1。本题答案为A。
(10)以下程序的运行结果是 。
#include
void main()
{
int n,i=2,j=4;
n=(++i==j--);
printf("%d\n",n);
}
A. 0 B. 1 C. 2 D. 3
【答】++i返回3,j--返回4,两者不等,故n=0。本题答案为A。
2. 填空题
(1)表达式语句与表达式的不同是 。
【答】语句必须以分号结尾,而表达式结尾没有分号;语句可以出现在函数体中数据定义或声明语句后面的任何位置,而表达式只能出现在语句中规定的位置或表达式中(嵌套出现)。
(2)在C语言中可以利用 将一个表达式的值转换成指定的类型。
【答】强制类型转换
(3)写出完成下列功能的表达式:
· 如果变量c是大写字母,则将c转换成对应的小写,否则c的值不改变。 ①
· 如果d是数字,则将d转换成相应的整数,否则d的值不改变。 ②
· 返回两个整数x、y中较大者。 ③
· 返回三个整数x、y和z中最大者。 ④
【答】① c=(c>='A' && c='0' && dy) ? x : y
④ (x>y) ? (x>z ? x : z) : (y>z ? y : z) 或 (x>y && x>z) ? x : (y>z ? y : z)
(4)以下程序的运行结果是 。
#include
#include
main()
{
char s[]="ab\n\\\'\r\b";
printf("%d,%d\n",sizeof(s),strlen(s));
}
【答】字符串s由字符'a'、'b'、'\n'、'\\'、'\''、'\r'、'\b'等7个字符组成,故长度为7,但字符串本身有一个结束标志'\0'。所以,s的长度为7,在内存中占用8个字节。输出为:8,7。
(5)以下程序的运行结果是 。
#include
main()
{
int a=2,b=4,c=6,x,y;
y=(x=a+b),(b+c);
printf("y=%d,x=%d\n",y,x);
}
【答】结果为y=6,x=6。
(6)以下程序的运行结果是 。
#include
main()
{
char a,b;
a='a';b='b';
a=a-32;b=b-32;
printf("%c,%c,%d,%d\n",a,b,a,b);
}
【答】A,B,65,66
(7)以下程序的运行结果是 。
#include
main()
{
int i,j,x,y;
i=5;j=7;
x=++i;y=j++;
printf("%d,%d,%d,%d\n",i,j,x,y);
}
【答】执行x=++i后,i=6,x=6;执行y=j++后,j=8,y=7;所以输出为:6,8,6,7。
(8)以下程序的运行结果是 。
#include
main()
{
int a=1;
char c='a';
float f=2.0;
printf("①:%d\n",a+2!=c-100);
printf("②:%d\n",(a>c)>=(f>4));
printf("③:%d\n",!a==!f);
printf("④:%d\n",(!a&&1)!=(!c||1));
printf("⑤:%d\n",(!a>2)?3:0)c的结果是0(假),f>4的结果是0,表达式结果=1)
③:1(!a的结果是0,!f的结果是0,表达式结果=1)
④:1(!a&&1的结果是0,!c||1的结果是1,表达式结果=1)
⑤:0(!a>2的结果是0,(!a>2)?3:0的结果是0,f!=1的结果是1,(f!=1)?0:1的结果是0,表达式结果=0)
⑥:1((1,2,3)表达式的结果是3,(3,3,3)的结果是3,表达式结果=1)
第3章 顺序结构程序设计
3.1 基本知识点
( 程序的三种基本控制结构
( 顺序执行语句、表达式语句、函数调用语句、复合语句和空语句
( 格式化输出函数printf()的使用方法
( 格式化输入函数scanf()的使用方法
( 单字符输入函数getchar()和输出函数putchar()的使用方法
3.2 练习题3及参考答案
1. 单项选择题
(1)以下说法正确的是 。
A. 输入项可以为一个实型常量,如scanf("%f",3.5)
B. 只有格式控制没有输入项也能进行正确输入,如scanf("%d")
C. 当输入一个实型数据时,格式控制部分应规定小数点后的位数,如scanf("%4.2f",&f)
D. 当输入数据时,必须指明变量的地址,如scanf("%f",&f)
【答】D
(2)若a为整型变量,则以下语句 。
a=-2L;
printf("%d\n",a);
A. 赋值不合法 B. 输出值为-2 C. 输出为不确定值 D. 输出值为2
【答】B
(3)若x和y均定义为int型,z定义为double型,以下scanf()函数调用语句不合法的是 。
A. scanf("%d%lx,%le",&x,&y,&z); B. scanf("%2d*%d%lf",&x,&y,&z);
C. scanf("%x%*d%o",&x,&y); D. scanf("%x%o%6.2f",&x,&y,&z);
【答】scanf()函数中没有精度控制。本题答案为D。
(4)若a,b,c均定义为int型,要给它们输入数据,正确的输入语句是 。
A. read(a,b,c); B. scanf("%d%d%d",a,b,c);
C. scanf("%D%D%D",a,b,c); D. scanf("%d%d%d",&a,&b,&c);
【答】D
(5)若有定义和语句:
int n=10;
printf("%\n",n);
其输出结果是 。
A. 输出10 B. 输出一空行 C. 没有输出 D. 编译不通过
【答】D
(6)若a是float型变量,b是unsigned型变量,以下输入语句中合法的是 。
A. scanf("%6.2f%d",&a,&b); B. scanf("%f%n",&a,&b);
C. scanf("%f%3o",&a,&b); D. scanf("%f%f",&a,&b);
【答】C
(7)字母a的ASCII码为97,则下列语句的运行结果为 。
char a='a';
a--;
printf("%d,%c\n",a+'2'-'0',a+'3'-'0');
A. b,c B. a--运算不合法,故有语法错
C. 98,c D. 格式描述和输出项不匹配,输出无定值
【答】C
(8)若k1,k2,k3,k4均为int型变量,为了将整数10赋给k1和k3,将整数20赋给k2和k4,则对应以下scanf()函数调用语句的正确输入方式是 。
scanf("%d%d",&k1,&k2);
scanf("%d,%d",&k3,&k4);
A. 1020
B. 1020
C. 10,20
D. 1020
1020
1020
10,20
10,20
【答】D
(9)有如下程序,输入数据12345678!櫤螅瑇的值是 ① ,y的值是 ② 。
#include
main()
{
int x;
float y;
scanf("%3d%f",&x,&y);
}
① A. 12345 B. 123 C. 45 D.345
② A. 45.000000 B. 45678.000000 C. 678.000000 D.123.000
【答】① B ② A
(10)有如下程序,输入数据25,13,10!櫤螅返脑诵薪峁? 。
#include
main()
{
int x,y,z;
scanf("%d%d%d",&x,&y,&z);
printf("x+y+z=%d\n",x+y+z);
}
A. x+y+z=48 B. x+y+z=35
C. x+y+z=38 D. 不确定值
【答】输入的数据与scanf()函数的格式不匹配。本题答案为D。
(11)有如下程序,输入数据12345!櫤螅瑇的值是 ① ,y的值是 ② 。
#include
main()
{
int x;
float y;
scanf("%3d%f",&x,&y);
}
① A. 12 B. 123 C. 12345 D. 0
② A. 12.000000 B. 345.000000 C. 12345.000000 D. 0.000000
【答】① A ② B
(12)有如下程序,输入数据***10!櫤螅绦虻脑诵薪峁? 。
#include
main()
{
int a;
float b,c;
scanf("%2d%3f%4f",&a,&b,&c);
printf("a=%d,b=%f,c=%f\n",a,b,c);
}
A. a=98,b=765,c=4321 B. a=10,b=432,c=8765
C. a=98,b=765.000000,c=4321.000000 D. a=98,b=765.0,c=4321.0
【答】C
(13)以下程序的运行结果是 。
#include
main()
{
float a=3.1415;
printf("|%6.0f|\n",a);
}
A. |3.1415| B. | 3.0| C. | 3| D. | 3.|
【答】C
(14)以下程序的运行结果是 。
#include
main()
{
float a=3.1415;
printf("|%06.0f|\n",a);
}
A. |000003| B. |3.1415| C. |00003.0| D. | 3|
【答】A
(15)以下程序的运行结果是 。
#include
main()
{
float a=3.1415;
printf("|%-6.0f|\n",a);
}
A. |3| B. |000003| C. |3.1415| D. |3.0|
【答】A
(16)以下程序的运行结果是 。
#include
main()
{
int i=010,j=10;
printf("%d,%d\n",++i,j--);
}
A. 11.10 B. 9,10 C. 010,9 D. 10,9
【答】B
(17)以下程序的运行结果是 。
#include
main()
{
int x=10,y=10;
printf("%d,%d\n",x--,--y);
}
A. 10,10 B. 9,9 C. 9,10 D. 10,9
【答】D
2. 填空题
(1)以下程序的运行结果是 。
#include
main()
{
float f=3.***;
printf("%f,%5.4f,%3.3f",f,f,f);
}
【答】3.141593,3.1416,3.142
(2)以下程序的运行结果是 。
#include
main()
{
float f=3.5;
printf("%f,%g",f,f);
}
【答】3.500000,3.5
(3)以下程序的运行结果是 。
#include
main()
{
float f=31.41592;
printf("%f,%e",f,f);
}
【答】31.415920,3.141592e+001
(4)以下程序的运行结果是 。
#include
main()
{
int x=0177;
printf("%3d,%6d,%6o,%6x,%6u\n",x,x,x,x,x);
内容过长,仅展示头部和尾部部分文字预览,全文请查看图片预览。 ent),SEEK_SET);
/*由序号直接跳到主文件的这个记录*/
fread(&s,sizeof(student),1,mfile);
printf(" 新家庭地址:",no);
gets(newaddr);
strcpy(s.address,newaddr);
fseek(mfile,(i-1)*sizeof(student),SEEK_SET);
/*由于前面执行fread函数,改变了文件指针,需重新定位,或使用
fseek(mfile,-(long)sizeof(student),SEEK_CUR)语句回跳
一个记录位置*/
fwrite(&s,sizeof(student),1,mfile);
printf("%s,%s,%c,%d,%s,%s,%s\n",s.num,s.name,s.sex,
s.age,s.address,s.department,s.speciality);
}
}
}
fclose(mfile);
}
[文章尾部最后500字内容到此结束,中间部分内容请查看底下的图片预览]请点击下方选择您需要的文档下载。
以上为《c语言练习集(含答案)》的无排版文字预览,完整内容请下载
c语言练习集(含答案)由用户“LINGHUDIE”分享发布,转载请注明出处