C上机作业答案课案.docx

上传人:b****5 文档编号:6841651 上传时间:2023-01-11 格式:DOCX 页数:27 大小:21.42KB
下载 相关 举报
C上机作业答案课案.docx_第1页
第1页 / 共27页
C上机作业答案课案.docx_第2页
第2页 / 共27页
C上机作业答案课案.docx_第3页
第3页 / 共27页
C上机作业答案课案.docx_第4页
第4页 / 共27页
C上机作业答案课案.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

C上机作业答案课案.docx

《C上机作业答案课案.docx》由会员分享,可在线阅读,更多相关《C上机作业答案课案.docx(27页珍藏版)》请在冰豆网上搜索。

C上机作业答案课案.docx

C上机作业答案课案

第一章作业答案.

1.编写程序,将华氏温度转化为摄氏温度:

公式:

C=(5/9)*(F-32)

程序代码:

#include

usingnamespacestd;

voidmain()

{floatF,C;

cout<<"PleaseinputF:

";

cin>>F;

C=5*(F-32)/9.0;

cout<<"C="<

 

}

 

运行结果:

2.编写程序,输入圆柱体的半径r和高h,计算圆柱体的体积。

程序代码:

#include

usingnamespacestd;

#definePI3.14159

voidmain()

{floatr,h,v;

cout<<"Pleaseinputrh:

";

cin>>r>>h;

v=PI*r*r*h;

cout<<"v="<

}

运行结果:

3.输入三角形的三条边a,b,c,利用海伦公式计算三角形的面积area.

若则area=

程序代码:

#include

#include

usingnamespacestd;

voidmain()

{floata,b,c,p,area;

cout<<"Pleaseinputabc:

";

cin>>a>>b>>c;

if((a+b>c)&&(b+c>a)&&(a+c>b))

{p=(a+b+c)/2.0;

area=sqrt(p*(p-a)*(p-b)*(p-c));

cout<<"area="<

}

elsecout<<"inputerror!

"<

}

运行结果:

4.输入a,b,c的值,求一元二次方程:

的解。

程序代码:

#include

#include

usingnamespacestd;

voidmain()

{floata,b,c,p,x1,x2;

cout<<"Pleaseinputabc:

";

cin>>a>>b>>c;

p=b*b-4*a*c;

if(p>=0)

{x1=(-b+sqrt(p))/(2*a);

x2=(-b-sqrt(p))/(2*a);

cout<<"x1="<

cout<<"x2="<

}

elsecout<<"NOrealroot!

";

}

运行结果

 

第二章作业答案

1.输入一个整数,计算该数的阶乘。

程序代码:

#include

usingnamespacestd;

voidmain()

{inti,n,p=1;

cin>>n;

for(i=1;i<=n;i++)

p=p*i;

cout<

="<

}

运行结果:

2.连续输入若干个整数,输入0结束。

统计其正整数的个数,并计算其中正整数的总和、平均值并输出。

程序代码:

#include

usingnamespacestd;

voidmain()

{inta,n=0;

floatavg,sum=0;

do

{cin>>a;

if(a>0){n++;sum+=a;}

}while(a!

=0);

avg=sum/n;

cout<<"n="<

cout<<"avg="<

cout<<"sum="<

}

3.输出所有的水仙花数。

所谓“水仙花数”是一个三位数,其各位数字的立方和等于该数本身。

如153=13+53+33

 

程序代码:

#include

usingnamespacestd;

voidmain()

{inta,b,c,n;

for(n=100;n<1000;n++)

{a=n%10;

b=n%100/10;

c=n/100;

if(n==a*a*a+b*b*b+c*c*c)

cout<

}

}

运行结果:

第3章作业答案

1. 编写程序输出两个数的最大公约数和最小公倍数。

2. 计算100---300之内所有素数的和。

3. 计算s=1-1/3+1/5-1/7+…1/99

4.N是一个四位数,它的9倍恰好是其反序数(例如:

123的反序数是321),求N的值。

第一题:

程序代码:

//用辗转相除法求最大公约数;

#include

usingnamespacestd;

voidmain()

{intm,n,r,temp;

cin>>m>>n;

temp=m*n;

while(r=m%n)

{m=n;

n=r;

}

cout<<"最大公约数="<

cout<<"最小公倍数="<

}

运行结果:

第二题:

程序代码:

#include

usingnamespacestd;

voidmain()

{intn,i,s=0;

for(n=100;n<300;n++)

{for(i=2;i

if(n%i==0)break;

if(i==n)s+=n;

}

cout<<"s="<

}

运行结果:

第三题:

程序代码:

#include

usingnamespacestd;

voidmain()

{intn=1;

floats=0,f=1,p;

for(n=1;n<100;n+=2)

{p=f/n;

s=s+p;

f=-f;

}

cout<<"s="<

}

运行结果:

 

 

第四题:

程序代码:

#include

usingnamespacestd;

voidmain()

{intn,a,b,c,d;

for(n=1000;n<10000;n++)

{a=n/1000;//千位

b=n%1000/100;//百位

c=n%100/10;//十位

d=n%10;//个位

if(9*n==d*1000+c*100+b*10+a)

cout<

}

}

运行结果:

第四次作业答案

1.    编写两个函数,分别计算两个整数的最大公约数和最小公倍数,并在主函数中调用该函数,并输出结果。

2.    编写一个判断素数的函数,函数原型为:

intisprime(intn),在主函数中调用该函数,计算100—1000之间所有素数的和。

3.    编写一个函数,f(n)=,并在主函数中输出f(10)的值。

(说明自然对数ln的函数原型为doublelog(floatx).

4.    编写一个计算阶乘的函数,函数原型为intfac(intn),在主函数中调用该函数,计算:

S=M!

+N!

.

第一题:

程序代码:

#include

usingnamespacestd;

//求最大公约数

intgcd(intm,intn)

{intr;

while(r=m%n)

{

m=n;n=r;

}

returnn;

}

 

//求最小公倍数

intlcd(intm,intn)

{returnm*n/gcd(m,n);

}

voidmain()

{inta,b;

cin>>a>>b;

cout<<"最大公约数为:

"<

cout<<"最小公倍数为:

"<

}

运行结果:

第二题:

程序代码:

#include

usingnamespacestd;

//判断素数的函数,若n为素数,函数返回1,否则返回0;

intisprime(intn)

{inti;

for(i=2;i

if(n%i==0)return0;

return1;

}

voidmain()

{inti,s=0;

for(i=100;i<1000;i++)

if(isprime(i))s=s+i;

cout<<"s="<

}

运行结果:

第三题:

程序代码:

#include

#include

usingnamespacestd;

doublef(intn)

{inti;

doubles=0;

for(i=2;i<=n;i++)

s=s+log(i);

returnsqrt(s);

}

voidmain()

{

cout<

}

运行结果:

第四题:

程序代码:

#include

usingnamespacestd;

//用递归编写计算阶乘的函数

intfac(intn)

{if(n==0||n==1)return1;

elsereturnn*fac(n-1);

}

voidmain()

{intM,N,s;

cin>>M>>N;

s=fac(M)+fac(N);

cout<

+"<

="<

}

运行结果:

第五章

第六次上机内容

1、 定义一个3行4列的数组,计算所有数据的平均值,并输出最大值和最小值和它的行号和列号。

2、 编写程序,实现一个一维数组的反序存放。

3、 用选择排序法实现10整数由小到大排序。

4、 用冒泡法实现10整数由大到小排序。

 

第一题:

程序代码:

#include

voidmain()

{inta[3][4]={{12,6,25,10},{14,9,20,16},{30,22,5,21}};

inti,j,m,n,k,l,max,min;

max=min=a[0][0];

m=n=0;

for(i=0;i<3;i++)

for(j=0;j<4;j++)

if(a[i][j]>max){max=a[i][j];m=i;n=j;}

elseif(a[i][j]

cout<<"max="<

cout<<"行号:

"<

"<

cout<<"min="<

cout<<"行号:

"<

"<

}

运行结果:

 

第二题:

程序代码:

#include

#defineN6

voidmain()

{inta[N]={12,10,20,21,30,25};

inti,t;

for(i=0;i

{t=a[i];a[i]=a[N-i-1];a[N-i-1]=t;}

for(i=0;i

cout<

cout<

 

}

 

运行结果:

 

第三题:

程序代码:

#include

#defineN10

//选择排序

voidmain()

{inta[N]={30,21,15,38,25,35,18,28,45,20};

inti,j,t,k;

for(i=0;i

{k=i;

for(j=i+1;j

if(a[j]

if(k!

=i){t=a[i];a[i]=a[k];a[k]=t;}

}

for(i=0;i

cout<

cout<

}

运行结果:

第四题:

程序代码:

#include

#defineN10

//冒泡排序,由大到小排序

voidmain()

{inta[N]={30,21,15,38,25,35,18,28,45,20};

inti,j,t,k;

for(i=0;i

{k=0;

for(j=0;j

if(a[j]

{t=a[j];a[j]=a[j+1];a[j+1]=t;k=1;}

if(k==0)break;

}

for(i=0;i

cout<

cout<

}

运行结果:

第七次作业

1.定义一个二维数组inta[3][4],分别用指针法和下标法输出其内容。

2.用数组作为函数参数,并通过函数调用还回最大值,最小值和平均值。

函数原型维:

voidfun(inta[10],int*max,int*min,float*avg)

3.编写一个函数voidfun(inta[],intn),将a[]中的n个元素按反序存放,在main函数中调用该函数,分别用数组和指针作为实参。

4.用冒泡法或选择法编写一个排序的函数,然后在主程序中调用该函数实现10个整数的排序。

 

第一题

程序代码:

#include

voidmain()

{inta[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};

inti,j;

int*p;

int(*pp)[4];

//用下标法实现;

for(i=0;i<3;i++)

{for(j=0;j<4;j++)

printf("%3d",a[i][j]);

printf("\n");

}

 

//用列指针实现;

p=&a[0][0];

for(i=0;i<12;i++)

printf("%3d",*(p+i));

printf("\n");

 

//用行指针实现;

pp=a;

for(i=0;i<3;i++)

{for(j=0;j<4;j++)

printf("%3d",*(*(pp+i)+j));

printf("\n");

}

}

 

运行结果截图:

 

第二题:

程序代码:

#include

voidfun(inta[10],int*max,int*min,float*avg)

{inti,s=0;

*max=*min=a[0];

for(i=0;i<10;i++)

{if(*max

elseif(*min>a[i])*min=a[i];

s+=a[i];

}

*avg=s/10.0;

}

 

voidmain()

{inta[10]={10,21,8,22,40,23,32,26,30,12};

intmax,min;

floatavg;

fun(a,&max,&min,&avg);

printf("max=%d\n",max);

printf("min=%d\n",min);

printf("avg=%6.2f\n",avg);

}

 

运行结果截屏:

第三题:

程序代码:

#include

voidfun(inta[],intn)

{inti,t;

for(i=0;i

{t=a[i];a[i]=a[n-i-1];a[n-i-1]=t;}

}

 

voidmain()

{inta[6]={20,12,6,21,29,15};

int*p,i;

//用数组作为函数的实参;

printf("原先数组的序列:

\n");

for(i=0;i<6;i++)

printf("%4d",a[i]);

printf("\n");

printf("用数组作为实参,交换后的序列:

\n");

fun(a,6);

for(i=0;i<6;i++)

printf("%4d",a[i]);

printf("\n");

//用指针作为函数的实参

printf("用指向数组的指针作为实参,再次交换后的序列:

\n");

p=a;

fun(p,6);

for(i=0;i<6;i++)

printf("%4d",a[i]);

printf("\n");

}

 

运行结果截屏:

第四题:

程序代码:

#include

//用选择法编写数组排序函数,按从小到大顺序排序

voidsort1(inta[],intn)

{inti,j,k,t;

for(i=0;i

{k=i;

for(j=i+1;j

if(a[k]>a[j])k=j;

if(k!

=i){t=a[i];a[i]=a[k];a[k]=t;}

}

}

//用冒泡法排序,按从小到大顺序排序

 

voidsort2(inta[],intn)

{inti,j,t,f;

for(i=0;i

{f=1;

for(j=0;j

if(a[j]>a[j+1])

{t=a[j];a[j]=a[j+1];a[j+1]=t;f=0;}

if(f==1)break;

}

}

 

voidmain()

{inta[10]={40,23,26,20,35,55,12,43,37,45};

inti;

printf("排序前的序列:

\n");

for(i=0;i<10;i++)

printf("%4d",a[i]);

printf("\n");

printf("选择排序后的序列:

\n");

sort1(a,10);

for(i=0;i<10;i++)

printf("%4d",a[i]);

printf("\n冒泡排序后的序列:

\n");

sort2(a,10);

for(i=0;i<10;i++)

printf("%4d",a[i]);

printf("\n");

}

 

运行结果截屏:

第八次作业

1. 设数组a[N]中已经有n个数并已按从小到大顺序排序。

要求输入一个数x,将其插入到数组中,使数组仍然有序。

#include

usingnamespacestd;

voidmain()

{inta[10]={4,6,8,10,20};

inti,j,x;

cin>>x;

for(i=0;i<9;i++)

{if(a[i]>x)//寻找插入点;

{

for(j=9;j>i;j--)//将元素向后移动一位;

a[j]=a[j-1];

a[i]=x;//空出位置,插入元素x;

break;

}

}

for(i=0;i<10;i++)

cout<

}

2. 编写函数intff(char*s),判断s所指字符串是否为“回文串”,即前后对称。

如abcba为回文串,若是返回1,否则返回0,并在主程序中调用该函数,对输入的字符串进行判断。

#include

#include

intff(char*s)

{intn,i;

n=strlen(s);

for(i=0;i

if(s[i]!

=s[n-i-1])return0;

return1;

}

voidmain()

{charss[20];

cin>>ss;

if(ff(ss))cout<<"YES!

"<

elsecout<<"NO!

"<

}

3. 编写一个函数voidstrcp(char*s1,char*s2),将字符数组s1中下标为偶数的元素复制到另一个字符数组s2中。

在主程序中调用该函数,输出这个字符串。

#include

//将字符串s1中下标为偶数的字符复制到s2中。

voidstrcp(char*s1,char*s2)

{inti=0,j=0;

for(i=0;s1[i]!

='\0';i++)

if(i%2==0)s2[j++]=s1[i];

s2[j]='\0';

}

intmain()

{chars[]="Nanchang!

";

charss[10];

strcp(s,ss);

cout<

cout<

return0;

}

4. 输入一行字符,统计其中字母,数字,空格和其他字符的个数。

#include

intmain()

{chars[100];

intB=0,L=0,D=0,S=0,T=0,i;

cin.getline(s,100,'\n');

for(i=0;s[i]!

='\0';i++)

if(s[i]>='A'&&s[i]<='Z')B++;

elseif(s[i]>='a'&&s[i]<='z')L++;

elseif(s[i]>='0'&&s[i]<='9')D++;

elseif(s[i]=='')S++;

elseT++;

cout<<"大写字符个数:

"<

cout<<"小写字符个数:

"<

cout<<"数字字符个数:

"<

cout<<"空格字符个数:

"<

cout<<"其他字符个数:

"<

return0;

}

第九次作业

1、编写一个程序,采用类计算n!

并输出10!

的值.

#include

classJS

{public:

JS(inta)//构造函数;

{n=a;}

intfac()//计算N的阶乘;

{inti,p=1;

for(i=1;i

p=p*i;

returnp;

}

private:

intn;

};

intmain()

{JSobj(10);//定义对象;

ints;

s=obj.fac();//调用对象的方法计算阶乘;

cout<

return0;

}

2、定义并实现一个矩形类,有长宽两个属性,定义一个构造函数初始化对象,用成员函数GetS()、GetL分别

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1