}
wordordrdd
二、.根据程序功能填空。
1.程序把10个数存储到一维数组a中,并求该数组中最大值。
#include
voidmain()
{intmax;
inta[10]={76,55,95,87,85,83,65,90,77,85};
int*p=a;
max=*p;
for(;p<&a[10];p++)
if(*p>max)max=*p;
cout<<"max="<}
2.下面程序的功能是输出1至100之间每位数字的乘积大于每位数的和的数。
例如,45两位数字的乘积为4×5=20,和为4+5=9。
#include
voidmain()
{intn,k=1,s=0,m;
for(n=1;n<=100;n++)
{k=1;s=0;
1m=n;
while(2m)
{k*=m%10;
s+=m%10;
3m/=10;
}
if(k>s)cout<}
}
3.程序对输入的n求s=1+1/23+1/33+…+1/n3。
#include
voidmain()
{doubles;inti,n;
cout<<"n=";cin>>n;
s=0;
for(i=1;is=s=s+(1.0/(n*n*n);
cout<<"s="<
}
4.函数create从键盘输入整数序列,以输入0为结束。
按输入顺序建立一个以head为表头的单向链表。
structnode{intdata;node*next;};
create(node*head)
{node*p,*q;
p=newnode;
cin>>p->data;
q=p;
while(p->data)
{if(head==NULL)head=p;
elseq->next=p;;
q=p;
p=newnode;;
cin>>p->data;
}
q->next=NULL;
deletep;
}}
5.以下程序求方程的全部整数解:
3x+2y-7z=5(0≤x,y,z≤100)
#include
voidmain()
{intx,y,z;
for(x=0;x<=100;x++)
for(y=0;y<=100;y++)
{if((z=3*x+2*y-5)%7)
break;
z=3*x+2*y-5)/7;//求出z的值
if(z<=100&&z>=0)//检查z的范围
cout<<"x="<}
三、程序设计
1.编写函数输出以下形状的图形,其中构成图形的数字和输出的行数通过参数传送。
1
222
33333
4444444
#include
voidmain()
{
inti,n;
for(i=0;i<5;i++){
for(n=0;n<2*i-1;n++){
cout<
}
cout<}
}
2.请编程序,输入两个正整数啊a和b(a
每行输出数据不超过10个。
例如,若输入a为6,b为8,则输出格式要求如下:
thefactorsof6:
23
thefactorsof7:
nofactor
thefactorsof8:
24
#include
usingnamespacestd;
voidprintFactor(inti);
voidmain()
{
intnumA,numB;
cout<<"InputTwoNumbers:
"<cin>>numA>>numB;
for(inti=numA;i<=numB;i++)
{
printFactor(i);
}
}
voidprintFactor(inti)
{
cout<<"FACTORSOF"<
"<int*fact=newint();
intn=0;
for(intk=2;k
{
if(i%k==0)
{
fact[n]=k;
n++;
}
}
if(n==0)
{
cout<<"NOFACTOR"<}
else
{
for(intj=0;j{
cout<if((j+1)%10==0)
{
cout<}
}
cout<}
}
3.请编程序,找出1至99之间的全部同构数。
同构数是这样一组数:
它出现在平方数的右边。
例如:
5是25右边的数,25是625右边的数,所以5和25都是同构数。
#include
usingnamespacestd;
intmain()
{
longx,y,i=10;
intflag=0;
for(x=1;x<100;x++)
{
y=x*x;
while(y/i!
=0)
{
if(y%i==x)
{
flag=1;
break;
}
i=i*10;
}
if(flag==1)cout<flag=0;
i=10;
}
return0;
}
4.编写一个程序,实现如下功能:
(1)从键盘输入aopb。
其中a,b为数值;op为字符,限制为+、-、*、/。
(2)调用函数count(op,a,b),计算表达式aopb的值。
由主函数输出结果。
#include
usingnamespacestd;
template
TCOUNT(charop,Ta,Tb)
{
switch(op)
{
case'+':
return(a+b);break;
case'-':
return(a-b);break;
case'*':
return(a*b);break;
case'/':
return(a/b);break;
default:
cout<<"Error."<}
}
intmain()
{
inta,b;
charop;
cin>>a>>op>>b;
if(op=='/'&&b==0)
{
cout<<"InputError."<}
cout<<"Resultis"<system("pause");
return0;
}
5.编写一个程序,实现如下功能:
(1)输入k(<100)个整数到数组x[100]中;
(2)计算k个数的平均值及大于平均值的元素个数。
#include
floataverage(int[],int);
intnum(int[],int);
voidmain()
{
intk,i,x[100];floatave;
for(k=0;k<100;k++)
{
cin>>i;
if(i==0){
break;
}
x[k]=i;
}
ave=average(x,k);
cout<<"平均值"<cout<<"大于平均值的元素个数"<}
floataverage(intu[],intk)
{
inta,sum=0;
for(a=0;asum+=u[a];
return(float)sum/k;
}
intnum(intu[],intk)
{
intb,c,m=0;
intave=average(u,k);
for(c=0;c{
if(u[c]>ave)m++;}
returnm;
}
6.定义函数
voidreversion(intary[],intsize);
逆置数组ary的元素。
例如实参数组原来为[1,5,3,2,6,8,9,4],调用函数
reversion后变成为[4,9,8,6,2,3,5,1]。
voidreversion(intary[],intsize){
inti;
inttemp;
for(i=0;itemp=ary[i];
ary[i]=ary[size-i];
ary[size-i]=temp;
}
}
7.数组a包含50个整数,把a中所有的后项除以前项之商取整后存入数组b(即b[i]=a[i]/a[i-1],并且b[50]=a[20]/a[1]),最后按每行5个元素的格式输出数组b。
#include
voidmain()
{inta[50],b[50];
inti,j=0;//j用来控制换行
for(i=1;i<=50;i++)
{cout<<"\nInputa["<
";cin>>a[i];
}
for(i=1;i<=50;i++)
{if(i!
=50)b[i]=a[i]/a[i-1];
elseb[i]=a[20]/a[1];
}
for(i=0;i<=50;i++)
{if(j!
=5)cout<<"\n";
cout<<""<
}
}
8.编程输出所有不超过100的其平方具有对称性质的正整数(也称回文数)。
输出格式如下:
numbersquare
11
24
39
11121
22484
26676
#include
voidmain()
{inti;
longtext(inti);//判断i的i^2是不是回文数的函数
for(i=4;i<=100;i++)
{if(text(i)!
=0)cout<<"\n"<
}
}
longtext(inti)
{longsum,k,sum1=0;
sum=i*i;
k=sum;
while(k>0)
{sum1=sum1*10+k%10;
k=k/10;
}
if(sum1==sum)returni*i;
elsereturn0;
}
9.编写程序,打印如下杨辉三角。
1
11
121
1331
14641
#include
voidmain()
{
inta[5][5],i,j;
for(i=0;i<5;i++)
{
for(j=5;j>=i;j--)
printf("%2c",'');/*两个空格*/
for(j=0;j<=i;j++)
{
if(i==j||j==0)
a[i][j]=1;
else
a[i][j]=a[i-1][j]+a[i-1][j-1];
printf("%3d",a[i][j]);/*%3d后一个空格*/
if(i==j)
printf("\n");
}
}
}
10.定义一个函数,计算长度为k的整型数组元素的平均值及大于平均值的元素个数。
调用函数的语句为:
count(a,k,ave,num);
其中a是数组名,k是数组元素个数,ave返回的平均值,num返回大于平均值的元素个数。
voidcount(a,k,&ave,&num){
intcount=0,sum=0;
inti;
//求平均数
for(i=0;isum+=a[i];
}
ave=(float)sum/(float)a;
//求大于平均数的个数
for(i=0;iif(a[i]>ave)count++;
}
num=count;
}