C++程序设计基础程序源代码Word格式文档下载.docx

上传人:b****7 文档编号:22275730 上传时间:2023-02-03 格式:DOCX 页数:105 大小:152.50KB
下载 相关 举报
C++程序设计基础程序源代码Word格式文档下载.docx_第1页
第1页 / 共105页
C++程序设计基础程序源代码Word格式文档下载.docx_第2页
第2页 / 共105页
C++程序设计基础程序源代码Word格式文档下载.docx_第3页
第3页 / 共105页
C++程序设计基础程序源代码Word格式文档下载.docx_第4页
第4页 / 共105页
C++程序设计基础程序源代码Word格式文档下载.docx_第5页
第5页 / 共105页
点击查看更多>>
下载资源
资源描述

C++程序设计基础程序源代码Word格式文档下载.docx

《C++程序设计基础程序源代码Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《C++程序设计基础程序源代码Word格式文档下载.docx(105页珍藏版)》请在冰豆网上搜索。

C++程序设计基础程序源代码Word格式文档下载.docx

inta,b,c,max;

输入三个整数:

cin>

a>

b>

c;

cout<

a="

a<

'

\t'

b="

b<

c="

c<

if(a>

b)max=a;

elsemax=b;

最大数为:

if(c>

max)cout<

max<

【例3.3】用嵌套if语句完成【例3.2】的任务。

方法1:

采用第二种嵌套形式

voidmain(){inta,b,c,max;

if(a>

b)

c)max=a;

//a>

b且a>

c

elsemax=c;

b且a<

else

if(b>

c)max=b;

//b>

=a且b>

=a且b<

max="

方法2:

采用第一种嵌套形式

inta,b,c,max;

b&

elseif(b>

a&

【例3.4】某商场优惠活动规定,某商品一次购买5件以上(包含5件)10件以下(不包含10件)打9折,一次购买10件以上(包含10件)打8折。

设计程序根据单价和客户的购买量计算总价。

floatprice,discount,amount;

//单价、折扣、总价

intcount;

//购买件数cout<

输入单价:

price;

输入购买件数:

count;

if(count<

5)discount=1;

elseif(count<

10)discount=0.9;

elsediscount=0.8;

amount=price*count*discount;

单价:

price<

购买件数:

count<

\t\t"

折扣:

discount<

总价:

amount<

【例3.5】求一元二次方程ax2+bx+c=0的根。

其中系数a(a^0)、b、c的值由键盘输

入。

math.h>

floata,b,c;

floatdelta,x1,x2;

constfloatzero=0.0001;

//定义一个很小的常数

输入三个系数a(a!

=0),b,c:

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

if(fabs(delta)<

zero){//绝对值很小的数即被认为是0

方程有两个相同实根:

x1=x2="

-b/(2*a)<

elseif(delta>

0){delta=sqrt(delta);

x1=(-b+delta)/(2*a);

x2=(-b-delta)/(2*a);

方程有两个不同实根:

x1="

x1<

x2="

x2<

else//delta<

方程无实根!

【例3.6】运输公司对所运货物实行分段计费。

iomanip>

intc,s;

floatp,w,d,f;

输入运输单价p,重量w和里程s:

p>

w>

s;

c=s/250;

switch(c){

case0:

d=0;

break;

case1:

d=0.02;

case2:

case3:

d=0.05;

case4:

case5:

case6:

case7:

d=0.08;

case8:

case9:

case10:

case11:

d=0.1;

default:

d=0.15;

f=p*w*s*(1-d);

运输单价:

p<

重量:

w<

里程:

s<

d<

运费:

f<

【例3.7】设计一个计算器程序,实现加、减、乘、除运算。

floatnum1,num2;

charop;

输入操作数1,运算符,操作数2:

num1>

op>

num2;

switch(op){

case'

+'

num1<

op<

num2<

="

num1+num2<

case'

-'

num1-num2<

*'

num1*num2<

/'

num1/num2<

default:

是无效运算符!

【例3.8】这是一个古罗马数学家伦纳德斐波那契提出的有趣的问题。

0n0

fib(n)1n1

fib(n-2)fib(n-1)n1

iomanip>

constintm=20;

intfib0=0,fib1=1,fib2;

setw(15)<

fib0<

fib1;

for(intn=3;

n<

=m;

n++){

fib2=fib0+fib1;

//控制每行5个数据

fib2;

if(n%5==0)cout<

endl;

fib0=fib1;

fib1=fib2;

【例3.9】输入一个不超过9位的整数,将其反向后输出。

例如输入247,变成742输出。

#include<

usingnamespacestd;

voidmain(){

intnum,subscript;

intdigit[9];

输入一个整数:

cin»

num;

原来整数为:

num<

subscript=0;

〃数组下标初值

do{

digit[subscript]=num%10;

num=num/10;

subscript++;

//修改下标

}while(num>

0);

for(inti=O;

i<

subscript;

i++)〃整数的反向组合

num=num*10+digit[i];

反向后整数为:

【例3.10]用迭代法求x■a的近似值。

求平方根的迭代公式为

Xn1(Xna/Xn)/2

#include<

math>

floatx0,x1,a;

输入一个正数:

>

a;

if(a<

0)cout<

不能开平方!

x1=a/2;

do{

x0=x1;

x1=(x0+a/x0)/2;

}while(fabs(x1-x0)>

=1e-5);

a<

的平方根为:

【例3.11】输入一段文本,统计文本的行数、单词数及字符数。

假定单词之间以空格或跳格或换行符间隔,假定文本没有空行。

charch;

intnline=0,nword=0,nch=0;

intisword=0;

输入一段文本(无空行):

ch=cin.get();

if(ch=='

\n'

)nline++;

//遇换行符行数+1if(ch!

='

'

ch!

ch!

=EOF){//读到非间隔符

//在单词的起始处给单词数+1

//字符数加+1

//读到间隔符

//读到文本结束符为止

if(!

isword)nword++;

nch++;

isword=1;

elseisword=0;

}while(ch!

=EOF);

行数:

nline<

单词数:

nword<

字符数:

nch<

【例3.12]计算1+2+3+…+100的值。

constintn=100;

//采用常变量有利于修改程序voidmain(){

inti=1,sum=0;

//循环初始条件

while(i<

=n){sum+=i;

i++;

//修改循环条件

sum="

sum<

【例3.13]给定正整数m,判定其是否为素数。

intm,i,k;

输入整数m:

m;

if(m==2)cout<

m<

是素数"

else{

k=sqrt(m);

for(i=2;

=k;

i++)if(m%i==0)break;

//只要有一个整除,就可停止if(i>

k)cout<

m<

//循环提前终止表示是非素数

elsecout<

不是素数"

第四章

【例4.1】从键盘上输入一组数据,并按相反的顺序打印出来。

voidmain()

{inti,a[10];

for(i=0;

10;

i++)

a[i];

for(i=9;

i>

=0;

i--)

a[i]<

【例4.2】利用随机函数求一组数中的最大值及其位置。

ctime>

//调用系统时间

cstdlib>

//调用随机数的函数

{inti,max,k,a[10];

srand((unsigned)time(0));

//使每次产生的随机数不同

a[i]=rand()%1000;

//保证产生的随机数在1000以内

max=a[0];

k=0;

if(a[i]>

max){max=a[i],k=i;

//输出数组中个元素的值

Thelocationofthemaximumis:

k<

Valuesare:

max;

【例4.3】输出数列中的前10项:

1,1,2,3,5,8,13,…….

a[0]=1;

a[1]=1;

for(i=2;

i++)a[i]=a[i-1]+a[i-2];

i++)cout<

【例4.4】求nxn矩阵中主对角线元素的乘积。

constintn=4;

voidmain(){inti,j,a[n][n];

intp=1;

//初始化主对角线乘积变量

4;

i++)for(j=0;

j<

j++)cin>

a[i][j];

i++)//求主对角线元素的乘积

p*=a[i][i];

主对角线元素的乘积是"

p;

【例4.5】在一次选举学生会主席的大会上,有5名候选人,分别用1,2,3,4,5代表每位

候选人的号码,统计出每人的得票数。

用-1作为终止输入的标志。

程序如下:

{inti,a[6]={0};

请输入每张票上所投候选人的代号”;

i;

while(i!

=-1){

if(i>

=1&

i<

=5)a[i]++;

i;

}

endl;

for(i=1;

=5;

:

【例4.6】某社区对居民用电情况进行统计,每隔50度为一个统计区域,当大于等于

500度时不再统计,编一程序,分别统计各用电区间内的居民数。

include<

usingnamespacestd;

voidmain()

{inta[11]={0};

inti,x;

for(i=1;

=n;

{cin>

x;

if(x<

500)a[x/50]++;

elsea[10]++;

=10;

a["

]="

【例4.7】已知有10个整数,采用选择法将这10个数按从小到大的顺序打印输出。

选择法排序:

{inta[10]={33,61,43,74,86,92,11,35,64,25};

inti,j,k;

{k=i-1;

for(j=i-1;

j++)if(a[j]<

a[k])k=j;

//外循环控制次数

//外循环每一遍时最小值的位置//外循环每一遍时需要比较数据的次数//将最小值的位置号记录下来

intx=a[i-1];

a[i-1]=a[k];

a[k]=x;

将当前数与最小值互换}

for(inti=0;

i++)cout<

//输出排序后的数据

2.冒泡法排序:

【例4.8】有一组整数,采用冒泡法将这10个数按从小到大的顺序打印输出。

constintn=10;

voidmain(){inta[n];

inti,j,x;

for(i=1;

n-1;

for(j=0;

n-i;

j++)if(a[j]>

a[j+1]){x=a[j];

a[j]=a[j+1];

a[j+1]=x;

n;

【例4.9】用插入法对上例中的数据进行排序

i++)//外循环控制遍历次数,n个数从第2个数开始到最后进行n-1

次插入

{x=a[i];

//将待插入的数暂存于变量x中

j>

=0&

x<

a[j];

j--)//在有序序列中寻找插入位置

a[j+1]=a[j];

//若找到插入位置,则元素后移一个位置

//找到插入位置,完成插入

【例4.10】在一组整数42,55,73,28,48,66,30,65,94,72中,查找数据为65的数据,并给出查找结果。

{constintn=10;

inti,a[n]={42,55,73,28,48,66,30,65,94,72};

intx=65;

for(i=0;

if(x==a[i]){cout<

查找"

x<

成功,"

下标为:

break;

if(i>

=n)cout<

失败"

【例4.11】假定一维数组中的n个元素是一个从小到大顺序排列的有序表,编一程序从

a中用二分法查法,找出其值等于给定值为key的元素。

{inta[n]={15,26,37,45,48,52,60,66,73,90};

intkey=80;

intlow=0,high=n-1;

intmid;

while(low<

=high)

{mid=(low+high)/2;

if(key==a[mid]){cout<

二分查找"

key<

成功"

下标为"

mid<

}elseif(key<

a[mid])high=mid-1;

elselow=mid+1;

if(key!

=a[mid])cout<

【例4.12】对学生期末考试成绩进行处理,统计每一位学生的平均成绩和每门课程的平均成绩(保留小数一位小数)

constintn=10,m=5;

voidmain(){inta[n][m];

doubleb[n]={0},c[m]={0};

inti,j,sum1,sum2;

for(i=0;

{sum1=0;

j++)sum1+=a[i][j];

b[i]=int(sum1/float(m)*10+0.5)/10.0;

}for(j=0;

j++)

{sum2=0;

//使用格式函数setw(n)

//定义10人,5门课

//初始化平均值变量

//sum1,sum2分别表示每行的和

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

当前位置:首页 > 幼儿教育 > 家庭教育

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

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