admin 管理员组文章数量: 887021
2023年12月18日发(作者:sql周末培训)
c语言编程基础习题答案
《C语言编程基础(第2版)》习题答案
前言
《C语言编程基础(第2版)》每章后面都安排了一定数量的习题,这有利于读者理解、消化和掌握各单元的学习内容。习题中,除了有填空题、选择题、回答问题等适合掌握基本概念的题型外,大部分是分析程序运行结果和要求编写实用程序,这有利于读者训练编程技巧和增强编程能力。应广大读者要求,特别是一线教学老师的要求,我们给出全部习题答案,供读者参考。编程答案只是实现题目算法要求的一种,并不一定是最好的。希望读者自己多做思考,利用多种方法进行编程,用以提高自己的程序设计水平和锻炼自己的创新能力。由于作者水平所限,错误和不当之处在所难免,恳请批评指正。
习题一
1、填空题。
⑴ C语言程序由__函数__组成,其中必须有且只能有一个名为_main__的函数。C程序的执行从___名为main的主__函数开始。
⑵每个C语句必须以__分__号结束。
⑶标识符只能由_英文字母_、__数字_和_下划线__三类符号构成,而且标识符的第一个字符必须是__英文字母__或__下划线__。
⑷关键字是指___C语言编译系统所固有的、具有专门意义的标识符___。
⑸ C程序中,注释的内容应放在__/*_和_*/__符号之间。
2、选择题。
⑴下面合法的C语言标识符是___ C ___。
⑵ C语言中主函数的个数是___ A______。
⑶以下有关注释的描述中,错误的是___ C ___。
⑷ C程序中,main函数的位置____ D___。
3、指出并改正下面程序中的错误。
⑴ main 应为 main()
⑵应在本程序最后加上大括号 }。
⑶语句结束应有分号。如:
int a,b;
a=1;b=2;
printf("%d",a+b);
4、分析下列程序,写出运行结果。
⑴该程序是计算两个整数a和b的乘积并赋值给c,运行结果为:
c=30
⑵该程序输出一个字符串和一排星号,运行结果为:
Hello!
*****************
5、编程题。
⑴按题目要求,编写输出固定信息的程序如下:
main()
{
pt();
printf(" Welcome!");
pt();
}
pt()
{
printf("*****************");
}
⑵按题目要求,编写输入数据输出其表达式的程序如下:
main()
{
int a,b,c;
scanf("%d",&a);
scanf("%d",&b);
c=a*b+10;
printf("c=%d",c);
}
习题二
1、单项选择题。
⑴ C语言中的变量名只能由字母、数字和下划线组成,且第一个字符_ C _。
⑵合法的常量是__ D ___。
⑶ C语言中的基本数据类型所占存储空间长度的顺序是__ D___。
⑷下列符号串中与相同的合法常量是__ C___。
2、填空。
⑴ C语言中的基本数据类型包括____整型(int)_、____浮点型(flot)__ 和_字符型(char)_三种。
⑵整型常数有_十进制整数_、_八进制整数_和_十六进制整数_三种表示形式; 整型变量可分为四类: _一般整型(int)_、_短整型(short)_、_长整型
(long)_、_无符号型_。其中_无符号型_又可分为_无符号整型(unsigned int)、_无符号短整型(unsigned short)和_无符号长整型(unsigned long)_3种。
⑶有10个用指数形式表示的符点常数:
请指出合法的有___③④⑥⑧⑩___。
⑷在C中,没有专为存贮字符串的变量,但可以用__字符型数组__ 或__字符型指针变量_存贮字符串。其定义格式为_ char str[6];_和_ char
*a;_。
⑸数据类型混合运算时, 要进行同型转换, 转换方式分为__自动转换(隐式转换)__和__强制转换(显式转换)__两种。
3、写出下列程序运行结果。
⑴ 215/9=23 (8)
⑵ 97 b
⑶
4、编写程序。
⑴按题目要求编写求三个已知数的乘积,程序如下:
main()
{
int a,b,c;
a=19;
b=22;
c=650;
printf("a*b*c=%dn",a*b*c);
}
⑵按题目要求,编写将值整数化后赋值的程序如下:
main()
{
int a1,a2;
float b,c;
b=;
c=;
a1=(int)(b*c);
a2=(int)c%(int)b;
printf("a1=%d;a2=%dn",a1,a2);
}
⑶按题目要求,编写计算圆周长、面积和圆柱体积的程序如下:
main()
{
int r,h,c,s,v;
r=15;
h=3;
c=2**15; s=*r*r; v=s*h;
printf("c=%d, s=%d , v=%dn",c,s,v);
}
习题三
1、填空题。
⑴设有int x=11;则表达式(x++*1/3)的值是_____3____。
⑵已知数学表达式y=x2-2x+5,写出对应的C语言表达式_y=x*x-2*x+5_。
⑶已知a=10,则表达式x=(a=a+b,a-b)的值为__x=10__。
2、选择题。
⑴在C语言中,下列运算符的操作数必须是int类型的运算符是(D)。
⑵假设所有变量均为整型,则表达式(a=2,b=5,a++,b++,a+b)的值为(A)。
⑶已定义int m=6,n=5;,则执行m%=n-1;之后,m的值是(B)。
⑷已有int a=1,b=1;则执行b=(a=2*3,a*5),a+7之后,a,b的值是(B)。
⑸已有int x=2,y=1;则执行x++==y--;的结果是(D)。
3、求下面算术表达式的值。
⑴
⑵
4、分析下列程序,写出运行结果。
⑴注意,在C语言中,因为函数调用中参数按从右到左的顺序求值,因此该程序执行打印输出的结果为:
3 1 1
⑵该程序在计算条件表达式的值赋给a时,其x值已为6,y值已为7,因此运行结果为:
a=7,b=0,c=6
⑶该程序利用运算符与结合性的优先级不同,而取得a与b的值。(因为该题使用了逻辑运算符,可在学了第5章以后再详细分析)运行结果如下:
a=2,b=1
⑷该程序应用复合的赋值运算符和从右至左结合性的运算规则,求取n的值,运行结果如下:
n=28
⑸该程序在执行语句“y=x++-1;”时,y为0而x在执行后变为2;在执行语句“z=--y+1;”时,z为0而y便成了-1。运行结果如下:
x=2,y=-1,z=0
5、编程题。
⑴用符号常量编写简单计算程序如下(复杂应用应在第9章学习后再做):
#define N 12
#define M 25
main()
{
float c;
printf("N+M=%dn",N+M);
printf("N-M=%dn",N-M);
printf("N*M=%dn",N*M);
c=(float)N/M;
printf("N/M=%fn",c);
}
⑵查看i++与++j运算结果差异的程序,编写如下:
main()
{
int i=20,j=20;
printf("i++:%dn++j:%dn",i++,++j);
}
⑶查看m--与--n运算结果差异的程序,编写如下:
main()
{
int m=20,n=20;
printf("m--:%dn--n:%dn",m--,--n);
}
习题四
1、单项选择题。
⑴下列叙述不正确的是__B__。
⑵当输入数据为时,下面程序运行的结果是__C___。
⑶ putchar函数可以向终端输出一个__D___。
⑷按格式输出的格式符__ C__。
2、回答问题。
⑴在键盘上输入数据格式如下:
12,24,Aa□□□1□↙
(□代表空格,其中数据1是为了对付%*f占位,↙代表回车)
⑵该题是求输入任意两个整数a与b的和。若读入a=b=5,其运行结果为:
type a number please!a=?
5↙
type another please!b=?
5↙
a sum
b is 10
3、写出下列程序的执行结果。
⑴执行结果:
32767,-32768
47,-48
65535,0
⑵执行结果:
yes,I am computer.
⑶执行结果:
ab’□□□□□tw
123
⑷执行结果:
,
□□□,
□□, □,,,,
+01, □□□+02
B,66,102,42
7567890,,7a12
11232,25740,2be0,11232
COMPUTER, □□ABC
4、编写程序。
⑴对输入的大写字母改用小写输出的程序,编写如下:
#include <>
main()
{
char c;
printf("输入一个大写字母:n");
c=getchar();
putchar(c+32);
}
⑵计算三门课总成绩等数据的程序,编写如下:
#include <>
main()
{
float a,b,c,sum,ave,mod;
printf("输入三门课程的成绩:n");
scanf("%f%f%f",&a,&b,&c);
sum=a+b+c;
ave=(a+b+c)/3;
mod=fmod(sum,3);
printf("总成绩=%5.1f,平均成绩=%5.1f,总成绩除3}
的余值=%3.1fn",sum,ave,mod);
⑶已知数据,按输出结果的要求编写输出程序如下:
main()
{
int a=1,b=2,c=3,g=12345;
float d=,e=,f=;
long h=123456;
char i='o',j='p';
printf("a=%d b=%d c=%dn",a,b,c);
printf("d=%f,e=%f,f=%fn",d,e,f);
printf("d+e=%4.2f e+f=%4.2f d+f=%5.3fn",d+e,e+f,d+f);
printf("g=%7d h=%ldn",g,h);
printf("i=%c or %dnj=%c or %dn",i,i,j,j);
}
习题五
1、单项选择题。
⑴ C语言用__C__表示逻辑量为“假”
⑵要求当A的值为奇数时,表达式的值为“真”;A的值为偶数时,表达式的值为“假”。以下不满足要求的表达式是__D__。
⑶在if语句的嵌套中,else总是与__C__配对。
⑷下面对for循环概念描述正确的是__D__。
2、填空题。
⑴ switch后面的“表达式”,通常为_整_型或_字符_型表达式;每个case的常量表达式的值__不能相同__。
⑵如果不算goto语句构成的循环结构,那么C语言可以构建循环的语句一共有_3_种,分别是__for循环、while循环、do-while循环__。
⑶ continue语句与break语句在使用时,有两点主要的不同:①它不适用于_switch_语句;②它跳转时是__跳过循环体中下面的语句从下一次循环开始__。
⑷把下面的两条if分支语句合并成一条if分支语句应该写成:
if(x>=y) printf(”m=%dn”, m=2);
else printf(”n=%dn”, n=1);
3、指出以下程序的打印结果。
该程序运行结果如下:
x=11 y=10
x=55 y=10
x=8 y=10 z=10
x=2 y=2
x=3 y=3
x=4 y=4
x=5 y=5
x=6 y=6
x=7 y=7
x=8 y=8
x=9 y=9
x=2 y=2
x=1 y=1000
x=2 y=100
x=3 y=10
4、编写程序。
⑴按要求,用两种循环方式编写相关程序如下:
⑴-①的for循环
#include <>
main()
{
int r;
float v;
for (r=1;r<=100;r+=2)
{
v=4/3**pow(r,3);
printf("r=%d,v=%fn",r,v);
}
}
⑴-①的while循环
#include <>
main()
{
int r;
float v;
r=1;
while (r<=100)
{
v=4/3**pow(r,3);
printf("r=%d,v=%fn",r,v);
r+=2;
}
}
⑴-②的for循环
main()
{
int s,i;
s=0;
for (i=13;i<=103;i+=10) s=s+i;
printf("s=%dn",s);
}
⑴-②的while循环
main()
{
int s,i;
s=0;
i=13;
while (i<=103)
{
s+=i;
i+=10;
}
printf("s=%dn",s);
}
⑵找出学生成绩中的最高分和最低分的程序,编写如下:
main()
{
int max,min,n;
printf("请输入成绩,-1结束:");
scanf("%d",&n);
max=min=n;
while (n!=-1)
{
if (n>max) max=n;
if (n
scanf("%d",&n);
}
printf("最高分:%d,最低分:%dn",max,min);
}
⑶输出“水仙花数”的程序,编写如下:
#include <>
main()
{
int n,a,b,c;
for (n=100;n<=999;n++)
{
a=n/100;
b=n%10;
c=(n%100-b)/10;
if (pow(a,3)+pow(b,3)+pow(c,3)==n) printf("%dn",n);
}
}
习题六
1、填空题。
⑴数组是一组具有相同___类型__的数据的集合。
⑵如果一个数组的长度为10,则该数组中数组元素下标的最小值为_0_,最大值为_9_。
⑶若有 int a[]={10,20,30,40}; 则数组a的长度为__4__。
⑷在C语言中,没有字符串变量,字符串的存储是通过__字符数组__来实现的。
⑸ strlen函数的功能是__测试字符串的长度__,strcmp函数的功能是__
比较两个字符串的大小__。
2、选择题。
⑴定义一个有100个元素的int型数组,下面正确的语句是__D__。
⑵下面正确的对数组b进行初始化的语句是__C__。
⑶在C程序中,引用一个数组元素时,其下标的数据类型允许是__D__。
⑷下面语句中正确的是___A__。
⑸若有定义:char str[]="Hello" ; 则数组str所占的空间为___B__。
3、分析下列程序,写出运行结果。
⑴该程序通过for循环为数组元素自动赋值,然后输出。运行结果如下:
a[0]=1
a[1]=2
a[2]=3
a[3]=4
a[4]=5
a[5]=6
a[6]=7
a[7]=8
a[8]=9
a[9]=10
⑵该程序定义并初始化了a、b、c三个数组,然后分别输出各数组的各个元素,用来验证初始化的结果。运行结果如下:
数组a:10 20 30 40 50
数组b: 1 2 3 0 0
数组c: 0 1 2 3
⑶该程序通过gets()函数为字符数组接收字符,然后输出各元素。运行结果如下:
abc↙(输入的字符)
str[0]=a
str[1]=b
str[2]=c
4、编写程序。
⑴对输入一组数进行相关统计的程序,编写如下:
main()
{
int i,num[10];
int max,min,sum=0;
float average;
clrscr();
printf("输入10个数:n");
for(i=0,i<10;i++)
{
scanf("%d",&num[i]);/* 输入数值 */
sum+=num[i]; /* 累加求和 */
}
average=(float)sum/10;/* 求平均值 */
max=min=num[0];
for(i=1;i<10;i++)
if(num[i]>max)max=num[i]; /*求最大值*/
else if(num[i]
版权声明:本文标题:c语言编程基础习题答案 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/free/1702836840h432733.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论