C语言编程基础习题答案文档格式.docx
- 文档编号:16905993
- 上传时间:2022-11-27
- 格式:DOCX
- 页数:33
- 大小:28.96KB
C语言编程基础习题答案文档格式.docx
《C语言编程基础习题答案文档格式.docx》由会员分享,可在线阅读,更多相关《C语言编程基础习题答案文档格式.docx(33页珍藏版)》请在冰豆网上搜索。
inta,b,c;
scanf("
&
a);
scanf("
b);
c=a*b+10;
c=%d"
c);
习题二
1、单项选择题。
⑴C语言中的变量名只能由字母、数字和下划线组成,且第一个字符_C_。
⑵合法的常量是__D___。
⑶C语言中的基本数据类型所占存储空间长度的顺序是__D___。
⑷下列符号串中与123.0相同的合法常量是__C___。
2、填空。
⑴C语言中的基本数据类型包括____整型(int)_、____浮点型(flot)__和_字符型(char)_三种。
⑵整型常数有_十进制整数_、_八进制整数_和_十六进制整数_三种表示形式;
整型变量可分为四类:
_一般整型(int)_、_短整型(short)_、_长整型(long)_、_无符号型_。
其中_无符号型_又可分为_无符号整型(unsignedint)、_无符号短整型(unsignedshort)和_无符号长整型(unsignedlong)_3种。
⑶有10个用指数形式表示的符点常数:
请指出合法的有___③④⑥⑧⑩___。
⑷在C中,没有专为存贮字符串的变量,但可以用__字符型数组__或__字符型指针变量_存贮字符串。
其定义格式为_charstr[6];
_和_char*a;
_。
⑸数据类型混合运算时,要进行同型转换,转换方式分为__自动转换(隐式转换)__和__强制转换(显式转换)__两种。
3、写出下列程序运行结果。
⑴215/9=23…8
⑵97b
⑶4.000000
4、编写程序。
⑴按题目要求编写求三个已知数的乘积,程序如下:
inta,b,c;
a=19;
b=22;
c=650;
a*b*c=%d\n"
a*b*c);
⑵按题目要求,编写将值整数化后赋值的程序如下:
inta1,a2;
floatb,c;
b=35.425;
c=52.954;
a1=(int)(b*c);
a2=(int)c%(int)b;
a1=%d;
a2=%d\n"
a1,a2);
⑶按题目要求,编写计算圆周长、面积和圆柱体积的程序如下:
intr,h,c,s,v;
r=15;
h=3;
c=2*3.14*15;
s=3.14*r*r;
v=s*h;
c=%d,s=%d,v=%d\n"
c,s,v);
习题三
⑴设有intx=11;
则表达式(x++*1/3)的值是_____3____。
⑵已知数学表达式y=x²
-2x+5,写出对应的C语言表达式_y=x*x-2*x+5_。
⑶已知a=10,则表达式x=(a=a+b,a-b)的值为__x=10__。
⑴在C语言中,下列运算符的操作数必须是int类型的运算符是(D)。
⑵假设所有变量均为整型,则表达式(a=2,b=5,a++,b++,a+b)的值为(A)。
⑶已定义intm=6,n=5;
,则执行m%=n-1;
之后,m的值是(B)。
⑷已有inta=1,b=1;
则执行b=(a=2*3,a*5),a+7之后,a,b的值是(B)。
⑸已有intx=2,y=1;
则执行x++==y--;
的结果是(D)。
3、求下面算术表达式的值。
⑴2.500000
⑵3.500000
⑴注意,在C语言中,因为函数调用中参数按从右到左的顺序求值,因此该程序执行打印输出的结果为:
311
⑵该程序在计算条件表达式的值赋给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
⑴用符号常量编写简单计算程序如下(复杂应用应在第9章学习后再做):
#defineN12
#defineM25
floatc;
N+M=%d\n"
N+M);
N-M=%d\n"
N-M);
N*M=%d\n"
N*M);
c=(float)N/M;
N/M=%f\n"
⑵查看i++与++j运算结果差异的程序,编写如下:
inti=20,j=20;
i++:
%d\n++j:
%d\n"
i++,++j);
⑶查看m--与--n运算结果差异的程序,编写如下:
intm=20,n=20;
m--:
%d\n--n:
m--,--n);
习题四
⑴下列叙述不正确的是__B__。
⑵当输入数据为12345678时,下面程序运行的结果是__C___。
⑶putchar函数可以向终端输出一个__D___。
⑷按格式输出的格式符__C__。
2、回答问题。
⑴在键盘上输入数据格式如下:
12,24,Aa□2.58□-2.58□1□68.5↙
(□代表空格,其中数据1是为了对付%*f占位,↙代表回车)
⑵该题是求输入任意两个整数a与b的和。
若读入a=b=5,其运行结果为:
typeanumberplease!
a=?
5↙
typeanotherplease!
b=?
asumbis10
3、写出下列程序的执行结果。
⑴执行结果:
32767,-32768
2147483647,-2147483648
65535,0
⑵执行结果:
yes,Iamcomputer.
⑶执行结果:
a\b’□□□□□tw
123
⑷执行结果:
58.887299,555.677979
58.887299□□□,555.677979
□□58.887,□555.678,58.887,555.678,58.887299,555.677979
5.88873e+01,□□□5.6e+02
B,66,102,42
7567890,34675022,7a12
11232,25740,2be0,11232
COMPUTER,□□ABC
⑴对输入的大写字母改用小写输出的程序,编写如下:
#include<
stdio.h>
charc;
输入一个大写字母:
\n"
c=getchar();
putchar(c+32);
⑵计算三门课总成绩等数据的程序,编写如下:
math.h>
floata,b,c,sum,ave,mod;
输入三门课程的成绩:
%f%f%f"
a,&
b,&
c);
sum=a+b+c;
ave=(a+b+c)/3;
mod=fmod(sum,3);
总成绩=%5.1f,平均成绩=%5.1f,总成绩除3的余值=%3.1f\n"
sum,ave,mod);
⑶已知数据,按输出结果的要求编写输出程序如下:
inta=1,b=2,c=3,g=12345;
floatd=7.2,e=-5.5,f=1.56;
longh=123456;
chari='
o'
j='
p'
;
a=%db=%dc=%d\n"
a,b,c);
d=%f,e=%f,f=%f\n"
d,e,f);
d+e=%4.2fe+f=%4.2fd+f=%5.3f\n"
d+e,e+f,d+f);
g=%7dh=%ld\n"
g,h);
i=%cor%d\nj=%cor%d\n"
i,i,j,j);
}
习题五
⑴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=%d\n”,m=2);
elseprintf(”n=%d\n”,n=1);
3、指出以下程序的打印结果。
该程序运行结果如下:
x=11y=10
x=55y=10
x=8y=10z=10
x=2y=2
x=3y=3
x=4y=4
x=5y=5
x=6y=6
x=7y=7
x=8y=8
x=9y=9
x=1y=1000
x=2y=100
x=3y=10
⑴按要求,用两种循环方式编写相关程序如下:
⑴-①的for循环
intr;
floatv;
for(r=1;
r<
=100;
r+=2)
v=4/3*3.14*pow(r,3);
r=%d,v=%f\n"
r,v);
⑴-①的while循环
r=1;
while(r<
=100)
v=4/3*3.14*pow(r,3);
r+=2;
⑴-②的for循环
ints,i;
s=0;
for(i=13;
i<
=103;
i+=10)s=s+i;
s=%d\n"
s);
⑴-②的while循环
i=13;
while(i<
=103)
s+=i;
i+=10;
⑵找出学生成绩中的最高分和最低分的程序,编写如下:
intmax,min,n;
请输入成绩,-1结束:
n);
max=min=n;
while(n!
=-1)
if(n>
max)max=n;
if(n<
min)min=n;
最高分:
%d,最低分:
max,min);
⑶输出“水仙花数”的程序,编写如下:
intn,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("
n);
习题六
⑴数组是一组具有相同___类型__的数据的集合。
⑵如果一个数组的长度为10,则该数组中数组元素下标的最小值为_0_,最大值为_9_。
⑶若有inta[]={10,20,30,40};
则数组a的长度为__4__。
⑷在C语言中,没有字符串变量,字符串的存储是通过__字符数组__来实现的。
⑸strlen函数的功能是__测试字符串的长度__,strcmp函数的功能是__比较两个字符串的大小__。
⑴定义一个有100个元素的int型数组,下面正确的语句是__D__。
⑵下面正确的对数组b进行初始化的语句是__C__。
⑶在C程序中,引用一个数组元素时,其下标的数据类型允许是__D__。
⑷下面语句中正确的是___A__。
⑸若有定义:
charstr[]="
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:
1020304050
数组b:
12300
数组c:
0123
⑶该程序通过gets()函数为字符数组接收字符,然后输出各元素。
abc↙(输入的字符)
str[0]=a
str[1]=b
str[2]=c
4、编写程序。
⑴对输入一组数进行相关统计的程序,编写如下:
inti,num[10];
intmax,min,sum=0;
floataverage;
clrscr();
输入10个数:
for(i=0,i<
10;
i++)
{
num[i]);
/*输入数值*/
sum+=num[i];
/*累加求和*/
}
average=(float)sum/10;
/*求平均值*/
max=min=num[0];
for(i=1;
if(num[i]>
max)max=num[i];
/*求最大值*/
elseif(num[i]<
min)min=num[i];
/*求最小值*/
最大值=%d\n"
max);
最小值=%d\n"
min);
10个数的和为:
sum);
平均值为:
%6.2f"
average);
⑵求素数的程序编写如下:
inti,j,k,m=0;
for(i=2;
{k=0;
for(j=2;
j<
=i-1;
j++)
if(i%j==0)
{k=1;
break;
if(k==0)
{printf("
%4d"
i);
m=m+1;
if(m%8==0)
printf("
⑶判断一个浮点数是否在一个浮点型数组中的程序,编写如下:
inti,exist;
floata[4],n;
输入浮点型数组:
for(i=0;
4;
a[%d]="
%f"
a[i]);
输入一个浮点数:
exist=0;
{
a[%d]=%f;
i,a[i]);
if(a[i]==n)exist=1;
if(exist==1)printf("
%f在数组中。
elseprintf("
%f不在数组中!
\n”,n);
此题前面的浮点型数组的值,也可通过初始化直接赋值的办法得到。
⑷输出二维数组中最大值及位置的程序,编写如下:
inti,j,row=0,col=0,max;
inta[4][6];
for(i=0;
for(j=0;
6;
scanf(“%d”,&
a[i][j]);
max=a[0][0];
if(a[i][j]>
max)
{max=a[i][j];
row=i;
col=j;
printf(“max=%d,row=%d,col=%d\n”,max,row,col);
⑸在字符串中的指定位置插入字符串的程序,编写如下:
charch1[10],ch2[3],ch3[13];
inti=0,n;
输入字符串1(长度为10):
%s"
ch1);
输入字符串2(长度为3):
ch2);
插入位置n(n<
10):
n--;
n;
i++)ch3[i]=ch1[i];
for(i=n;
n+3;
i++)ch3[i]=ch2[i-n];
i++)ch3[i+3]=ch1[i];
ch3);
习题七
⑴C语言函数分成__系统提供的库函数__和__用户自定义函数_两大类。
⑵一个C程序由主函数和若干__个自定义函数__组成,各个函数在程序中的定义是__相互独立__的。
⑶函数的递归调用是指__函数直接或间接地调用自己__。
⑷当__用数组名__作函数参数时,实参与形参的传递为“地址传递”。
⑸根据变量的作用范围的不同,可将变量分为_局部_变量和_全局_变量。
根据变量生存期的不同,可以将变量分为__动态存储__变量和__静态存储__变量。
⑹static变量的特点是__其值始终存在__。
⑴如果一个函数有返回值,那么这个函数只有__A__个返回值。
⑵下面关于空函数的定义,正确的是___B___。
⑶以下错误的描述是__C___。
⑷调用一个不含return语句的函数,以下正确的说法是___D___。
⑸下面函数调用语句中含有实参的个数为___C___。
⑹数组名作函数参数时,实参传递给形参的是__B___。
3、指出并改正下面程序在函数定义或调用中的错误。
⑴被调函数f(x)定义时对形式参数x未做参数说明。
应改为:
f(intx)
或:
f(x)
intx;
⑵函数调用时,实际参数的类型应与被调函数形式参数的类型相一致。
本题在主函数中的整型变量a应改为浮点型:
inta;
改为floata;
⑶被调函数f()定义时不需要加分号,f();
应改为:
f()
⑷在C程序中,不能在一个函数的函数体内定义另一个函数。
该题在主函数中定义f()为空值类型且作为一个语句是错误的。
应去掉voidf();
⑴主函数以a=2为实参调用f(x)函数,f(x)通过return语句向主函数返回y的值赋给b,结果应为:
b=4
⑵在该程序中实参变量a、b和形参变量x、y分别占用不同的存储单元,虽然在swap函数中x、y的值发生了交换,但主函数中a、b的值却没有改变。
运行结果应为:
a=1↙
b=2↙
x=2,y=1
a=1,b=2
⑶全局变量x初始化为1,调用被调函数f()执行一次x++,然后再执行x++后输出x值应为:
x=3
⑷x为定义在整个函数体和复合语句内的同名自动变量,其作用域不同。
intx=20;
定义在复合语句中,只在复合语句中有效。
x=20x=11
⑸执行被调函数,将原数组元素初值分别加1,因此输出结果为:
num[0]=2
num[1]=3
num[2]=4
num[3]=5
num[4]=6
5、编写程序。
⑴该题目要求使用判断奇偶数函数,编写程序如下:
intn;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 编程 基础 习题 答案