C统考习题答案(60)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

统考复习题
1. 编写程序,用牛顿切线法求方程f(x)=x+㏑x-1.56=0的近似实根r,迭代初值为2,精确
到0.0001。

(注意:㏑x是以e为底的自然对数)(提示:牛顿切线法的计算公式为x=x-f(x)/f′(x)).
#include "stdio.h"
#include "math.h"
void main()
{float x0,x1;
x0=2;
x1=x0-(x0+log(x0)-1.56)/(1+1/x0);
do
{x0=x1;
x1=x0-(x0+log(x0)-1.56)/(1+1/x0);}
while(fabs(x0-x1)>1e-4);
printf("x=%10.4f\n",x1);
}
运行结果:x= 1.2987
2. 编写程序,用牛顿切线法求方程f(x)= x+㏒x-
3.18=0的近似实根r,迭代初值为2.5,
(提示:必须把方程f(x)=0要求结果保留4位小数。

(注意:㏒x是以10为底常用对数lgx)
化成其等价形式x=g(x))(本题允许使用其他迭代法)
#include "stdio.h"
#include "math.h"
void main()
{float x0,x1;
x0=2.5;
x1=x0-(x0+log10(x0)-3.18)/(1+1/(x0*log(10)));
do
{x0=x1;
x1=x0-(x0+log10(x0)-3.18)/(1+1/(x0*log(10))); }
while(fabs(x0-x1)>1e-4);
printf("x=%10.4f\n",x1);
}
运行结果:x=2.
3. 编写程序,用普通迭代法求方程f(x)= x+㏒x-3.18=0的近似实根r,迭代初值为2.5,
(提示:必须把方程f(x)=0
(注意:㏒x是以10为底常用对数lgx)
要求结果保留4位小数。

化成其等价形式x=g(x))(本题允许使用其他迭代法)
要求:在运行程序时,使用文本框或InputBox函数输入迭代初值,并用适当的方法输出运算结果
#include "stdio.h"
#include "math.h"
void main()
{float x0,x1;
x0=2.5;
x1=3.18-log10(x0);
do
{x0=x1;
x1=3.18-log10(x0);}
while(fabs(x0-x1)>1e-4);
printf("x=%f\n",x1);
}
运行结果:x=2.
4. 编写程序,用牛顿切线法求方程f(x)=x^3+2x^2-14=0(其中^表示幂运算),在区间(0,
5)上的近似实根r,迭代初值自选,精确到0.0001。

{提示:牛顿切线法的计算公式为x=x-f(x)/ f’(x)}.
#include "stdio.h"
#include "math.h"
void main()
{float x0,x1;
x0=2.5;
x1=x0-(pow(x0,3)+2*pow(x0,2)-14)/(3*pow(x0,2)+4*x0) ;
do
{x0=x1;
x1=x0-(pow(x0,3)+2*pow(x0,2)-14)/(3*pow(x0,2)+4*x0) ;}
while(fabs(x0-x1)>1e-4);
printf("x=%f\n",x1);
}
运行结果:x=1.
5. 编写程序,用二分法求一元非线性方程f(x)=x+cosx-2.8=0在区间(0,5)上的近似实
根r,精确到0.0001。

#include "stdio.h"
#include "math.h"
double f(double x)
{ double y;
y=x+cos(x)-2.8;
return y;
}
double xpoint(double x1,double x2)
{ double y;
y=(x1*f(x2)-x2*f(x1))/(f(x2)-f(x1));
return y;
}
double root(double x1,double x2)
{ double x,y,y1;
y1=f(x1);
do
{ x=xpoint(x1,x2);
y=f(x);
if(y*y1>0) { y1=y;x1=x;} else x2=x;
}while(fabs(y)>=0.0001);
return x;
}
void main()
{ double x,x1,x2;
x1=0; x2=5;
if(f(x1)*f(x2)>0) printf("此区间无根");
else x=root(x1,x2);
printf("x=%8.4f\n",x );
}
/*x= 3.6657*/
6. 编写程序,用矩形法求一元函数f(x)=x^3+2x^2-12x-6(其中^示幂运算),在区间[3.5,
5]上的积分近似值S,保留2位小数(小区间数n=15,此参数不能改动,否则影响答案)。

#include "stdio.h"
#include "math.h"
double f(double x)
{ double y;
y=x*x*x+2*x*x-12*x-6;
return y;
}
void main()
{ int i,n;
double a,b,x,h,s;
n=15;
a=3.5; b=5.0;
h=(b-a)/n;
x=a;
s=0;
for(i=1;i<=n;i++)
{ x=x+h;
s=s+f(x)*h;
}
printf("s=%6.2f\n",s);
}
运行结果:s=92.50
7. 编写程序,用矩形法求一元函数f(x)=x^3+2x^2-12x-6(其中^示幂运算),在区间[3.5,
5]上的积分近似值S,保留2位小数(小区间数n=25,此参数不能改动,否则影响答案)#include "stdio.h"
#include "math.h"
double f(double x)
{ double y;
y=x*x*x+2*x*x-12*x-6;
return y;
}
void main()
{ int i,n;
double a,b,x,h,s;
n=25;
a=3.5; b=5.0;
h=(b-a)/n;
x=a;
s=0;
for(i=1;i<=n;i++)
{ x=x+h;
s=s+f(x)*h;
}
printf("s=%6.2f\n",s);
}
运行结果:s=90.69
8. 要求:编写程序,用梯形法求一元函数f(x)= ㏑(x+1)+ x/3,在区间[1,4]上的积
分近似值S,保留3位小数(小区间数n=20,此参数不能改动)。

(注意:㏑x是以e 为底的自然对数)
在运行程序时,使用文本框或InputBox函数输入n值,并用适当的方法输出运算结果。

#include "stdio.h"
#include "math.h"
double f(double x)
{ double y;
y=log(x+1)+x/3.0;
return y;
}
double integ(double a, double b)
{ double s,x,h;
int n=20,i;
h=fabs(b-a)/n;
s=(f(a)+f(b))/2.0;
for(i=1;i<=n-1; i++)
{ x=a+i*h; s=s+f(x);}
s=s*h;
return s;
}
void main()
{ double s;
s=integ(1.0,4.0);
printf("s=%8.3f\n",s);
}
运行结果:s= 6.160
9. 编写程序,用梯形法求一元函数f(x)=7x^3+2x^2-12x-16(其中^表示幂运算),在区间[3,
5]上的积分近似植S,保留2位小数(小区间数n=25,此参数不能改动,否则影响答案)#include "stdio.h"
#include "math.h"
double f(double x)
{ double y;
y=7*x*x*x+2*x*x-12*x-16;
return y;
}
double integ(double a, double b)
{ double s,x,h;
int n=25,i;
h=fabs(b-a)/n;
s=(f(a)+f(b))/2.0;
for(i=1;i<=n-1; i++)
{ x=a+i*h; s=s+f(x);}
s=s*h;
return s;
}
void main()
{ double s;
s=integ(3.0,5.0);
printf("s=%8.2f\n",s);
}
运行结果:s=889.52
10. 编写程序,用矩形法求一元函数f(x)=7x^3+2x^2-12x-16(其中^表示幂运算),在区间
[5,7]上的积分近似值S,保留2位小数(小区间数n=15,此参数不能改动,否则影响答案)
#include "stdio.h"
#include "math.h"
double f(double x)
{ double y;
y=7*x*x*x+2*x*x-12*x-6;
return y;
}
void main()
{ int i,n;
double a,b,x,h,s;
n=15;
a=5.0; b=7.0;
h=(b-a)/n;
x=a;
s=0;
for(i=1;i<=n;i++)
{ x=x+h;
s=s+f(x)*h;
}
printf("s=%6.2f\n",s);
}
运行结果:s= 3201.43
11. 编写程序,用矩形法求一元函数f(x)=3x^3+2x^2+x+1(其中^表示幂运算),在区间[1,
3]上的积分近似值S,保留3位小数(小区间数n=15,此参数不能改动,否则影响答案)#include "stdio.h"
#include "math.h"
double f(double x)
{ double y;
y=3*x*x*x+2*x*x+x+1;
return y;
}
void main()
{ int i,n;
double a,b,x,h,s;
n=15;
a=1.0; b=3.0;
h=(b-a)/n;
x=a;
s=0;
for(i=1;i<=n;i++)
{ x=x+h;
s=s+f(x)*h;
}
printf("s=%8.3f\n",s);
}
运行结果:s=89.852
12. 编写程序,计算出1到500之间所有满足下列条件的整数的和:该整数的所有因子
(包括1,但不包括整数本身)之和等于整数本身。

#include "stdio.h"
void main()
{ int sum=0,i,j,s;
for(i=1;i<=500;i++)
{ s=0;
for(j=1;j<=i/2;j++)
if(i%j==0) s=s+j;
if(i==s) sum=sum+i;
}
printf("%d\n",sum);
}
13. 编写程序,界面如下。

统计在所有3位数中,其个位、十位、百位上的数码相加等于9
的数据个数。

点击“运行“按钮输出结果。

〈image.gif>
#include "stdio.h"
void main()
{ int i,a,b,c,sum=0;
for(i=100;i<=999;i++)
{ a=i/100;
b=(i-100*a)/10; /* b=(i%100)/10; */
c=i-100*a-10*b; /* c=i%10 ; */
if(a+b+c==9)sum++;
}
printf(" %d " ,sum);
}
14. 设计如图所示的运行界面,从键盘输入一批不少于10个数的任意数据,点击“计算”
按钮,将实现如下功能:去掉其中的最大数和最小数,输出剩余数据的平均值(保留两位小数)。

〈image001.gif>
#include "stdio.h"
void main()
{ int i;
float x,min,max,sum=0,ave;
scanf("%f",&x);
max=x; min=x; sum=sum+x;
for(i=1;i<10;i++)
{ scanf("%f",&x);sum=sum+x;
if(x>max) max=x;
if(x<min) min=x;
}
ave=(sum-max-min)/(i-2);
printf(" %5.2f " ,ave);
}
15. 编写程序,计算出300到810之间所有满足下列条件的整数的平方根和:整数能被其每
位数字的和整除。

要求:运行程序,将结果四舍五入保留4位小数,并采用适当的方式输出。

#include "stdio.h "
#include "math.h "
void main()
{ int i,a,b,c;
float sum=0;
for(i=300;i<=810;i++)
{ a=i/100;
b=(i-100*a)/10; /* b=(i%100)/10; */
c=i-100*a-10*b; /* c=i%10 ; */
if(i%(a+b+c)==0)sum=sum+sqrt(i);
}
printf(" %f " ,(int)(sum*10000+0.5)/10000.0);
}
16. 设计如下所示的运行界面,N表示一个八进制整数,按[确定]按钮后输出这个整数各位
数字位数之和,要求和为十进制数。

用可视化编程实现。

〈image067.gif>
17. 编写程序,计算出1000到5000之间能被3整除但不能被13整除的整数的所有的整数
的平方根的和。

保留4位小数
#include "stdio.h "
#include "math.h "
void main()
{ int i; float sum=0;
for(i=1000;i<=5000;i++)
if(i%3==0&&i%13!=0)sum=sum+sqrt(i);
printf("%5.4f" ,sum);
}
18. 编写程序,界面如下。

统计在所有3位数中,其个位、十位、百位上的数码相加等于
21的数据个数。

点击“运行”按钮输出结果。

〈image115.gif>
#include "stdio.h "
void main()
{ int i,a,b,c, sum=0;
for(i=100;i<=999;i++)
{ a=i/100;
b=(i-100*a)/10; /* b=(i%100)/10; */
c=i-100*a-10*b; /* c=i%10 ; */
if(a+b+c==21) sum++;
}
printf(" %d " ,sum);
}
19. 编写程序,计算出1000到9900之间所有能被3和7同时整除的整数之和。

#include "stdio.h "
void main()
{ int i;
long sum=0;
for(i=1000;i<=9900;i++)
if(i%3==0 && i%7==0) sum=sum+i;
printf("%ld" ,sum);
}
20. 设计如图所示的运行界面,从键盘输入不少于10个数的任意数据,点击“计算”按钮,
输出这些数据中最小的5个数的平均值(保留两位小数)。

<image005.gif>
21. 编写程序,从键盘输入一个3位正整数,试求其个、十、百位数之和(例如:136的各
位数之和为10)。

要求:用可视化程序设计出如下界面,点击“确认”按钮输出运算结果
#include "stdio.h"
void main()
{ int i,a,b,c, sum=0;
printf(" enter i: " );
scanf("%d" ,&i);
a=i/100;
b=(i-100*a)/10; /* b=(i%100)/10; */
c=i-100*a-10*b; /* c=i%10 ; */
sum=a+b+c;
printf(" i=%d,sum=%d " ,i,sum);
}
22.编写程序,计算并输出下面数列前n(设n=45)项中所有偶数项的和。

1*2*3,3*4*5,5*6*7,……,(2n-1)*2n*(2n+1),……
#include "stdio.h "
void main()
{ int n;
long sum=0;
for(n=2;n<=45;n=n+2)
sum=sum+(2*n-1)*(2*n)*(2*n+1);
printf("%ld" ,sum);
}
23. 编写程序,计算下面数列前n项(设n=50)中奇数项的和。

结果取4位小数。

1/(1*2*3),1/(2*3*4),1/(3*4*5),……,1/(n(n+1)(n+2),……
#include "stdio.h "
void main()
{ int n;
float sum=0;
for(n=1;n<=50;n=n+2)
sum=sum+1.0/(n*(n+1)*(n+2));
printf("%5.4f" ,sum);
}
24. 编写程序,计算并输出下面数列前n(设n=15)项的和。

用科学技术法表示结果,尾数
取4位小数。

1!,2!,3!,4!,……,n!,……(其中,!表示求阶乘)。

#include "stdio.h "
void main()
{ int n;
float sum=0,p=1;
for(n=1;n<=15;n++)
{p=p*n; sum=sum+p;}
printf("%5.4e" ,sum);
}
25. 编写程序,计算并输出下面数列前30项的和。

1*2*3,3*4*5,5*6*7,……,(2n-1)*2n*(2n+1),……
#include "stdio.h "
void main()
{ int n;
long sum=0;
for(n=1;n<=30;n++)
sum=sum+(2*n-1)*(2*n)*(2*n+1);
printf("%ld" ,sum);
}
26. 编写程序,计算并输出下面数列前40项的和,结果取6位小数,小数点后第5位四舍
五入。

2/3,4/5,6/7,8/9,10/11,12/13,14/15,……,(2n)/(2n+1)
要求:
在运行程序时,使用文本框或InputBox函数输入n值,并用适当的方法输出运算结果。

#include "stdio.h "
void main()
{ int n;
float sum=0;
for(n=1;n<=40;n++)
sum=sum+2.0*n/(2*n+1);
sum=(int)(sum*10000+0.5)/10000.0;
printf("%f" ,sum);
}
27. 编写程序,求下面数列前40项的和。

结果取4位小数。

1,1/2^4,1/3^4,1/4^4,……,1/n^4,……(其中,^表示幂运算)
#include "stdio.h" (1.0823)
#include "math.h"
void main()
{ int n;
float sum=0;
for(n=1;n<=40;n++)
sum=sum+1.0/pow(n,4);
printf("%5.4f" ,sum);
}
28. 编写程序,计算并输出下面数列前n项(设n=50)的和。

1*2,-2*3,3*4,-4*5,……,(-1)^(n-1)*n*(n+1),……(其中,^表示幂运算) #include "stdio.h "
void main()
{ int n,s=1;
int sum=0;
for(n=1;n<=50;n++)
{ sum=sum+s*n*(n+1); s=-s;}
printf("%d" ,sum);
}
29. 编写程序,计算并输出下面数列前n (设n=45)项中所有奇数项的和。

1*2,2*3,3*4,4*5,……,n*(n+1),……
#include "stdio.h "
void main()
{ int n;
int sum=0;
for(n=1;n<=45;n=n+2)
sum=sum+n*(n+1);
printf("%d" ,sum);
}
30. 编写程序,计算下面数列前n项(设n=50)中奇数的和。

结果取4位小数。

1/(1*2*3),1/(2*3*4),1/(3*4*5),……,1/(n(n+1)(n+2)),……
#include "stdio.h"
void main()
{ int n;
float sum=0;
for(n=1;n<=50;n=n+2)
sum=sum+1.0/(n*(n+1)*(n+2));
printf("%5.4f" ,sum);
}
31. 编写程序,求下面数列前50项的和。

结果取4位小数。

1,1/(3*3),1/(5*5),1/7*7),……,1/(2n-1)*(2n-1),……
#include "stdio.h "
void main()
{ int n;
float sum=0;
for(n=1; n<=50; n++ )
sum=sum+1.0/((2*n-1)*(2*n-1));
printf("%5.4f" ,sum);
}
32. 编写程序,计算并输出如下数列前35项的和。

-1*2*3,2*3*4,-3*4*5,……,(-1)^n*(n*(n+1)*(n+2)),……
(其中,(-1)^n表示-1的n次方)
#include "stdio.h "
void main()
{ int n,s=-1;
int sum=0;
for(n=1;n<=35;n++)
{ sum=sum+s*n*(n+1)*(n+2); s=-s; }
printf("%d" ,sum);
}
33. 编写程序,计算并输出下面数列中前n(设n=8)项的和。

结果取四位小数。

1/1!,1/2!,1/3!,1/4!,……,1/n!,……(其中,!表示求阶乘)
#include "stdio.h "
void main()
{ int n;
float sum=0,p=1;
for(n=1;n<=8;n++)
{ p=n*p; sum=sum+1.0/p; }
printf("%5.4f" ,sum);
}
34. 编写程序,计算并输出下列前35项的和,结果取4位小数。

1/2,2/3,3/4,4/5,5/6,6/7,7/8,……n/(n+1),……
#include "stdio.h "
void main()
{ int n;
float sum=0;
for(n=1;n<=35;n++)
sum=sum+1.0*n/(n+1);
printf("%5.4f" ,sum);
}
35. 编写程序,界面如下。

点击“运行”按钮输出下列三角形(要求用双循环实现):〈 image111.gif>
A
BBB
CCCCC
DDDDDDD
#include "stdio.h"
void main()
{
int i,j,k;
for(i=0;i<=3;i++)
{
for(k=1;k<=3-i;k++)
printf(" ");
for(j=0;j<=2*i;j++)
printf("%c",'A'+i);
printf("\n");
}
}
36. 编写程序,界面如下。

点击“运行“按钮以弹出对话框的形式输出下列三角形(要求用
双循环实现):<image127.gif>
ABCDE
ABCD
ABC
AB
A
#include "stdio.h"
void main()
int i,j,k;
for(i=0;i<=4;i++)
{ for(j=0;j<=4-i;j++)
printf("%c",'A'+j);
printf("\n");
}
}
37. 编写程序,界面如下。

点击“执行”按钮在对话框下面输出下列三角形(要求用双循环
实现): <image122.gif>
AAAAAAA
BBBBB
CCC
D
#include "stdio.h"
void main()
{
int i,j,k;
for(i=0;i<=3;i++)
{
for(k=1;k<=i;k++)
printf(" ");
for(j=0;j<=6-2*i;j++)
printf("%c",'A'+i);
printf("\n");
}
}
38. 编写程序,界面如下。

点击“运行”按钮在对话框游面输出下列三角形(要求用双循环
实现)〈image127.gif> A
ABC
ABCDE
ABCDEFG
#include "stdio.h"
void main()
{
int i,j,k;
for(i=0;i<=3;i++)
{ for(j=0;j<=2*i;j++)
printf("%c",'A'+j);
printf("\n");
}
}
39. 编写程序,界面如下。

点击“OK”按钮输出下列三角形(要求用双循环实现):
<image112.gif>
12345
123
1
#include "stdio.h"
void main()
{
int i,j,k;
for(i=0;i<=3;i++)
{
for(k=1;k<=i;k++)
printf(" ");
for(j=0;j<=6-2*i;j++)
printf("%c",'1'+j);
printf("\n");
}
}
40. 编写程序,建立一个有10个元素组成的一维数组(数据自定),然后从键盘输入一个数
据,如果数组中有与输入数据相同的元素,则删除所有这样的元素,并且后面的元素依次前移。

要求:用可视化程序设计出如下界面,点击“确定”按钮输出运算结果。

〈image049.gif> #include "stdio.h"
void main()
{ int s[11]={1,2,3,2,4,2,5,7,8,9};
int k=0,i,x;
printf("input x:");
scanf("%d",&x);
for(i=0;i<=9;i++)
if(s[i]==x) k++; else s[i-k]=s[i];
for(i=0;i<10-k;i++)printf("%d ",s[i]);
}
41. 编写程序,建立一个有10个元素组成的一维组数(数据自定),然后从键盘输入一个数
据,如果数据组中有与输入数据相同的元素,则删除所有这样的元素,后面的元素依次前移,否则将输入数据插入到数组的中间的位置。

要求:用可视化程序设计出如下界面,点击“确定”按纽,在另一个对话框中输出运算结果〈image049.gif>
#include "stdio.h"
void main()
{ int s[11]={1,2,3,2,4,2,5,7,8,9};
int k=0,i,x;
printf("input x:");
scanf("%d",&x);
for(i=0;i<=9;i++)
if(s[i]==x) k++; else s[i-k]=s[i];
if(k!=0)
{ for(i=0;i<=9-k;i++)
printf("%d ",s[i]);
printf("\n"); }
else
{for(i=9;i>=5;i--) s[i+1]=s[i];
s[i+1]=x;
for(i=0;i<=9+1;i++)printf("%d ",s[i]);
}
}
42. 编写程序,建立一个有10个元素组成的一维数组(数据自定),然后从键盘输入一个数
据,如果数组中有与输入数据相同的元素,则删除所有这样的元素,后面的元素依次前移,否则将输入的数据添加到数组的末尾。

要求:用可视化程序设计出如下界面,点击“确定”按钮,在另一个对话框中输出运算结果。

<image049.gif>
#include "stdio.h"
void main()
{ int s[11]={1,2,3,2,4,2,5,7,8,9};
int k=0,i,x;
printf("input x:");
scanf("%d",&x);
for(i=0;i<=9;i++)
if(s[i]==x) k++; else s[i-k]=s[i];
if(k!=0)
{ for(i=0;i<=9-k;i++)
printf("%d ",s[i]);
printf("\n"); }
else
{ s[i]=x;
for(i=0;i<=9+1;i++) printf("%d ",s[i]);
printf("\n");
}
}
43.编写一个处理二维数组的通用过程(函数或子程序),该过程可以对任意数值型二维数组求它最后一行和第一列中各元素平方根之和(即先求各元素的平方,然后再对该平方根求和,注意避免数组元素的重复计算)。

已知两个数组A和B(数据附后),编写主程序针对这两个数组分别调用以上过程得到两个结果SA和SB,要求主程序最后输出(3*SA)/(5*SB)。

(结果要求保留3位小数)
A 数组的数据如下:
33, 41, 53, 63
16, 32, 91, 70
42, 28, 42, 26
82, 22, 14, 56
B 数组的数据如下:
14, 12, 82, 33, 51
22, 61, 22, 12, 17
43, 12, 89, 20, 40
44. 设计如下所示的运行界面,A表示一个一维数组,要求按[确定]按钮后将该数组循环右
移一位输出,用可视化编程实现。

〈image081.gif>
45. 写一个处理二维数组的通用过程(函数或子程序),该过程可以对具有n*n结构的数值
型二维数组求它两条对角线上各元素平方根之和(即先求各元素的平方根,然后再对该平方根求和,注意避免数组元素的重复计算)。

已知两个数组A和B(数据附后),编写主程序针对这两个数组分别调用以上过程得到两个结果SA和SB,要求主程序(7*SA)
46.设计如图所示的运行界面,点击“运行”按钮,完成如下功能:由程序随机产生一个“5×5的二维数组,并且使每个数组元素n为0-100之间的正整数,输出数组中所有元素的平均值。

〈image027.gif>
47. 编写一个处理二维数组的通用过程(函数或子程序),该过程可以对任意数值型二维数
组求它两列中各元素平方根之和(即先求各元素的平方根,然后再对该平方根求和)。

已知两个数组A和B(数据附后),编写主程序针对这两个数组分别调用以上过程得到
3*SB)。

(结果要求保留3位小数)
两个结果SA和SB,要求主程序最后输出(2*SA)/(
48. 编写程序,电脑自动生产一个二维数组A(N,N),(N取5),计算每一行元素值的和。

要求:用可视化程序设计出如下界面,点击“计算”按钮,输出结果。

〈image087.gif>例图:输出结果可以如下图所示(仅做示例)〈image089.gif〉
49. 设计如图所示的运行界面,点击“运行”按钮,完成如下功能:由程序随机产生一个
4×6的二维数组,并分别输出数组中的最大元素及其两个下标的位置。

(注:小数点后保留2位有效数字)〈image035.gif>
#include "stdio.h"
#include "stdlib.h"
void main()
{ int i,j,x,a[4][6];
int r,w,max=0;
for(i=0;i<4;i++)
for(j=0;j<6;j++)
{ x=rand();
a[i][j]=x;
}
for(i=0;i<4;i++)
for(j=0;j<6;j++)
if(a[i][j]>max)
{ max=a[i][j]; r=i; w=j; }
printf("最大值:%d 行:%d 列:%d \n",max,r,w);
}
50. 设计如图所示的运行界面,点击“运行”按钮,完成如下功能:由程序随机产生一个
5×5的二维数组,并且使每个数组元素n为0—100之间的正整数,把小于所有元素平均值的数据存放到一个一维数组中并输出之。

〈image029.gif>
#include "stdio.h"
#include "stdlib.h"
void main()
{ int i,j,x,a[5][5],s[25];
int k,sum=0,ave;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
{
while(x=rand())
if(x>0&&x<=100)
{ a[i][j]=x;
sum=sum+a[i][j];
break;}
}
ave=sum/(5*5);
k=0;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
if(a[i][j]<ave) s[k++]=a[i][j];
for(i=0;i<k;i++)
{ printf("%6d",s[i]);
if((i+1)%5==0) printf("\n");
}
}
51. 设计如图所示的运行界面,点击“运行”按纽,完成如下功能:由程序随机产生一个
5×5的二维数组,并且使每个数组元素n为0—100之间的正整数,输出第三行元素中的最大者。

〈image017.gif>
#include "stdio.h"
#include "stdlib.h"
void main()
{ int i,j,x,max=0,a[5][5];
for(i=0;i<5;i++)
for(j=0;j<5;j++)
{
while(x=rand())
if(x>0&&x<=100)
{ a[i][j]=x;
break;}
}
for(i=2,j=0;j<5;j++)
if(a[i][j]>max) max=a[i][j];
printf("第三行元素最大值:%d\n",max);
}
52. 设计如图所示的运行界面,点击“运行”按钮,完成如下功能:由程序随机产生一个
5×5的二维数组,并且使每个数组元素n为0—100之间的正整数,输出第三行元素中的最大者。

〈image017.gif>
53. 设计如图所示的运行界面,点击“运行”按钮,完成如下功能:由程序随机产生一个
6×6的二维数组,并输出数组中的最小元素及最小元素所在列的所有元素之积。

(注:小数点后保留两位有效数字)<image033.gif>
#include "stdio.h"
#include "stdlib.h"
void main()
{ int i,j,x,a[6][6];
int r,w,min=32767;
double sum=1;
for(i=0;i<6;i++)
for(j=0;j<6;j++)
{ x=rand();
a[i][j]=x;
}
for(i=0;i<6;i++)
for(j=0;j<6;j++)
if(a[i][j]<min)
{ min=a[i][j]; w=j; }
for(i=0,j=w;i<6;i++)
sum=sum*a[i][j];
printf("最小值:%d 最小元素所在列之积:%15.2f\n",min,sum);
}
54. 编写程序,自动生成一个二维数组A(N,N),(N取5),计算每一列元素值的和。

要求:
可视化程序设计出如下界面,点击“计算”按钮输出运算结果。

<image092.gif>
55. 编写程序,界面如下:用循环和表达式生成下列数组,且在对话框下面输出该数组(或
者用另外的对话框输出)。

<image101.gif>
2 3 4 5
67 8 9
1011 12 13
56. 设计如图所示的运行界面,点击“运行”按钮,完成如下功能:由程序随机产生一个
5×5的二维数组,并且使每个数组元素n为0——100之间的正整数,输出数组中所有元素的平均值。

<image027.gif>
#include "stdio.h"
#include "stdlib.h"
void main()
{ int i,j,x,a[5][5];
int sum=0,ave;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
{
while(x=rand())
if(x>0&&x<=100) {a[i][j]=x; break;}
}
for(i=0;i<5;i++)
for(j=0;j<5;j++)
sum=sum+a[i][j];
ave=sum/(5*5);
printf("ave=%d\n",ave);
}
57. 设计如下所示的运行界面,A表示一个一维数组,要求按[确定]按钮后将该数组循环右
移一位输出,用可视化编程实现。

<image081.gif>
58. 已知在文本文件下载文件“20061.txt”右击,选择“目标另存为”)中共有500个记录,
每个记录是一个用“xx.xx”格式表示的实数,编程求出文件中第16个记录的实数是多少。

#include "stdio.h"
void main()
{FILE *fp1;
int m=0;float x;
fp1=fopen("20061.txt","r");
while(!feof(fp1))
{fscanf(fp1,"%f",&x);m++;
if(m==16){ printf("%f\n" ,x);break;}
}
fclose(fp1);
}
59. 已知在文本文件下载文件“20061.txt”(右击,选择“目标另存为”)中共有600个记录,每个记录是一个用“xx.xx”格式表示的实数,编程求出文件中其值小于30的最大实数首次出现第几个记录。

#include "stdio.h"
void main()
{ FILE *fp1;
int n=0,m=0;float x,max=0;
fp1=fopen("20061.txt","r");
while(!feof(fp1))
{fscanf(fp1,"%f",&x);m++;
if(x>max && x<30) {max=x;n=m;}
}
printf("%d\n" ,n);
fclose(fp1);
}
60.已知在文本文件下载文件“20062.txt”(右击,选择“目标另存为”)中共有500个记录,每个记录是用以下格式表示的5项数据(各数据间以空格分开):
学号姓名机试成绩笔试成绩平时成绩
nnnnnnnnn cccccc nn nn nn
(说明:n表示整型;c表示字符型;n的个数表示数据位数,例如nn表示两位整数,c 的个数表示字符位数)
求出前360人的平时成绩的平均成绩。

#include "stdio.h"
void main()
{ FILE *fp1;
int i,jcj,bcj,pcj,sum=0;long xh;
char xm[6];float ave;
fp1=fopen("20062.txt","r");
for(i=1;i<=360;i++)
{fscanf(fp1,"%ld%s%d%d%d",&xh,&xm,&jcj,&bcj,&pcj) ;
sum=sum+pcj;
}
ave=sum/360.0;
printf("%f\n" ,ave);
fclose(fp1);
}。

相关文档
最新文档