printf("%5d",*j);
printf("\n");
}
求和与图形
25编写程序,求下面数列前20项的和。
结果取3位小数。
1,-1/3^3,1/5^3,1/7^3,……,(-1)^(n-1)/(2n-1)^3,……(其中,^表示幂运算)
~0.969
#include
intmain()
{longi,sign;
doubles;
sign=1;
s=0;
i=1;
while(i<=20)
{
s=s+1.0/((2*i-1)*(2*i-1)*(2*i-1))*sign;
sign=-sign;
i++;
}
printf("\n%.3lf",s);
return0;
}
26编写程序,求下面数列前20项的和。
结果取3位小数。
1,1/2^4,1/3^4,1/4^4,……,1/n^4,……(其中,^表示幂运算)
~1.082
#include
intmain()
{longi;
doubles;
s=0;
i=1;
while(i<=20)
{
s=s+1.0/(i*i*i*i);
i++;
}
printf("\n%.3lf",s);
return0;
}
~~~
35编写程序,计算并输出下面数列前n项的和(设n=20,x=0.5),要求结果保留3位小数。
sin(x)/x,sin(2x)/2x,sin(3x)/3x,……,sin(n*x)/(n*x),……(其中,sin(x)为正弦函数)
~2.786
#include
#include"math.h"
intmain()
{longi;
doubles,x=0.5;
s=0;
i=1;
while(i<=20)
{
s=s+sin(i*x)/(i*x);
i++;
}
printf("\n%.3lf",s);
return0;
}
36编写程序,计算并输出下面数列前n项的和(设n=20,x=0.5),要求结果保留3位小数。
cos(x)/x,cos(2x)/2x,cos(3x)/3x,……,cos(n*x)/(n*x),……(其中,cos(x)为余弦函数)
~1.277
#include
#include"math.h"
intmain()
{longi;
doubles,x=0.5;
s=0;
i=1;
while(i<=20)
{
s=s+cos(i*x)/(i*x);
i++;
}
printf("\n%.3lf",s);
return0;
}
79.编写程序,用双重循环和表达式输出下面图形。
(不能使用两维数组)。
1234
5678
9101112
#include
intmain()
{
inti,j,k;
for(i=1;i<=3;i++)
{
for(j=1;j<=4;j++)
{
k=(i-1)*4+j;
printf("%4d",k);
}
printf("\n");
}
return0;
}
74.编写程序,使用重双循环输出下列三角形:
(不能使用两维数组)。
A
ABC
ABCDE
ABCDEFG
#include
intmain()
{inti,j;
for(i=1;i<=4;i++)
{
for(j=1;j<10-2*i;j++)
printf("");
for(j=1;j<=2*i-1;j++)
printf("%2c",64+j);
printf("\n");
}
return0;
}
80
*
***
*****
*******
*********
*******
*****
***
*
#include
#include"math.h"
voidmain()
{
inti,j;
for(i=-4;i<=4;i++)
{
for(j=1;j<10+abs(i);j++)
printf("");
for(j=1;j<=9-abs(i)*2;j++)
printf("*");
printf("\n");
}
}
数组
1.编写程序,使用随机函数初始化一个具有20个整型数据的一维数组元素a,使其每个数组元素在100到300之间,使用冒泡排序法按照由小到大的顺序对该数组进行排序,输出排序前、后的数组元素。
#include
#include
#include
#defineN10
voidprintArray(int*p,intn);
intmain()
{
inta[N];
inti,j,temp;
srand(time(NULL));
for(i=0;ia[i]=100+rand()%(300-100+1);
printArray(a,N);
for(i=0;i{
for(j=0;j{
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
printArray(a,N);
return0;
}
voidprintArray(int*p,intn)
{
printf("\n");
int*ptr=p;
inti;
for(i=0;ptr
{
printf("%5d",*ptr);
if((i+1)%10==0)
printf("\n");
}
printf("\n");
}
#include
#include
#include
#defineN20
voidmain()
{
inta[N];
int*p;
inti,j,temp;
srand(time(NULL));
for(i=0;ia[i]=100+rand()%(300-100+1);
p=a;
printf("\n");
int*ptr=p;
for(i=0;ptr
{
printf("%5d",*ptr);
if((i+1)%10==0)
printf("\n");
}
printf("\n");
for(i=0;i{
for(j=0;j{
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
p=a;
ptr=p;
printf("\n");
for(i=0;ptr
{
printf("%5d",*ptr);
if((i+1)%10==0)
printf("\n");
}
printf("\n");
}
4.把50-85这36个自然数按行赋给二维数组A[6][6],计算输出主对角线以上(含主对角线)各元素值的立方根之积。
结果保留3位小数。
结果:
3769867280899.743
#include"math.h"
#include
intmain()
{inta[6][6],i,j,k=50;
doubles=0;
for(i=0;i<6;i++)
for(j=0;j<6;j++)
{a[i][j]=k;
k=k+2;
}
for(i=0;i<6;i++)
for(j=0;j<6;j++)
if(j+i<6)
s=s*pow(a[i][j],1.0/3);
printf("%.3lf",s);
return0;
}
5.把21-56这36个自然数按列赋给二维数组A[6][6],计算输出主对角线以下(含主对角线)各元素值立方根之积。
结果:
42610953771.152
#include"math.h"
#include
intmain()
{inta[6][6],i,j,k=21;
doubles=1;
for(i=0;i<6;i++)
for(j=0;j<6;j++)
{a[j][i]=k;
k=k+1;
}
for(i=0;i<6;i++)
for(j=0;j<6;j++)
if(i+j>=5)
s=s*pow(a[i][j],1.0/3);
printf("\n%.3lf",s);
return0;
}
6.编写程序,实现一维数组A[10]元素值循环左移4位(要求用指针实现)。
例数组的原值:
12345678910
结果为:
78910123456
#include
#defineN10
#defineLM4
intmain()
{
inta[N],i;
for(i=0;i{
a[i]=i+1;
printf("%5d",a[i]);
}
printf("\n");
inttemp,*p;
for(i=0;i{
temp=*(a+N-1);
for(p=a+N-1;p>a;p--)
*p=*(p-1);
*p=temp;
}
For(i=0;iprintf("%5d",a[i]);
printf("\n");
return0;
}
8.编写程序,建立一个有10个元素组成的一维数组(该数组已存放9个数据,数据自定,并已按降序排列),要求从键盘输入一个数据,并将其插入到数组适当位置,即插入后的数组仍按降序排列,最后将结果输出(要求用指针实现)。
#include
intmain()
{inta[10]={3,6,7,9,12,16,18,20,90},i,x,*p;
p=a;
scanf("%d",&x);
i=8;
while(i>=0&&p[i]>x)
{p[i+1]=p[i];
i--;
}
p[i+1]=x;
for(i=0;i<10;i++)
printf("%4d",p[i]);
return0;
}
14.编写程序,把一个数组倒序,并输出倒序前、后的数据(要求用指针实现)。
例:
倒序前的数:
12345678
倒序后的数:
87654321
#include
intmain()
{inta[]={1,2,3,4,5,6,7,8},i,t,*p;
p=a;
for(i=0;i<4;i++)
{
t=p[i];
p[i]=p[7-i];
p[7-i]=t;
}
for(i=0;i<8;i++)
printf("%3d",p[i]);
return0;
}
15.已知一个一维数组(数据自定且不重复),然后从键盘上输入一个数x,若x在数组中存在,则删除该元素。
并输出删除后的数组(要求用指针实现)。
例:
若数组的数据为:
1234643789889799,x为37
则,结果为:
12346489889799
#include
intmain()
{inta[8]={12,34,64,37,89,88,97,99},i,x,*p,j;
p=a;
scanf("%d",&x);
i=0;
while(i<=7&&p[i]!
=x)
i++;
for(j=i;j<8;j++)
p[j]=p[j+1];
for(i=0;i<8;i++)
printf("%4d",p[i]);
return0;
}
16.编写程序,查找一个由大到小的一维数组array[20]={281,279,268,266,258,251,234,228,217,208,
162,160,158,139,137,127,124,122,115,110},使用折半(二分)查找法查找268是否在该数组中,若在输出268在该数组中的位置,否则输出“不存在该数”。
结果:
2
#include
#defineN20
intmain()
{
intarray[N]={281,279,268,266,258,251,234,228,217,208,162,160,158,139,137,127,124,122,115,110};
ints=0,e=N-1;
intmid=(s+e)/2;
while(s<=e)
{
if(array[mid]==268)
{
printf("%dinthelocationof%d\n",268,mid);
return0;
}
elseif(array[mid]>268)
{
s=mid+1;
mid=(s+e)/2;
}
else
{
e=mid-1;
mid=(s+e)/2;
}
}
printf("不存在!
\n");
return0;
}
20.编写程序,实现一维数组A[10]元素值循环右移4位(要求用指针实现)。
例数组的原值:
12345678910
结果为:
56789101234
#include
#defineN10
#defin