1定义一个长度为4的数组用于存储用户输入的4个数求解.docx

上传人:b****7 文档编号:25067328 上传时间:2023-06-04 格式:DOCX 页数:88 大小:46KB
下载 相关 举报
1定义一个长度为4的数组用于存储用户输入的4个数求解.docx_第1页
第1页 / 共88页
1定义一个长度为4的数组用于存储用户输入的4个数求解.docx_第2页
第2页 / 共88页
1定义一个长度为4的数组用于存储用户输入的4个数求解.docx_第3页
第3页 / 共88页
1定义一个长度为4的数组用于存储用户输入的4个数求解.docx_第4页
第4页 / 共88页
1定义一个长度为4的数组用于存储用户输入的4个数求解.docx_第5页
第5页 / 共88页
点击查看更多>>
下载资源
资源描述

1定义一个长度为4的数组用于存储用户输入的4个数求解.docx

《1定义一个长度为4的数组用于存储用户输入的4个数求解.docx》由会员分享,可在线阅读,更多相关《1定义一个长度为4的数组用于存储用户输入的4个数求解.docx(88页珍藏版)》请在冰豆网上搜索。

1定义一个长度为4的数组用于存储用户输入的4个数求解.docx

1定义一个长度为4的数组用于存储用户输入的4个数求解

1.定义一个长度为4的数组,用于存储用户输入的4个数。

求解并打印第1、4个元素的平均值以及第2、3个元素的平均值。

#include

usingnamespacestd;

voidmain()

{

doublea[4];

cout<<"请输入4个数字:

";

for(intb=0;b<4;b++)

{

cin>>a[b];

}

cout<<(a[0]+a[3])/2<

cout<<(a[1]+a[2])/2<

}

2.定义一个长度为12的整型数组,其元素由随机数发生器随机产生,并将该数组按照逆序打印出来。

#include

#include

usingnamespacestd;

voidmain()

{

constintN=12;

srand(time(0));

inta[N];

cout<<"原数组:

\n";

for(intb=0;b

{

a[b]=rand();

cout<

}

cout<

cout<<"逆序输出:

\n";

for(intc=N-1;c>=0;c--)

{

cout<

}

cout<

}

3.使用一个数组存储一年中各月的天数,试回答用户某年某月的天数。

例:

假设用户输入的年数为2012,月数为2,则程序应输出29。

要求:

先编写一个判断闰年的函数,输入:

一个正整数(年份);输出:

真(是闰年)或假(不是闰年)。

并在主函数中使用该函数来判断闰年。

#include

usingnamespacestd;

boolrunnian(int);

voidmain()

{

intyear,month;

intj[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};

cout<<"请输入年份和月份:

";

cin>>year>>month;

if(year>0&&month>0&&month<=12)

{

if(runnian(year))

j[2]++;

cout<

"<

}

else

cout<<"输入数据不合法!

\n";

}

boolrunnian(intyear)

{

if(year%4==0&&year%100!

=0||year%400==0)

returntrue;

else

returnfalse;

}

4.试编写程序计算乘积矩阵。

设矩阵A、B如下图片所示,计算乘积矩阵C并打印出来。

#include

#include

usingnamespacestd;

voidmain()

{

constintM=3,N=4,K=4;

inta[M][K]={{3,0,4,5},{6,2,1,7},{4,1,5,8}};

intb[K][N]={{1,0,4,3},{2,5,1,6},{0,7,4,4},{9,3,6,0}};

intc[M][N];

inti,j,k;

cout<<"原矩阵A:

\n";

for(i=0;i

{

for(j=0;j

cout<

cout<

}

cout<<"原矩阵B:

\n";

for(i=0;i

{

for(j=0;j

cout<

cout<

}

for(i=0;i

for(j=0;j

{

intt=0;

for(k=0;k

t+=a[i][k]*b[k][j];

c[i][j]=t;

}

cout<<"乘积矩阵C=A*B:

\n";

for(i=0;i

{

for(j=0;j

cout<

cout<

}

}

5.编程实现:

将michaeljackson的名字保存在字符数组name中,并将其中两个单词的首字符改为大写后打印出来?

#include

usingnamespacestd;

voidmain()

{

charname[]="michaeljackson";

cout<

name[0]=toupper(name[0]);

name[8]=toupper(name[8]);

cout<

}

6.将字符数组str1中下标为单号的元素值赋给另一个字符数组str2,并打印输出str1和str2。

其中str1中保存的字符串可以由用户输入,假设不超过30个字符。

#include

usingnamespacestd;

voidmain()

{

constintN=30;

charstr1[N+1]="",str2[N/2+1]="";

cout<<"请输入一个不超过30个字符的字符串:

";

cin>>str1;

for(inti=0;str1[i]!

='\0';i++)

{

if(i%2==1)

str2[i/2]=str1[i];

}

cout<

cout<

}

7.编程实现:

由用户输入一些字符,之后求出其中英文字母、数字及其他字符各占多少百分比?

提示:

假设输入的字符不超过80个。

#include

usingnamespacestd;

voidmain()

{

constintN=80;

charstr[N+1];

inti,letter,num,chr;

cout<<"请输入一个不超过80个字符的字符串:

";

cin>>str;

letter=num=chr=0;

for(i=0;str[i]!

='\0';i++)

{

if(isalpha(str[i]))

letter++;

elseif(isdigit(str[i]))

num++;

else

chr++;

}

cout<<"Alpha:

"<<(float)letter/i*100<<"%"<

cout<<"Number:

"<<(float)num/i*100<<"%"<

cout<<"Othercharacter:

"<<(float)chr/i*100<<"%"<

}

相关函数说明:

inttoupper(int):

将一个小写字母转换为大写字母。

输入:

一个小写字母;输出:

对应的大写字母。

intisalpha(int):

判断一个字符是否是英文字母。

输入:

一个字符;输出:

真(是个英文字母)或假(不是个英文字母)。

intisdigit(int):

判断一个字符是否是十进制数字字符。

输入:

一个字符;输出:

真(是个数字字符)或假(不是个数字字符)。

8.编程实现:

保存用户输入的12个英文名字,并打印出其中的第1、3、5、7、9、11个名字。

#include

usingnamespacestd;

voidmain()

{

constintM=12,N=30;

charname[M][N+1];

inti;

cout<<"请输入12个英文名字:

\n";

for(i=0;i

cin>>name[i];

}

cout<<"第1,3,5,7,9,11个人的名字是:

\n";

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

cout<<(i+1)<<":

\t"<

}

}

9.使用随机数发生器产生50个不超过100的正整数,保存在数组中,打印原始数组及降序排列后的数组。

并在数组中查找某个由用户指定的整数,若找到则打印出其下标,否则打印“未找到”。

要求:

打印数组时按横向制表位列对齐的方式(数据以’\t’间隔),每行10个数。

#include

#include

usingnamespacestd;

voidmain()

{

constintN=50;

inta[N];

inti,j;

srand(time(NULL));

cout<<"原始数组:

\n";

for(i=0;i

{

a[i]=rand()%100;

cout<

if((i+1)%10==0)cout<

}

cout<

//选择排序法

for(i=0;i

{

intk=i;

for(j=i+1;j

if(a[k]

}

intm=a[k];

a[k]=a[i];

a[i]=m;

}

cout<<"降序排列后的数组:

\n";

for(i=0;i

cout<

if((i+1)%10==0)cout<

}

cout<

intnum;

cout<<"请输入一个要查找的100以内的整数:

";

cin>>num;

//二分查找法

intlow=0,high=N-1;//查找空间的首尾元素的下标

while(low<=high)

{

intmid=(low+high)/2;//查找空间的中点元素的下标

if(a[mid]==num){

cout<<"找到a["<

break;

}

elseif(a[mid]

elselow=mid+1;//查找空间缩小一半

}

if(low>high)cout<<"数组中未找到"<

}

10.编程实现:

保存用户输入的12个英文名字,排序后打印出来。

提示:

比较两个名字可以使用字符串比较函数intstrcmp(char*,char*)。

#include

usingnamespacestd;

voidmain()

{

constintM=12,N=30;

charname[M][N+1];

inti;

cout<<"请输入12个英文名字:

\n";

for(i=0;i

cin>>name[i];

}

//冒泡排序法

for(i=0;i

for(intj=M-1;j>i;j--)

{

chart[M];

if(strcmp(name[j],name[j-1])<0)//将值小的元素向前交换,升序排列

{

strcpy(t,name[j]);

strcpy(name[j],name[j-1]);

strcpy(name[j-1],t);

}

}

//打印升序排列后的数组

cout<<"升序排列后:

\n";

for(i=0;i

cout<

}

10.某学校有12名学生参加100米短跑比赛,每个运动员号和成绩如下表所示,请按照比赛成绩排名并输出,要求每一行输出名次,运动员号和比赛成绩三项数据。

并在之后查找用户指定的运动员成绩及其名次,例如用户输入运动员号8,则程序应打印出8号运动员的成绩及名次。

100米短跑比赛成绩

运动员号成绩(秒)

运动员号成绩(秒)

113.6

214.9

314.8

412.6

512.0

613.4

712.7

812.5

915.6

1015.3

1113.4

1212.7

#include

usingnamespacestd;

voidmain()

{

constintN=12;

doubleresult[N][2]={{1,13.6},{2,14.9},{3,14.8},{4,12.6},{5,12.0},{6,13.4},{7,12.7},{8,12.5},{9,15.6},{10,15.3},{11,13.4},{12,12.7}};

inti,num;

//插入排序法

for(i=1;i

{

doublek[2]={result[i][0],result[i][1]};//待插入的一行数据先保存在数组k中

intj=i-1;

while(j>=0&&k[1]

{//较大的数据向后移动,升序排列

result[j+1][0]=result[j][0];

result[j+1][1]=result[j][1];

j--;

}

//在插入点后插入数据

result[j+1][0]=k[0];

result[j+1][1]=k[1];

}

cout<<"排序后:

\n";

cout<<"名次\t编号\t成绩\n";

for(i=0;i

{

cout<

\t";

cout<

cout<

}

cout<<"请输入要查找的运动员的编号:

";

cin>>num;

//顺序查找法

for(i=0;i

{

if(result[i][0]==num)

{

cout<<"找到:

\n名次\t编号\t成绩\n";

cout<

\t";

cout<

cout<

break;

}

}

if(i>=N)

cout<<"未找到\n";

}

11、假设有int型变量x、y,bool型变量f、g和double型数组a[5]。

按以下要求编写程序:

(a)为x、y、f和g随便赋一个值,请输出各变量的值及其地址。

(b)输出数组a的第一个元素和最后一个元素的地址。

思考:

两个地址之间差多少,为什么?

#include

usingnamespacestd;

voidmain()

{

intx,y;

boolf,g;

doublea[5];

x=10,y=20;

int*xp=&x,*yp=&y;

cout<<"x:

"<<*xp<<'\t'<

cout<<"y:

"<<*yp<<'\t'<

f=true,g=false;

bool*fp=&f,*gp=&g;

cout<<"f:

"<<*fp<<'\t'<

cout<<"g:

"<<*gp<<'\t'<

/*存储一个double型数据需要8Byte空间,

因此元素a[0]与a[4]的地址相差应为4*8Byte,即32Byte。

需注意的是:

显示的地址是一个十六进制数,

所以下面打印出的两个地址应相差0x20。

*/

cout<<"a[0]:

"<<&a[0]<

cout<<"a[4]:

"<<&a[4]<

}

12.将字符串常量"pointer"保存在一个字符数组中,打印以下三行内容:

(1)该数组的首地址;

(2)该字符串;(3)请使用指针变量输出该字符串,要求每个字符之间空一个格。

#include

usingnamespacestd;

voidmain()

{

charstr[]="pointer";//定义字符数组str存储该字符串

cout<<(void*)str<

cout<

char*p=str;//定义字符指针p指向数组中的第一个字符

while(*p){

cout<<*p<<'';//循环打印数组中的每个字符,并以空格间隔

p++;

}

cout<

}

13.试用指针实现:

判断一个数组是否是对称的。

如{1,2,3,5,7,7,5,3,2,1}是对称的,而{1,2,3,5,7,5,3,2,1}或{1,2,3,5,7,5,3}都不是对称的。

要求:

数组的元素个数定义为常量N,N的值以及数组各元素的值自定。

#include

usingnamespacestd;

voidmain()

{

constintN=10;

inta[N]={1,2,3,5,7,7,5,3,2,1};

//其他试验值intb[]={1,2,3,5,7,5,3,2,1};intc[]={1,2,3,5,7,5,3};等等

for(inti=0;i

cout<

cout<

if(N%2==0)

{

int*headp=a;//定义首指针,指向数组第一个元素

int*tailp=a+N-1;//定义尾指针,指向数组最后一个元素

while(headp

{

if(*headp!

=*tailp)//如果两个指针指向的数不相等

{

cout<<"该数组不对称。

\n";

break;

}

headp++;//首指针增1,即向后移动,指向下一个元素

tailp--;//尾指针减1,即向前移动,指向前一个元素

}

if(headp>=tailp)//如果首指针已大于或等于尾指针

cout<<"该数组对称。

\n";

}

else

cout<<"该数组不对称。

\n";

}

14.试编写一个实现三位正整数数字拆分功能的函数ChaiFen,其函数原型如下:

boolChaiFen(intn,int&n2,int&n1,int&n0);

要求:

函数检查参数n是否是正数,若是则进行拆分,并将百、十、个位分别保存在引用型参数n2、n1和n0中,函数返回true表示拆分成功;否则不进行拆分,函数返回false。

编写主函数,调用上述函数将用户输入的任意正整数进行拆分后显示。

#include

usingnamespacestd;

boolChaiFen(int,int&,int&,int&);

voidmain()

{

intx,bai,shi,ge;

cout<<"请输入任意一个三位正整数:

";

cin>>x;

if(x>=100&&x<1000&&ChaiFen(x,bai,shi,ge))//调用函数,形参n2,n1,n0将分别引用实参bai,shi,ge

{

cout<

<

}

else

cout<<"输入数据不合法。

\n";

}

boolChaiFen(intn,int&n2,int&n1,int&n0)//函数定义,n2,n1,n0声明为引用型参数

{

if(n<=0)

returnfalse;

n2=n/100;//百位保存在n2中,也即保存在main函数中的变量bai中

n1=n%100/10;//十位保存在n1中,也即保存在main函数中的变量shi中

n0=n%10;//个位保存在n0中,也即保存在main函数中的变量ge中

returntrue;

}

15.试编写函数ChaZhao实现数组元素查找的功能。

若找到,返回其地址;否则,返回空指针NULL。

正确定义上述函数,使其功能可以在下面的主函数中得到测试。

voidmain()

{

constintN=12;

inta[N]={15,96,46,53,58,52,10,35,66,16,63,50};

intk1=30,k2=58;

int*p1=ChaZhao(a,N,k1),*p2=ChaZhao(a,N,k2);

if(p1!

=NULL)cout<<"找到a["<

elsecout<<"未找到"<

if(p2!

=NULL)cout<<"找到a["<

elsecout<<"未找到"<

}

#include

usingnamespacestd;

int*ChaZhao(int[],int,int);

voidmain()

{

constintN=12;

inta[N]={15,96,46,53,58,52,10,35,66,16,63,50};

intk1=30,k2=58;

int*p1=ChaZhao(a,N,k1),*p2=ChaZhao(a,N,k2);

if(p1!

=NULL)cout<<"找到a["<

elsecout<<"未找到"<

if(p2!

=NULL)cout<<"找到a["<

elsecout

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

当前位置:首页 > 党团工作 > 入党转正申请

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

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