C语言程序设计课后习题18参考答案供参考Word格式.docx
- 文档编号:20299614
- 上传时间:2023-01-21
- 格式:DOCX
- 页数:23
- 大小:20.94KB
C语言程序设计课后习题18参考答案供参考Word格式.docx
《C语言程序设计课后习题18参考答案供参考Word格式.docx》由会员分享,可在线阅读,更多相关《C语言程序设计课后习题18参考答案供参考Word格式.docx(23页珍藏版)》请在冰豆网上搜索。
习题2参考答案
1、C语言有哪些特点?
(1)简洁紧凑、灵活方便;
(2)运算符丰富;
(3)数据结构丰富;
(4)C语言是结构式语言;
(5)C语言的语法限制不太严格、程序设计自由度大;
(6)C语言允许直接访问物理地址,可以直接对硬件进行操作;
(7)C语言程序生成代码质量高,程序执行效率高;
(8)C语言使用范围大,可移至性好;
(9)具有预处理功能;
(10)具有递归功能。
2、C语言的主要应用有哪些?
(1)许多系统软件和大型应用软件都是用C语言编写的,如UNIX、Linux等操作系统。
(2)在软件需要对硬件进行操作的场合,用C语言明显优于其他高级语言。
例如,各种硬件设备的驱动程序(像显卡驱动程序、打印机驱动程序等)一般都是用C语言编写的。
(3)在图形、图像及动画处理方面,C语言具有绝对优势,特别是游戏软件的开发主要就是使用C语言。
(4)随着计算机网络飞速发展,特别是Internet的出现,计算机通信就显得尤其重要,而通信程序的编制首选就是C语言。
(5)C语言适用于多种操作系统,像Windows、UNIX、Linux等绝大多数操作系统都支持C语言,其他高级语言未必能得到支持,所以在某个特定操作系统下运行的软件用C语言编制是最佳选择。
3、列举几种程序设计语言。
C语言、Java语言、Pascal语言、BASIC语言、LOGO语言等。
1、机器语言汇编语言高级语言
2、机器语言
3、ALGOL60
4、多个函数
5、main
6、#include
7、定义使用
8、声明部分执行部分声明部分执行部分
1、D2、B3、B4、C5、C6、C7、D8、C9、D10、A11、B12、A13、B14、C15、A
习题3参考答案
一、填空题
1、整型字符型实型
2、字母数字下划线字母下划线
3、直接符号符号
4、00x
5、12
6、48
7、-32768~32767
8、-16
9、x+=1;
10、26
11、(m/10)%10*100+m/100(100*10)+m%10
二、选择题
1、D2、C3、A4、B5、B6、D7、B8、C9、A10、A11、C12、B13、B14、D15、B16、D17、B18、D19、C20、A21、B22、D23、D24、D25、D26、D27、C28、A29、C30、B
习题4参考答案
1、scanfprintf
2、按指定的输出格式将信息输出到屏幕上常规字符格式控制符
3、X、E、G
4、getche输入的字符回显,而getch输入的字符不回显
5、fflush
6、解决某个问题的具体的方法和步骤
7、自然语言描述伪代码流程图N-S图
8、顺序分支循环
1、B2、C3、D4、C5、B6、C7、D8、C9、B10、B11、D12、C13、D14、D15、A
三、编程题
1、编写一程序要求任意输入四位十六进制整数,以反序的方式输出该十六进制数。
例如:
输入9AF0,则输出0FA9。
#include<
>
voidmain()
{
unsignedshorta,b;
scanf(“%4x”,&
a)fx2=%.2f\n”,x1,x2);
}
6、假设从键盘输入某日午夜零点到现在已经历的时间(单位:
s),遍一程序计算到现在为止已近过了多少天,现在的时间是多少?
unsignedlongt,r;
intd,h,m,s;
printf(“second=”);
scanf(“%d”,&
t);
d=t/(24*3600);
r=t%(24*3600);
h=r/3600;
m=(r%3600)/60;
s=(r%3600)%60;
printf(“havepasseddaysis%d,currenttimeis%02d:
%02d:
%02d\n”,d,h,m,s):
习题5参考答案
编程题
1、编一程序判断输入整数的正负性和奇偶性。
inta;
a);
if(a>
=0)
printf(“thenumber%dispositivenumber\n”,a);
else
printf(“thenumber%disnegativenumber\n”,a);
if(a%2==0)
printf(“thenumber%disevennumber\n”,a);
printf(“thenumber%disoddnumber\n”,a);
2、编程判断输入数据的符号属性。
#include<
voidmain()
{
intx,sign;
scanf(“%d”,&
x);
if(x>
0)
sign=1;
elseif(x==0)
sign=0;
sign=-1;
printf(“sign=%d\n”,sign);
}
3、输入任意三个数num1、num2、num3,按从小到大的顺序排序输出。
intnum1,num2,num3;
scanf(“%d%d%d”,&
num1,&
num2,&
num3);
if(num1<
=num2)
if(num2<
=num3)
printf(“%d%d%d\n”,num1,num2,num3);
if(num1>
printf(“%d%d%d\n”,num3,num1,num2);
printf(“%d%d%d\n”,num1,num3,num2);
else
if(num2>
printf(“%d%d%d\n”,num3,num2,num1);
printf(“%d%d%d\n”,num2,num3,num1);
printf(“%d%d%d\n”,num2,num1,num3);
4、在屏幕上显示一张如下所示的时间表。
charc;
printf(“*****Time*****\n”);
printf(“1morning\n”);
printf(“2afternoon\n”);
printf(“3night\n”);
printf(“Pleaseenteryourchoice:
”);
c=getcahr();
switch(c)
case‘1’:
printf(“Goodmorning\n”);
brenk;
case‘2’:
printf(“Goodafternoon\n”);
break;
case‘3’:
printf(“Goodnight\n”);
default:
printf(“Selectionerror!
\n”);
5、输入一个年份和月份,打印出该月份有多少天(考虑闰年),用switch语句编程。
intyear,month;
printf(“Inputyear,month:
scanf(“%d%d”,&
year,&
month);
switch(month)
case1:
case3:
case5:
case7:
case8:
case10:
case12:
printf(“31days\n”);
case4:
case6:
case9:
case11:
printf(“30days\n”);
case2:
if((year%4==0&
&
year%100!
=0)||(year%400==0))
printf(“29days\n”);
printf(“28days\n”);
default:
printf(“Inputerror!
习题6参考答案
1、编程计算2+4+6+…+98+100的值。
(1)利用for循环语句实现,在循环体外为sum赋初值0。
inti,sum=0;
for(i=2;
i<
=100;
i+=2)
sum+=i;
printf(“sum=%d\n”,sum);
(2)利用while循环语句实现,在循环体外为i和sum赋初值。
inti=2,sum=0;
while(i<
=100)
i+=2;
2、编程计算1*2*3+4*5*6+…+99*100*101的值。
inti;
longterm,sum=0;
for(i=1;
=99;
term=i*(i+1)*(i+2);
sum+=term;
3、编程计算1!
+2!
+3!
+…+10!
的值。
(1)用累加和算法,累加项为term=term*i;
i=1,2,…,10。
Term的初始值为1,使用单重循环完成。
longterm=1,sum=0;
=10;
i++)
term*=i;
printf(“1!
=%ld\n”,sum);
(2)用内层循环求阶乘,外层循环控制累加的项数。
inti,j;
term=1;
for(j=1;
j<
=i;
j++)
term*=j;
4、编程计算a+aa+aaa+…+aa..a(n个a)的值,n和a的值由键盘输入。
longterm=0,sum=0;
inta,i,n;
printf(“Inputa,n:
scanf(“%d,%d”,&
a,&
n);
=n;
term=term*10+a;
printf(“sum=%ld\n”,sum);
5、参考答案:
floatterm,result=1;
intn;
for(n=2;
n<
n+=2)
term=(float)(n*n)/((n-1)*(n+1));
result*=term;
printf(“result=%f\n”,2*result);
6、参考答案:
intn=1,count=0;
floatx;
doublesum,term;
printf(“Inputx:
”)
scanf(“%f”,&
sum=x;
term=x;
do
term=-term*x*x/((n+1)(n+2));
n”,a);
printf(“%disn’tprimenumber.\n”,a);
intIsPrimeNumber(intnumber)
intI;
if(number<
=-1)
return(0);
sqrt(number);
if(number%i==0)
return(i);
2、设计函数MaxCommonFactor(),计算两个正整数的最大公约数。
参考答案:
intMaxCommonFactor(inta,intb);
inta,b,c;
printf(“Inputtwointegernumber:
scanf(“%d%d”,&
a,&
b);
c=MaxCommonFactor(a,b);
if(c!
printf(“Thebiggestcommonfactorof%dand%dis%d\n”,a,b,c);
printf(“Thebiggestcommonfactorof%dand%disn’texist\n”,a,b);
intMaxCommonFactor(inta,intb)
if(a<
=0||b<
return(-1);
while(a!
=b)
if(a>
b)
a=a-b;
if(b>
a)
b=b-a;
ruturn(a);
3、定义函数GetData()用于接收键盘输入的一组整型数据,并放入一数组中;
另外再定义一个函数Sort()用于对输入的这一组数据按照降序排列。
主函数向后调用GetData和Sort函数,输出最后的排序结果。
#defineN10
voidGetData(inta[],intn);
voidSort(inta[],intn);
inti,a[N];
GetData(a,N);
Sort(a,N);
printf(“Aftersort:
for(i=0;
i<
n;
i++)
printf(“%d”,a[i]);
printf(“\n”);
voidGetData(inta[],intn)
printf(“Inputnumber:
scanf(“%d”,&
a[i]);
voidSort(inta[],intn)
inti,j,k,t;
n-1;
k=i;
for(j=i+1;
j<
j++)
if(a[j]>
a[k])
k=j;
if(k!
=i)
t=a[i];
a[i]=a[k];
a[k]=t;
4、参考答案:
voidJsSort(charstr[]);
charstr[80];
printf(“Inputastring:
gets(str);
JsSort(str);
%s\n”,str);
voidJsSort(charstr[])
inti,j,k,len;
charch;
len=strlen(str);
len-1;
i+=2)
for(j=i+2;
len;
j+=2)
if(str[j]>
str[k])
=j)
ch=str[i];
str[i]=str[k];
str[k]=ch;
5.参考答案:
#defineN30
voidJosegh(intp[],intn,ints,intm);
inti,p[N];
Josegh(p,N,1,10);
for(i=N-1;
i>
=0;
i--)
printf(“%4d”,p[i]);
if(i%10==0)
printf(“\n”);
voidJosegh(intp[],intn,ints,intm)
inti,j,s1,w;
s1=s;
p[i-1]=i;
for(i=n;
=2;
s1=(s1+m-1)%i;
if(s1==0)
s1=i;
w=p[s1-1];
for(j=s1;
i;
p[j-1]=p[j];
p[i-1]=w;
intStrLoc(charstr1[],charstr2[]);
intloc;
charstr1[]={“do”};
charstr2[]={“howdoyoudo?
”};
loc=StrLoc(str1,str2);
if(loc==-1)
printf(“Thestring\”%s\”notinthestring\”%s\”.\n”,str1,str2);
printf(“Locationofthestring\”%s\”inthestring\”%s\”is%d.\n”,str1,str2,loc);
intStrLoc(charstr1[],charstr2[])
unsignedinti,len1,len2;
len1=strlen(str1);
len2=strlen(str2);
if(len1>
len2)
=strlen(str2)-strlen(str1);
if(strncmp(str1,str2+i,len1)==0)
return(i);
return(-1)
7、参考答案:
longcount(intn,intk);
intn,k;
n=10;
k=2;
printf(“Result=%ld\n”,count(n,k));
longcount(intn,intk)
item=1;
=k;
item*=i;
sum+=item;
return(sum);
8、参考答案:
longF(intn);
=40;
printf(“F(%2d)=%-9ld”,i,F(i));
if(i%4==0)
longF(intn)
if(n<
=2)
return
(1);
return(F(n-1)+F(n-2));
9、参考答案:
longfun(intm,intn);
intm,n;
longc;
printf(“Inputmandn(m>
=n):
scanf(“%d%d”,&
m,&
c=fun(m,n);
printf(“c=%ld\n”,c);
longfun(intm,intn)
if(m==n||n==0)
return(1L);
return(m*f
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 课后 习题 18 参考答案 参考