版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言程序设计呼克佑课后习题答案
C语言程序设计习题解答(参考)
习题一
一、单项选择题
1.D
2.A
3.D
二、填空题
1.顺序结构选择结构循环结构
2算法
3.语言简洁、运算符丰富、结构化语言
4.可移植性强、代码效率高、书写格式自由
5.错误隐蔽、有时会难以理解、有时会难以修改
6.群举法(枚举法)、递推法(迭代法)、递归法
7.做什么怎么做
三、应用题
1.
include
voidmain()
printf(〃*************************\nn)•
printf("Clanguageprogram\nH);
printf(〃*************************\n〃)*
)
2.
include
voidmain()
inta,b,c,max;
scanf("%d%d%d",&a,&b,&c);
if(a>b)max=a;
elsemax=b;
if(max
printf(wMax=%d\nM,max);
)
一、单项选择题
l.A,D,E
2.B,E
3.B,D,E,F,H
4.B,F
5.A,B,E
二、填空题
l.(i)int(2)char(3)double(4)long(5)char⑹char⑺int(8)long
2.(i)0(2)0(3)2(4)4(5)4(6)8(7)0(8)2
3.2111
4.不做
5.sin(25*3.14159/180)+cos(30*3.14159/180)
6.2
8.5
三、给出各个程序的运行b结果
1.运行结果如下:
3
21
5
5
2.运行结果如下:
6,9
9,27
一、单项选择题
l.D
2.B
3.D
4.C
5.B
6.C
7.B
8.A
9.C10.D
ll.D12.D13.B14.A15.A16.B17.C18.C19.B20.B
21.D22.C23.C24.D25.C26.C27.D28.D29.B3O.A
二、填空题
1.从标准设备(键盘)上读入一个字符向标准设备(键盘)上输
出一个字符
#include
2.以十进制形式输入一个整数表示从标准输入设备(键盘)读取
输入的3个整型数
表示掉过3个整数不读取用来输入一个字符
3.以十进制形式输出一个整数以十六进制形式输出一个整数
以十进制小数形式输出,输出的数据长度为7位,其中有两位为
小数
以字符形式输出一个字符
4.分程序;;
5.-1
6.非00
7.a%7==0else8.39.2
lO.forwhiledo-while11.Continue12.a=16,y=42
13.1014.y=1915.22222
16.3917.718.5,5
19.n=420.-321.8
三、程序阅读分析题
1.2.
3.0
4.567
5.thisnumberisahuiwen
四、编程题
1.编写一个程序,要求用户输入两个整数,判定其中一个是否能
整除另一个。
#include
intmain()
(
inta,b;
while(scanf("%d%d",&a,&b)==2)
{
if(a%b)printf("不能整除\n");
elseprintf("能整除\n");
)
return0;
)
2.编程实现:输入一个整数,判断它能否被3,5,7整除,并输
出以下信息之一:
①能同时被3,5,7整除;
②能被其中两数(要指出哪两个)整除;
③能被其中一个数(要指出哪一个)整除;
④不能被3,5,7任一个整除。
#include
voidmain()
(
inta;
printf("请输入一个整数\n");
scanf("%d",&a);
if(a%3==0&&a%5==0&&a%7==0)
printf("%d能同时被3,5,7整除\n",a);
eIseif(a%3!=0&&a%5==0&&a%7==0)
printf("%d能同时被5,7整除\n",a);
eIseif(a%3==0&&a%5!=0&&a%7==0)
printf("%d能同时被3,7整除\n",a);
eIseif(a%3==0&&a%5==0&&a%7!=0)
printf("%d能同时被3,5整除\n",a);
eIseif(a%3==0&&a%5!=0&&a%7!=0)
printf("%d能被3整除\n",a);
eIseif(a%3!=0&&a%5==0&&a%7!=0)
printf("%d能被5整除\n",a);
elseif(a%3!=0&&a%5!=0&&a%7==0)
printf("%d能被7整除\n",a);
eIseprintf("%d不能被3,5,7整除\n",a);
)
3.市郊长途电话收费标准如下:通话时间在三分钟以下收费一角,
三分钟以上则每超过一分钟加一角。在7:00—21:00之间通话者,
按收费标准全价收费;在其它时间通话者,按收费标准的一半收费。
请计算某人在x时间通话y分钟,应缴多少电话费。(通话时间利用
整数输入实现)include
main()
(
floatx,y=O;
intt;
scanf("%f%d",&x,&t);
if(t>7&8it<21)
if(x<3)
y=o.i;
else
do
(
y=0.2+y;
x=x-l;
}while(x-3>0);
)
eIse
(
if(x<3)
y=0.1/2;
else
do
(
y=(0.2+y)/2;
x=x-l;
}while(x-3>0);
}
printf("%f",y);
)
4.输入a、b、c三条边,判断它是否构成三角形。若能构成三角
形,则计算三角形面积。
#include
#include
main()
fIoata,b,c,S=0,x=0;
printf("输入三角形三条边的边长:");
scanf("%f%f%f",&a,&b,&c);
if(a+b>c&&b+c>a&&a+c>b)
(
x=(a+b+c)/2.0;
S=sqrt(x*(x-a)*(x-b)*(x-c));
printf("area=%.3f\n",S);
)
EIse
printf("不能构成三角形\n");
)
5.打印出所有"水仙花数"。所谓"水仙花数”是指一个三位数,
其各位数字的立方和等于该数本身。例如,153是一个"水仙花数",
因为153=13+53+33。
#include"stdio.h"
#include"math.h"
main()
(
inti;
inta,b,c;
for(i=100;i<=999;i++)
(
a=i%10;/*取个位数*/
b=i/10%10;/*取十位数*/
c=i/100;/*取百位数*/
if(i==a*a*a+b*b*b+c*c*c)
printf("%d",i);
)
)
6.编写一个程序,在屏幕上显示如下图形(图形的层数读者自行
设定):
*
***
*****
*******
*****
***
*
#include
#include
main()
(
inti,j,k;
for(i=-3;i<=3;i++)
{
for(j=l;j<=abs(i);j++)
printf("%c",32);
for(j=l;j<=7-2*abs(i);j++)
printf("*");
printf("\n");
)
)
7.求斐波那契(Fibonacci)数歹ij:1,1,2,3,5,8,……的前
40个数。斐波那契数列的定义:
Fl=l(n=l)
F2=l(n=2)
Fn=Fn-l+Fn-2(n>3)
#include
main()
(
intfl,f2,f;
inti;
fl=f2=l;
printf("%d\n%d\n",fl,f2);
for(i=l;i<=38;i++)/*已经有两个数,只要再产生38个数即可*/
(
f=fl+f2;
fl=f2;
f2=f;
printf("%d\n",f);
)
)
8.编程实现求1+2+3+…+n之和,并输出当其和第一次大于或等
于100时的值及n值。
#include
main()
(
inti,s,t=0;
i=l;s=0;
while(i<=100)
(
s=s+i;
if(s>=100&&t<l)/*设定t只求第一次和大于100的内容*/
(
printf("第一次和大于或等于100时和为%d\n",s);
printf("第一次和大于或等于100时n^]%d\n",i);
t+=l;
}
i=i+l;
)
printf("s=%d\n",s);
)
9.整元换零钱问题。把1元兑换成1分、2分、5分的硬币,共有
多少种不同的换法?
#include
main()
(
inti,j,k,n;
n=100,k=0;
for(i=0;i<=n/5;i++)
for(j=0;j<=(n-i*5)/2;j++)
(
printf("5cent=%d\t2cent=%d\t1cent=%d\n",i/j,n-i*5-j*2);
k++;
)
printf("totaltimes=%d\n",k);
)
10.编写解鸡兔同笼问题的程序。用户输入头的数目和脚的数目,
输出鸡、兔各有多少只。^include
main()
{intx,y,a,b;
printf("输入鸡兔头的数目:)
scanf("%d",&x);
printf("输入鸡兔脚的数目:");
scanf("%d",&y);
a=x-(y-2*x)/2;
b=(y-2*x)/2;
printfC1鸡有%d只,兔有%dR",a,b);
)
11.打印杨辉三角形,即(x+y)n展开式的各项系数。并且在程序
运行开始时,问用户n的值为多少,接着打印如下形式至指定行数。
1
11
121
1331
14641
#include
intmain()
{intn,k,j,c;
printf("Input=");
scanf("%d",&n);
for(k=l;k<=n;k++)
(
〃printf("%*s",4*(n-k));/*格式控制语句,有和没有是两种显示方
式*/
c=l;
printf("%4d",c);
for(j=l;j<=k-l;j++)
(
c=c*(k-j)/j;
printf("%8d",c);
)
printf("\n");
)
return0;
)
12.个位数是6,且能被3整除的五位数共有多少个?
#include
main()
{inta,count=0;
longi;
for(i=10000;i<100000;i++)
(
a=i%10;
if(a==6&&i%3==0)
count++;
)
printf("这样的数共计:%d",count);
)
习题四
一、单项选择题
1.C
2.D
3.D
4.D
5.C
6.D
7.B
8.A
9.B10.B
二、填空题
1.—15014float
2.8
3.连续数组名
4.按行存储
5.04
6.350
7.368.9
9.710.#include#include
三、程序阅读分析题
1.i==ja[i][j]a[i][j]printf("\n")
2.k=32
3.gbcdefa
4.012345
123456
234567
345678
456789
5678910
5.you&me
四、编程题
1.设数组V中的数据元素递增有序,现将x插入到数组V的适当
位置,使数组元素的值仍保持有序。
#include
voidmain()
(
intV[15]={65,70,73,75,79,81,85,88,90};/*有9个初值,有序*/
intn=9,x=77;/*数组中当前有n个数据,将x插入数组V中,仍
保持有序*/
inti;
for(i=n-l;i>=0&&V[i]/*将V数组中的数据从后往前比较
*/
V[i+l]=V[i];/*若大于x,后移一个位置*/
V[i+l]=x;/*将x插入数组V中*/
n++;/*数组中数据个数增1*/
for(i=0;i<=""bdsfid="475"p="">
printf("%d",V[i]);
printf("\n");
)
2.定义一个含有30个整型元素的数组,按顺序分别赋予从2开始
的偶数,然后按顺序每五个数求出一个平均值,放在另一个数组中并
输出。
#include
voidmain()
(
intarray[30],average[6]={0};
inti,j;
for(i=0;i<30;i++)
array[i]=2*(i+l);
for(j=0;j<6;j++)
(
for(i=5*j;i<5*(j+l);i++)
average[j]+=array[i];
average[j]/=5;
printf("%d",average[j]);
)
printf("\n");
)
3.输入一个字符串,在指定位置插入一个字符。
#include
voidmain()
(
charstr[81],ch;
inti,position;
printf("输入一个字符串:");
gets(str);
printf("输入要插入字符的位置:");
scanf("%d",&position);
printf("输入要插入的字符:");
scanf("%*c%c",&ch);
for(i=0;str[i]!='\0';i++);
while(i>=position-l)
(
str[i+l]=str[i];
i--;
)
str[position-l]=ch;
printf("在指定位置插入字符后的字符串:%s\n",str);
)
4.输入一行字符,分别统计其中十个数字字符'O',T,…,9出
现的次数。
#include
voidmain()
{
charstr[81];
intcount[10]={0},i;
printf("输入一行字符:\n");
gets(str);
for(i=0;str[i]!='\0';i++)
if(str[i]>='0'&&str[i]<=,9,)
count[str[i]-'Ol]++;
for(i=0;i<10;i++)
primf('%c\,:%d\rr,,0,+i,count[i]);
)
5.输入矩阵A(2行3列)和矩阵B(3行4列),计算它们的乘
积C=A-B。
(矩阵乘积计算公式:Cij=IAikBkj)
#include
voidmain()
inta[2][3],b[3][4],c[2][4];
inti,jzk;
printf("输入2行3列矩阵数据:\n");
for(i=0;i<2;i++)
for(j=0;j<3;j++)
scanf("%d",&a[i][j]);
printf("输入3行4列矩阵数据:\n");
for(i=0;i<3;i++)
for(j=0;j<4;j++)
scanf("%d",&b[i][j]);
for(i=0;i<2;i++)
for(j=0;j<4;j++)
(
c[i][j]=O;
for(k=0;k<3;k++)
c[i][j]+=a[i][k]*b[k][j];
)
printf("两矩阵的乘积矩阵是:\n");
for(i=0;i<2;i++)
(
for(j=0;j<4;j++)
printf("%5d",c[i][j]);
printf("\n");
)
)
6.下面是一个5x5阶的螺旋方阵。试编程打印出此形式的nxn(n
<10,顺时针方向旋进)。
12345
161718196
152425207
142322218
131211109
#include
#defineN5
voidmain()
(
inta[N][N],i,j,k,n;
i=0;
j=0;
n=l;
for(k=l;k<=N*N;k++)
(
if(i==n-l&8ij<n-n)<bdsfid="583"p=""></n-n)<>
疝[j++]=k;
elseif(j==N-n&&i<n-n)<bdsfid="586"p=""></n-n)<>
a[i++][j]=k;
elseif(i==N-n&&j>n-l)
a[i][j-]=k;
else
a[i-][j]=k;
if(i==n&&j==n-l)
n++;
)
for(i=0;i<n;i++)<bdsfid="596"p=""></n;i++)<>
(
for(j=0;j<n;j++)<bdsfid="599"p=""></n;j++)<>
printf("%5d",a[i][j]);
printf("\n");
)
)
7.编一程序,实现字符串复制,不使用strcpy()函数。
#include
voidmain()
charstrl[81],str2[]="Iamastudent.";
inti;
for(i=0;(strl[i]=str2[i])!='\0';i++);
printf("%s\n%s\n",strl,str2);
)
8.编一程序,求字符串的长度,不使用strlen()函数。
#include
voidmain()
(
charstr[81];
intn;
printf("输入一个字符串:");
gets(str);
n=0;
while(str[n]!='\O')
n++;
printf("字符串的长度是:%d\n",n);
)
9.有一篇文章,共有3行文字,每行有80个字符。要求分别统计
出其中英文大写字母、/」写字母、数字、空格以及其他字符的个数。
#include
voidmain()
(
charstr[3][81];
char
category[5][10]={"UPPER","LOWER","DIGIT","SPACE","OTHER"};
inti,j,count[5]={0};
printf("输入3行文字:\n");
for(i=0;i<3;i++)
gets(str[i]);
for(i=0;i<3;i++)
for(j=0;str[i][j]!='\0';j++)
if(str[i][j]>='A'&&str[i][j]<='Z')
count[0]++;
elseif(str[i][j]>='a'&&str[i][j]<=,z')
count[l]++;
elseif(str[i][j]>='0'&&str[i][j]<='9')
count[2]++;
elseif(str[i][j]=='')
count[3]++;
else
count[4]++;
for(i=0;i<5;i++)
printf("%s:%d\n",category[i],count[i]);
)
10.某班期终考试科目为高等数学(MT)、英语(EN)和物理(PH)。有
30人参加考试。为评定奖学金,要求统计并输出一个表格,表格内容
包括学号、各科分数、总分和平均分,并标出三门课均在90分以上者
(该栏标志输出为"Y",否则为"N"),表格形式如下:
NOMTENPHSUMV>90
197879
227692Y
292919027
391Y
39081822538
4N
可以将学生的学号和各科成绩放在数组a[30][4]中,然后进行统
计处理。
#include
#defineN30
voidmain()
(
intstu[N][4],sum;
inti,j;
chargreat90;
for(i=0;i<n;i++)<bdsfid="673"p=""></n;i++)<>
(
printf("输入第%d个学生的数学、英语和物理成绩(空格分
隔):",i+1);
stu[i][0]=i+l;
for(j=l;j<4;j++)
scanf("%d",&stu[i][j]);
)
printf("NOMTENPHSUMV>90\n");
printf("------------------------------------\n");
for(i=0;i<n;i++)<bdsfid="683"p=""x/n;i++)<>
(
sum=0;
great90='Y';
printf(n%5d",stu[i][0]);
for(j=l;j<4;j++)
(
printf(n%5d",stu[i][j]);
sum+=stu[i][j];
if(stu[i][j]<90)
great90='N';
)
printf("%5d",sum);
printf("%5d",sum/3);
printf("%5c\n",great90);
)
)
习题五
一、单项选择题
1.B)2.D)3.A)4.D)5.A)6.C)
二、填空题
1.52.883.2
4.12125.4126.1行的行地址
三、程序分析题
1.24
2.ENGLISH
MATH
MUSIC
PHYSICS
CHEMISTRY
四、编程题(以下题目均要求用指针方法实现)
1.#include
#include
voidmain()
(
char
n[]={"china","japan","korea","american"/"england"},*temp;
inti,j,k;
for(i=0;i<5;i++)
(
k=i;
for(j=i+l;j<5;j++)
if(strcmp(n[k],n[j])>0)k=j;
if(k!=i)
(
temp=n[k];n[k]=n[i];n[i]=temp;
)
)
for(i=0;i<5;i++)
printf("%s\n",n[i]);
)
2.#include
voidmain()
{
inta[10]={87,78,69,79,98,86,91,75,71,95},*p,temp;
inti,min_order;
p=a;
for(i=l;i<10;i++)
if(*p>a[i])p=a+i;
min_order=p-a;
printf("Min=a[%d]=%d\n",min_order,a[min_order]);
temp=*p;*p=a[O];a[O]=temp;
for(i=0;i<10;i++)
printf("%4d",a[i]);
printf("\n");
)
3.略
4.#include
voidmain()
inta[10]={10,20,30,40,50,60,70,80,90};/*数组中9个数有序*/
int*p,x=35;/*x为待插入的数据7
for(p=&a[8];(p>=a)8i&(*p>x);p—)
*(p+l)=*p;/*从后向前将比x大的数据后移一个位置*/
*(p+l)=x;/*将X插入到数组中*/
for(p=a;p<=""bdsfid="761"p="">
printf("%4d",*p);
printf("\n");
)
5.#include
voidmain()
(
chars[255],prrior='',*p;
printf("输入一行英文:\n");
gets(s);
for(p=s;*p!='\0';p++)/*扫描字符串*/
(
if(prrior==''&&*p>='a'&&*p<='z')/*单词开始且是小写字母
*/*p-=32;/*将单词的第一个字母改为大写*/
prrior=*p;
)
puts(s);
)
6.#include
voidmain()
(
charstrl[81],str2[]="Iamaboy.";
char*s,*t;
s=str2;
t=strl;
while((*t=*s)!='\0')
S++;
t++;
)
puts(strl);
)
7.略
8.略
9.编写程序,实现输入月份号,输出相应的英文月份名。10.略
11.略
12.#include
voidmain()
{
charstr[81],*p,*q;
printf("输入一个字符串:\n)
gets(str);
for(q=str;*q!='\0';q++);
for(p=str,q—;(p<q)&&(*p==*q);p++,q--);<bdsfid="807"
n)();;
p="></q&&*p==*qp4-+fq-)<>
if(p<="">
elseprintf("字符串:%s是回文串!\n",str);
)
13.#include
voidmain()
(
charstr[81],
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度豪华私家车租赁服务协议合同
- 二零二五版农机融资租赁合同范本汇编
- 二零二五年度电子商务平台中介担保合同
- 二零二五年度票据代理业务反洗钱合规合同模板
- 二零二五版别墅租赁合同交接清单与租客入住培训协议3篇
- 2025年全球及中国甲氧氯普胺片行业头部企业市场占有率及排名调研报告
- 2025-2030全球电极卷绕机行业调研及趋势分析报告
- 2025-2030全球激光雷达用光芯片行业调研及趋势分析报告
- 二零二五年度苹果树苗木种植与乡村振兴战略合同3篇
- 住宅大厦装修合同样本
- Unit 7 第3课时 Section A (Grammar Focus -4c)(导学案)-【上好课】2022-2023学年八年级英语下册同步备课系列(人教新目标Go For It!)
- 2025年上半年长沙市公安局招考警务辅助人员(500名)易考易错模拟试题(共500题)试卷后附参考答案
- 2025河北邯郸世纪建设投资集团招聘专业技术人才30人高频重点提升(共500题)附带答案详解
- 慈溪高一期末数学试卷
- 《基于新课程标准的初中数学课堂教学评价研究》
- 贵州省黔东南州2024年七年级上学期数学期末考试试卷【附答案】
- 医院廉洁自律承诺书
- 胚胎移植术前术后护理
- 企业招聘技巧培训
- 学校校本课程《英文电影鉴赏》文本
- 华为HCSA-Presales-IT售前认证备考试题及答案
评论
0/150
提交评论