}
解:
主函数4次循环中,
第一次输出cp+i,此时cp指向“word”的第一个字符,所以输出“word”,之后cp依次往后移一个位置,输出此位置及后面的字符结果为:
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;
M=n;
while(m>0)
{k*=m%10;
s+=m%10;
m=m/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+1/(i*i*i);
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=q->next;
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)
continue;
z=z/7;//求出z的值
if(z>=0&&z<101)//检查z的范围
cout<<"x="<}
}
三、程序设计
1.编写函数输出以下形状的图形,其中构成图形的数字和输出的行数通过参数传送。
1
222
33333
4444444
答:
voidPrintFigure(intnum,introw){
inti,j,k;
num=num-row+1;
for(i=1;i<=row;i++){
j=2*i-1;
for(k=1;k<=j;k++)cout<cout<2.请编程序,输入两个正整数啊a和b(a
每行输出数据不超过10个。
例如,若输入a为6,b为8,则输出格式要求如下:
thefactorsof6:
23
thefactorsof7:
nofactor
thefactorsof8:
24
答:
#include#include
voidout(inta,intb){
inti,j,count;
for(i=a;i<=b;i++)
{
count=0;
printf("\nthefactorof%d\n",i);for(j=2;j
{
if(i%j==0)
{
printf("%s%d",(count==0?
"":
","),j);
count++;}}
if(count==0)printf("nofactor");}}
3.请编程序,找出1至99之间的全部同构数。
同构数是这样一组数:
它出现在平方数的右边。
例如:
5是25右边的数,25是625右边的数,所以5和25都是同构数。
答:
#includeusingnamespacestd;
voidmain(){
inti,j,k;k=10;
for(i=1;i<=99;i++){
if(i==k)k*=10;
j=i*i;
if(j%k==i)
cout<
cout<}
4.编写一个程序,实现如下功能:
(1)从键盘输入aopb。
其中a,b为数值;op为字符,限制为+、-、*、/。
(2)调用函数count(op,a,b),计算表达式aopb的值。
由主函数输出结果。
答:
#include"stdafx.h"#includeusingnamespacestd;classcal{public:
intadd(intx,inty)//加法定义函数{returnx+y;}
intsub(intx,inty)//减法定义函数{returnx-y;}
intmul(intx,inty)//乘法定义函数{returnx*y;}
intdiv(intx,inty)//除法定义函数{if(y==0)
cout<<"0不能作除数"<returnx/y;}};
intmain(){
calc;//定义对象intx,y;charID;
cout<<"请输入要计算的两个数及运算符,中间用空格隔开比如23+"<>x>>y>>ID;switch(ID){case'+':
cout<cout<cout<cout<return0;}
5.编写一个程序,实现如下功能:
(1)输入k(<100)个整数到数组x[100]中;
(2)计算k个数的平均值及大于平均值的元素个数。
答:
#includevoidmain(){
Intx[100],k,i,n;Doublesum=0.0,ave;cout<<"HowmanyData?
\n";cin>>k;
for(i=0;icin>>x[i];sum+=x[i];}
ave=sum/k;n=0;
for(i=0;iave)n++;
cout<<"average="<cout<<"Thereare"<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){
inttemp;
for(inti=0;itemp=ary[i];
ary[i]=ary[size-1-i];ary[size-1-i]=temp;
}}
7.数组a包含50个整数,把a中所有的后项除以前项之商取整后存入数组b(即b[i]=a[i]/a[i-1],并且b[50]=a[20]/a[1]),最后按每行5个元素的格式输出数组b。
答:
#includevoidmain(){
inta[50],b[5],i,,j;
printf("请输入50个数");for(i=0;i<50;i++);scanf("%d",&a[i]);for(i=9;i>0;i-2){
for(j=0;j<5;j++)b[j]=a[i]%a[i-1];}
for(j=0;j<5;j++)for(i=1;i<5;i++)printf("%d",b[i];printf("\n");}
8.编程输出所有不超过100的其平方具有对称性质的正整数(也称回文数)。
输出格式如下:
numbersquare
11
24
39
11121
22484
26676
答:
#include
IntmainIntj=0;
For(i=0;j<100;j++)If(m[j]!
=m[i])Break;If(j>=i)
Printf(n,n*n);}
Returno;}
9.编写程序,打印如下杨辉三角。
1
11
121
1331
14641
答:
#include#includeusingnamespacestd;
voidmain(){
constintm=5;inta[m][m];
for(inti=0;ia[i][0]=1;a[i][i]=1;}
for(intj=2;jfor(intk=1;ka[j][k]=a[j-1][k-1]+a[j-1][k];}
for(inti=0;icout<for(intj=0;j<=i;j++)cout<10.定义一个函数,计算长度为k的整型数组元素的平均值及大于平均值的元素个数。
调用函数的语句为:
count(a,k,ave,num);
其中a是数组名,k是数组元素个数,ave返回的平均值,num返回大于平均值的元素个数。
答:
#includecount(a,k,&ave,&num)
{intcount=0,sum=0;inti;
for(i=0;isum+=a[i];}
ave=(float)sum/(float)a;for(i=0;i{
if(a[i]>ave)count++;}
num=count;}