C语言作业答疑.docx
- 文档编号:10816167
- 上传时间:2023-05-27
- 格式:DOCX
- 页数:16
- 大小:18.89KB
C语言作业答疑.docx
《C语言作业答疑.docx》由会员分享,可在线阅读,更多相关《C语言作业答疑.docx(16页珍藏版)》请在冰点文库上搜索。
C语言作业答疑
作业要求:
1、一定要按照老师布置的顺序来做。
2、每章的作业之前标明第几章,题与题之间至少要空一行,章与章之间至少要空两行,最好是换页。
3、作业一定要字迹工整、美观整洁。
请大家认真完成相关作业。
C语言作业
第1章
一、选择题(p24)
1.B2.B3.C4.C5.C6.B7.A8.B
二、填空题(p25)
1.采用结构化程序设计方法进行程序设计时,(算法)是程序的灵魂。
算法的效率通过(时间)和(空间)来度量。
2.应用程序jisuan.c中只有一个函数,这个函数的名称是(main)。
3.一个函数由(函数首部)和(函数体)两部分组成。
4.一个函数的执行时从(main)函数开始,到(main)函数结束。
5.C语言的语句结束符是(;)。
6.通过文字编辑建立的源程序文件的扩展名是(C);编译后生成目标程序文件,扩展名是(obj);连接生成可执行程序文件,扩展名是(exe)。
三、问答题(p25)
1、什么是算法?
它有何特征?
答:
解决问题的方法和步骤,就是算法。
算法具有5个特征:
有穷性,确定性,有效性,有0个或者多个输入,要有结果输出。
2、结构化程序设计有哪三种基本结构?
用三种基本结构进行程序设计有何好处?
答:
结构化程序设计的三种基本结构是顺序结构、选择结构与循环结构。
采用这三种结构,就可以构成任意复杂的程序,这样可以使程序设计规范化,便于用工程的方法来进行软件生产。
6、编写一个简单的C语言程序,使其输出以下信息:
************************
*hellow,Cprogram*
************************
#include"stdio.h"
voidmain()
{
printf("************************\n");
printf("*hellow,Cprogram*\n");
printf("************************\n");
}
第2章
三、问答题(P45)
1.C语言中设置符号常量有何意义?
符号常量和变量有何区别?
答:
在C语言中,可以用标示符表示一个常量,称为符号常量。
例如:
#definePI3.14159
定义了符号常量之后,在宏定义中如果修改了符号常量的值,那么程序中其他地方就不用一一修改,给程序编写带来便利。
符号常量在程序运行过程中不允许修改,变量的值则是允许在运行过程中改变的。
2.字符常量和字符串常量有何区别?
答:
字符常量是在两个单引号下的一个字符,如’a’;而字符串常量则是在双引号中的一个或者多个字符构成的序列,如”China”。
5.按要求写出C语言表达式。
(1)将整数k转换成实数。
(2)求实数x的小数部分。
(3)求自然数m的十位数字。
(4)将ch中的大写字母转换成相应的小写字母。
(5)将d中的一位十进制数字转换成对应的数字字符。
答:
(1)(double)k;
(2)x-(int)x;
(3)m/10%10;
(4)ch+32;
(5)(char)(d+48)。
第三章
四、编写程序题(P67)
1、输入两个整数1500和350,求出它们的商和余数并进行输出。
#include
#include
voidmain()
{intx,y,shang,yushu;
x=1500;
y=350;
shang=x/y;
yushu=x%y;
printf("shang=%d,yushu=%d\n",shang,yushu);
}
2、读入3个双精度型浮点数,求它们的平均值并保留1位小数,对小数点后第2位数进行四舍五入,最后输出结果。
#include
#include
voidmain()
{doublex,y,z,average;
printf("\n请输入三个实数x,y,z:
");
scanf("%lf,%lf,%lf",&x,&y,&z);
average=(x+y+z)/3;
printf("\naverage=%.1lf\n",average);
}
3、读入三个整数给a、b、c,然后交换它们的值:
把a原来的值给b,把b原来的值给c,把c原来的值给a。
#include
voidmain()
{
inta,b,c,mid;
printf("pleaseinputthreedatas\n");
scanf("%d,%d,%d",&a,&b,&c);
mid=a;
a=c;
c=b;
b=mid;
printf("a=%d\nb=%d\nc=%d",a,b,c);
}
4.将3位整数的十位数的数字变成0.例如,输入3位整数为738,输出为708.
#include
voidmain()
{
intx,y;
printf("\n请输入一个三位整数x=");
scanf("%d",&x);
y=x-(x/10%10)*10;
printf("\n%d\n",y);
}
第4章
四、编写程序题(P91)
1、输入一个字符,若为数字字符,则输出对应的数值,否则原样输出。
#include
voidmain()
{
chara;
printf("\n请输入字符a=");
scanf("%c",&a);
if(a>='0'&&a<='9')
printf("\n%d\n",a);
elseprintf("\n%c\n",a);
}
2、输入一个整数,若为奇数则输出其平方根,否则输出其立方根。
#include"stdio.h"
#include"math.h"
voidmain()
{
intx;
printf("\n请输入一个整数x=");
scanf("%d",&x);
if(x%2==1)
printf("\n%f\n",sqrt(x));
elseprintf("\n%f\n",pow(x,1.0/3));
}
3、输入整数x、y、z,若x^2+y^2+z^2大于1000,则输出x^2+y^2+z^2千位以上的数字,否则输出3数之和。
#include"stdio.h"
#include"math.h"
voidmain()
{
intx,y,z;
printf("\n请输入三个整数x,y,z:
");
scanf("%d,%d,%d",&x,&y,&z);
if(x*x+y*y+z*z>1000)
printf("\n%d\n",(x*x+y*y+z*z)/1000);
elseprintf("\n%d\n",x+y+z);
}
5、对n(n>0)个学生进行分班,每班k(k>0)个人,最后不足k人也编一个班,问要编几个班?
用条件表达式实现,若n%k为0,则班数为n/k,否则班数为n/k+1。
#include"stdio.h"
#include"math.h"
voidmain()
{
intn,k;
printf("\n请输入学生总数n和每班人数k:
");
scanf("%d,%d",&n,&k);
if(n%k==0)
printf("\n班数为%d\n",n/k);
elseprintf("\n班数为%d\n",n/k+1);
}
第5章
四、编写程序题(p120)
1、利用下列公式计算π的近似值(n取1000)。
π/4=1-1/3+1/5-1/7+…+1/(4n-3)-1/(4n-1)
#include"stdio.h"
voidmain()
{
intn;
doublepi1,pi;
pi1=0;
for(n=1;n<=1000;n++)
pi1=pi1+(1.0/(4*n-3)-1.0/(4*n-1));
pi=pi1*4;
printf("\npi=%lf\n",pi);
}
3、设s=1+1/2+1/3+…+1/n,求与8最接近的s的值及与之对应的n值。
#include"stdio.h"
voidmain()
{
intn;
doublesum=0,dc,xc;
for(n=1;sum<=8;n++)
sum=sum+1.0/n;
dc=sum-8;
xc=8-(sum-1.0/(n-1));
if(dc>xc)
{
sum=sum-1.0/(n-1);n=n-2;
}
elsen=n-1;
printf("\nsum=%lf,n=%d\n",sum,n);
}
5.由键盘输入一个正整数,找出大于或等于该数的第一个素数。
#include"stdio.h"
voidmain()
{
intx,i,flag;
printf("请输入一个正整数x=");
scanf("%d",&x);
do
{flag=1;
for(i=2;i<=x-1;i++)
if(x%i==0){flag=0;break;}
if(flag==0)x++;
}while(flag==0);
printf("\n所求的素数是%d\n",x);
}
6、求[2,999]中同时满足如下条件的数:
(1)该数各位数字之和为奇数。
(2)该数是素数。
#include"stdio.h"
voidmain()
{
intx,i,a,b,c,flag;
for(x=2;x<=999;x++)
{
a=x/100;
b=x/10%10;
c=x%10;
if((a+b+c)%2==1)
{
flag=1;
for(i=2;i<=x-1;i++)
if(x%i==0){flag=0;break;}
if(flag==1)printf("\n%d\n",x);
}
}
}
7、求满足如下条件的3位数:
它除以9的商等于它各位数字的平方和。
如224,它除以9的商为24,而22+22+42=24。
#include"stdio.h"
voidmain()
{
intx,a,b,c,shang,he;
for(x=100;x<=999;x++)
{
shang=x/9;
a=x/100;
b=x/10%10;
c=x%10;
he=a*a+b*b+c*c;
if(shang==he)
{
printf("\n%d是满足题中条件的三位数。
\n",x);
}
}
}
8、因子之和等于它本身的数为完数。
例如28的因子是1,2,4,7,14,且1+2+4+7+14=28,则28是完数。
求[2,1000]中所有完数。
#include"stdio.h"
voidmain()
{
intx,i,sum;
for(x=2;x<=1000;x++)
{
sum=0;
for(i=1;i<=x-1;i++)
if(x%i==0)sum=sum+i;
if(x==sum)
{
printf("\n%d是一个完数。
\n",x);
}
}
}
第7章
1、已知:
f(n)=f(n-1)+2*f(n-2)-5*f(n-3),f(0)=1,f
(1)=2,f
(2)=3,求f(0)+f
(1)+…f(30)。
#include"stdio.h"
voidmain()
{
intn;
doublef[31],sum;
f[0]=1;
f[1]=2;
f[2]=3;
sum=6;
for(n=3;n<=30;n++)
{
f[n]=f[n-1]+2*f[n-2]-5*f[n-3];
sum=sum+f[n];
}
printf("\n所求和值为%lf。
\n",sum);
}
2、已知:
f(0)=f
(1)=1,f
(2)=0,f(n)=f(n-1)-2f(n-2)+f(n-3)(n>2),求f(0)到f(50)的所有51个值中的最大值。
#include"stdio.h"
voidmain()
{
intn;
doublef[51],max;
f[0]=1;
f[1]=1;
f[2]=0;
max=1;
for(n=3;n<=50;n++)
{
f[n]=f[n-1]-2*f[n-2]+f[n-3];
if(f[n]>max)max=f[n];
}
printf("\n前51项中最大值为%lf。
\n",max);
}
3、将字符数组str1中下标为双号的元素赋给另外一个字符数组str2,并输出str1和str2的内容。
#include"stdio.h"
#include"string.h"
voidmain()
{
intn,i;
charstr1[10],str2[10]={'\0'};
printf("请输入一个字符串str1=");
scanf("%s",str1);
for(n=2,i=0;n<=(strlen(str1)-1);n=n+2,i++)
str2[i]=str1[n];
printf("\nstr1=%s。
\nstr2=%s\n",str1,str2);
}
第6章
四、编写程序题(P160)
1、定义一个函数,它返回整数n从右边开始数的第k个数字,并在主函数中调用,参数n、k要求在主函数中输入。
#include"stdio.h"
#include"math.h"
intfun(intn,intk)
{intm;
m=n/(int)pow(10,k-1)%10;
return(m);
}
voidmain()
{
intn,k,num;
printf("请输入整数n与要返回的数位k:
");
scanf("%d,%d",&n,&k);
num=fun(n,k);
printf("\n整数%d从右边开始数的第%d位数字是%d\n",n,k,num);
}
2、定义一个函数,如果数字d在整数n的某位中出现,则返回1,否则返回0,并在主函数中调用,参数n、d要求在主函数中输入。
#include"stdio.h"
#include"math.h"
intfun(intn,intd)
{intm;
do
{
m=n%10;
if(m==d)return1;
n=n/10;
}while(n>0);
return0;
}
voidmain()
{
intn,d,flag;
printf("请输入整数n与一位数字d:
");
scanf("%d,%1d",&n,&d);
flag=fun(n,d);
if(flag==0)
printf("\n数字%d没有在整数%d中出现。
\n",d,n);
else
printf("\n数字%d在整数%d中出现啦!
\n",d,n);
}
3、定义一个函数,当n是素数时,返回1,否则返回0,并在主函数中调用,参数n要求在主函数中输入。
#include"stdio.h"
#include"math.h"
intprime(intn)
{inti,flag=1;
for(i=2;i<=n-1;i++)
if(n%i==0){flag=0;break;}
returnflag;
}
voidmain()
{
intn,flag;
printf("请输入整数n");
scanf("%d",&n);
flag=prime(n);
if(flag==0)printf("\n整数%d不是素数。
\n",n);
elseprintf("\n整数%d是素数!
\n",n);
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 作业 答疑
![提示](https://static.bingdoc.com/images/bang_tan.gif)