上海交大程序设计(C)_第二次上机实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验名称:循环结构程序设计和数组的应用
1、程序填空
下面程序的功能为:计算1~100之间的偶数之和,完成以下的程序并运行出正确的结果。# include
void main()
{int i,s=0;
/**************found*************/
i=2 ;
while(i<=100)
{s=s+i;
/**************found**************/
i+=2 ;
}
printf(“s=%d”,s);
}
结果:s=2550
2、程序改错
(1) 下面程序的功能为:计算10!,修改以下的程序并上机运行通过。
#include
void main()
{int n,t;
for(n=1,t=1,t<10,t++);for(n=1,t=1;t<=10;t++)
n=n*t;
printf(“10!=%d\n”,n);
}
结果:10!=3628800
(2) 下面程序的功能为:计算1~100之间能被3和7整除的数之和,修改以下的程序并上机运行通过。
#include
void main()
{int i,s;
s=0;s=0; i=1;
while(i<=100);;
{if(i%3==0||i%7==0){if(i%3==0&&i%7==0)
s+=i;
i=i+1;
}
printf(“s=%d”,s);
}
结果:S=210
3、有一个分数序列:2/1、3/2、5/3、8/5、13/8、……,编写一个C程序,求出这个数列的前30项之和。
解:
#include
void main()
{
int i=1;
double t,x=1,y=2,sum=0;
while(i<=30)
{
sum=sum+y/x;
t=y;
y=y+x;
x=t;
i++;
}
printf("%f\n",sum);
}
结果:
4、编写程序,求1!+2!+3!+…+10!。
解:
#include
int sum = 0;
int CountSum(int value)
{
if(value == 1) return 1;
else
return value * CountSum(value - 1);
}
void main()
{ int i;
for(i = 1; i <= 10; i++)
{ /*累加*/
sum += CountSum(i);
}
printf("%d\n",sum);
}
运行结果:
数组的应用
1.程序填空
(1)下面程序的功能为:输入10个数字到数组中,统计其中正数的个数并求和,完成以下的程序并运行出正确结果。
#include
void main()
{ int i,a[20],sum,count;
sum=0;
count=0;
for(i=0;i<10;i++)
/**************found**************/
scanf(“%d“, &a[i] );
for(i=0;i<10;i++)
if(a[i]>0)
{count++;
/**************found**************/
sum+= a[i] ;
}
printf(“sum=%d,count=%d\n”,sum,count);
}
(2)下面程序的功能为:将3行4列的矩阵转置,如:
A= 128411109765321
A ’= 12
8411
731062951 完成以下的程序并运行出正确结果。
#include
void main()
{int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
int b[4][3],i,j;
for(i=0;i<=2;i++)
/**************found**************/
for( j=0;j<=3;j++ )
/**************found**************/
b[j][i]=a[i][j] ;
printf(“array b:\n “);
for(i=0;i<=3;i++)
{for(j=0;j<=2;j++)
printf(“%4d”,b [i][j]);
printf(“\n”);
}
}
2. 程序改错
(l) 阅读下面的程序,修改以下程序中的错误并上机运行。
#include
void main()
{int a[5],n;
for(n=0;n<=5;n++) for(n=0;n<=4;n++)
scanf(“%d”,&a); scanf(“%d”,&a[n]);
for(n=0;n<=5;n++) for(n=0;n<=4;n++)
printf(“%5d”,a[n]);
}
(2) 下面程序的功能为:有一个3×4的矩阵,要求输出最大元素的值,以及它的行号和列号,修改以下的程序并上机运行。
#include
void main()
{int max,i,j,r,c; static int a[3][4]={{12,9,-10,28},{31,19,10,-3},