编程练习及答案
1. 编一程序求出满足不等式1+1/2+1/3+...+1/n≥5的最小n值。
#include "stdio.h"
void main()
{
int n=1;
float s=0;
for (;s<5;n++)
s+=(float) 1/n;
printf("\nn=%d,s=%f",n,s);
}
2. 计算1+3+32+...+310的值并输出,假定分别用i,p,s作为循环变量、累乘变量和累加变量的标识符。
#include "stdio.h"
void main()
{
int i=1,p=1,s=1;
for (;i<=10;i++)
{ p=p*3;
s+=p;
}
printf("\n1+3+3*3+ =%d",s);
}
3. 求满足不等式22+42+...+n2<1000的最大n值,假定分别用i和s作为取偶数值和累加值的变量,并限定使用do循环编程。
#include "stdio.h"
void main()
{
int i=2,s=0;
do
{
s+=i*i;
i+=2;
} while(s<10);
i-=2;
s-=i*i;
printf("\n2*2+4*4+6*6+……+%d*%d=%d",i,i,s);
}
4. 已知,求出并显示当x分别取-3.8, 6.4, 2.3, -4.2,8.9, 3.5, -5.0, 4.5时所对应的y值,要求把a定义为常量,其值设定为10.2,x的每个值由键盘输入,并假定用-100作为终止标志,求平方根函数为sqrt(x)。
#include "stdio.h"
#include "math.h"
#define a 10.2
void main()
{
float x,y;
scanf("%f",&x);
while((int) x!=-100)
{
if (x>0) y=3*a*x*x+4*a*x-1;
else y=sqrt(a*a+x*x);
printf("x=%f,y=%f\n",x,y);
scanf("%f",&x);
}
}
5. 求出从键盘上输入的10个整数中的最大值,要求输入变量用x表示,存储最大值的变量用max表示。
#include "stdio.h"
void main()
{
int i,x,max;
scanf("\n%d",&x);
max=x;
for (i=1;i<10;i++)
{
scanf("\n%d",&x);
if (x>max) max=x;
}
printf("max=%d\n",max);
}
6. 已知6≤a≤30,15≤b≤36,求满足不定方程2a+5b=126的全部整数组解。如(13, 20)就是一个整数组解,并以所给的样式输出每个解。
#include "stdio.h"
void main()
{
int a,b;
for (a=6;a<31;a++)
for (b=15;b<37;b++)
if (2*a+5*b==126) printf("a=%d,b=%d\n",a,b);
}
7. 某班级学生进行百米跑测试,规定成绩在12秒以内(含12秒)为优秀,在12秒以上至15秒为达标,在15秒以上为不达标,编一程序,从键盘上输入每个人的成绩,以x作为输入变量,并以小于0的任何数作为终止标志,分别用变量c1,c2和c3统计出成绩为优秀、达标和不达标的人数。
#include "stdio.h"
void main()
{
int c1=0,c2=0,c3=0;
int x;编程递归函数
scanf("\n%d",&x);
for (;x>0;)
{
if (x<=12)
c1++;
else if (x<=15)
c2++;
else
c3++;
scanf("\n%d",&x);
}
printf("c1=%d,c2=%d,c3=%d\n",c1,c2,c3);
}
8. 编写一个函数,分别求出由指针a所指向的字符串中包含的每种十进制数字出现的次数,把统计结果保存在数组b的相应元素中。
#include "stdio.h"
void total(char *a,int n,int *b)
{
int i;
for (i=0;i<n;i++)
switch (a[i])
{
case '0':b[0]++;break;
case '1':b[1]++;break;
case '2':b[2]++;break;
case '3':b[3]++;break;
case '4':b[4]++;break;
case '5':b[5]++;break;
case '6':b[6]++;break;
case '7':b[7]++;break;
case '8':b[8]++;break;
case '9':b[9]++;break;
}
}
void main()
{
char a[20];
static int b[10];
int i;
scanf("\n%s",a);
total(a,20,b);
for (i=0;i<10;i++)
printf("b[%d]=%d\n",i,b[i]);
}
9. 按照下面函数原型语句编写一个函数,返回二维数组a[m][n]中所有元素的平均值,假定采用变量v存放平均值。
#include "stdio.h"
float avg(int a[][4],int m,int n)
{
int i,j;
float v=0.;
for (i=0;i<m;i++)
for (j=0;j<n;j++)
v+=a[i][j];
return v/(m*n);
}
void main()
{
int a[3][4];
int i,j;
for (i=0;i<3;i++)
for (j=0;j<4;j++)
scanf("\n%d",&a[i][j]);
printf("sum=%f\n",avg(a,3,4));
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论