📄 练习(三).txt
字号:
printf("The is fangcheng jie is %6.3f\n",r);
}
42、若输入一个整数10,以下程序的运行结果是________。
void main()
{
int a,e[10],c,i=0;
printf("输入一整数\n");
scanf("%d",&a);
while(a!=0)
{
c=sub(a);
a=a/2;
e[i]=c;
i++;
}
for(;i>0;i--) printf("%d",e[i-1]);
}
sub(int a)
{
int c;
c=a%2;
return c;
}
43、以下程序的功能是计算下面函数的值,请填空。
F(x,y,z)=sin(x)/(sin(x-y)*sin(x-z))+sin(y)/(sin(y-z)*sin(y-x))+sin(z)/(sin(z-x)*sin(z-y))
#include<stdio.h>
#include<math.h>
float f();
void main()
{
float x,y,z,sum;
printf("\ninput x,y,z:\n");
scanf("%f%f%f",&x,&y,&z);
sum=________;
printf("sum=%f\n",sum);
}
float f(float a,float b,float c)
{
float value;
value=________;
return value;
}
44、已有函数pow,现要求取消变量i后pow函数的功能不变。请填空。
修改前的pow函数
pow(int x,int y)
{
int i,j=1;
for(i=1;i<=y;++i) j=j*x;
return j;
}
修改后的pow函数
pow(int x,int y)
{
int j;
for(________; ________; ________) j=j*x;
return j;
}
45、以下程序的运行结果是输出如下图形。请填空。
*
* * *
* * * * *
* * * * * * *
* * * * *
* * *
*
#include<stdio.h>
void a(int i)
{
int j,k;
for(j=0;j<=7-i;j++) printf(" ");
for(k=0;k<________;k++) printf("*");
printf("\n");
}
void main()
{
int i;
for(i=0;i<3;i++) ________;
for(i=3;i>=0;i--) ________;
}
46、以下程序的功能是求三个数的最小公倍数,请填空。
#include<stdio.h>
max(int x,int y,int z)
{
if(x>y&&y>z) return x;
else if(________) return y;
else return z;
}
void main()
{
int x1,x2,x3,i=1,j,x0;
printf("Input 3 number:");
scanf("%d%d%d",&x1,&x2,&x3);
x0=max(x1,x2,x3);
while(1)
{
j=x0*i;
if(________) break;
i=i+1;
}
printf("The is %d %d %d zuixiaogongbei is %d\n",x1,x2,x3,j);
}
47、函数gongyu的作用是求整数num1和num2的最大公约数,并返回该值,请填空。
gongyu(int num1,int num2)
{
int temp,a,b;
if(num1________num2)
{
temp=num1; num1=num2; num2=temp;
}
a=num1; b=num2;
while(________)
{
temp=a%b; a=b; b=temp;
}
return a;
}
48、以下程序的运行结果是________。
void main()
{
int x=2,y=3,z=0;
printf("(1) x=%d y=%d z=%d\n",x,y,z);
add(x,y,z);
printf("(3) x=%d y=%d z=%d\n",x,y,z);
}
add(int x,int y,int z)
{
z=x+y; x=x*x; y=y*y;
printf("(2) x=%d y=%d z=%d\n",x,y,z)
}
49、下面函数pi的功能是:根据以下公式,返回满足精度(0.0005)要求的π的值,请填空。
π/2=1+1/3+(1/3)*(2/5)+(1/3)*(2/5)*(3/7)+(1/3)*(2/5)*(3/7)*(4/9)+...
#include<conio.h>
#include<math.h>
#include<stdio.h>
double pi(double eps)
{
double s,t; int n;
for(________; t>eps; n++)
{
s+=t;
t=n*t/(2*n+1);
}
return ________;
}
void main()
{
double x;
printf("\nPlease enter a precision: ");
scanf("%lf",&x);
printf("\neps=%lf,π=%lf",x,pi(x));
}
50、下面是一个计算阶乘的程序。程序中的错误语句是________,应改为________。
#include "stdio.h"
double factorial(int);
void main()
{
int n;
printf("Enter an integer: ");
scanf("%d",&n);
printf("\n\n%d!=%lg\n\n",n,factorial(n));
}
double factorial(int n)
{
double factorial(int n)
{
double result=1.0;
while(n>1||n<170) result*=-n;
return result;
}
}
51、函数f中的形参a为一个10×10的二维数组,n的值为5,以下程序段的运行结果为________。
f(int a[10][10],int n)
{
int i,j,k;
j=n/2+1;
a[1][j]=1;
i=1;
for(k=2;k<=n*n;k++)
{
i=i-1; j=j+1;
if(i<1)&&(j>n)) {i=i+2;j=j-1;}
else
{
if(i<1) i=n;
if(j>n) j=1;
}
if(a[i][j]==0) a[i][j]=k;
else {i=i+2; j=j-i; a[i][j]=k;}
}
}
52、下面函数func的功能是________。
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
long func(long num)
{
long k=1;
num=labs(num);
do{
k*=num%10;
num/=10;
}while(num);
return k;
}
void main()
{
long n;
printf("\nPlease enter a number: ");
scanf("%ld",&n);
printf("\nThe product of its digits is %ld.",func(n));
}
53、以下程序的运行结果是________。
#include<stdio.h>
void main()
{
printf("FACT(5): %d\n",fact(5));
printf("FACT(1): %d\n",fact(1));
fact(-5);
}
fact(int value)
{
if(value<0) { printf("FACT(<0):Error!\n"; return -1;}
else if(value==1||value==0) return 1;
else return(value*fact(value-1));
}
54、以下程序的功能是用递归方法计算学生的年龄,已知第一位学生年龄最小,为10岁,其余学生一个比一个大2岁,求第5位学生的年龄。请填空。
递归公式如下:
age(n)=10 (n=1)
age(n)=age(n-1)+2 (n>1)
#include<stdio.h>
age(int n)
{
int c;
if(n==1) c=10;
else c=________;
return c;
}
void main()
{
int n=5;
printf("age: %d\n",________);
}
55、下面程序的功能是________,运行结果是________。
long fib(int g)
{
switch(g)
{
case 0: return 0;
case 1: case 2: return 1;
}
return fib(g-1)+fib(g-2);
}
void main()
{
long k;
k=fib(7);
printf("k=%d\n",k);
}
56、下面程序的运行结果是________。
void main()
{
int i=5;
printf("%d\n",sub(i));
}
sub(int n)
{
int a;
if(n==1) return 1;
a=n+sub(n-1);
return 1;
}
57、以下程序是应用递归算法求某数a的平方根,请填空。求平方根的迭代公式如下:
x1=(x0+a/x0)/2
#include<math.h>
double mysqrt(double a,double x0)
{
double x1,y;
x1=________;
if(fabs(x1-x0)>0.00001) y=mysqrt(________);
else y=x1;
return y;
}
void main()
{
double x;
printf("Enter x: "); scanf("%lf",&x);
printf("The sqrt of %f=%f\n",x,mysqrt(x,1,0));
58、以下程序的运行结果是________。
#include<stdio.h>
f(int a[])
{
int i=0;
while(a[i]<=10)
{
printf("%d",a[i]);
i++;
}
}
void main()
{
int a[]={1,5,10,9,11,7};
f(a+1);
}
59、以下程序的运行结果是________。
void main()
{
int a[3][3]={1,3,5,7,9,11,13,15,17}; int sum;
sum=func(a);
printf("\nsum=%d\n",sum);
}
func(int a[][3])
{
int i,j,sum=0;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
a[i][j]=i+j;
if(i==j) sum=sum+a[i][j];
}
return sum;
}
60、阅读下面程序,完成下列问题中的填空。
问题(1)此程序在调用函数f后的运行结果是________。
(2)若将函数f中的for(j=i+1;j<4;j++)改为for(j=0;j<3-i;j++),则程序的运行结果是________。
f(int s[][4])
{
int i,j,k;
for(i=0;i<3;i++)
for(j=i+1;j<4;j++)
{
k=s[i][j]; s[i][j]=s[j][i]; s[j][i]=k;
}
}
void main()
{
int s[4][4],i,j;
for(i=0;i<4;i++)
for(j=0;j<4;j++) s[i][j]=i-j;
f(s);
for(i=0;i<4;i++)
{
printf("\n");
for(j=0;j<4;j++)
printf("%4d",s[i][j]);
}
}
61、以下search函数的功能是利用顺序查找法从数组a的10个元素中对关键字m进行查找。顺序查找法的思路是:从第一个元素开始,从前向后依次与关键字比较,直到找到此元素或查找到数组尾部时结束。若找到,返回此元素的下标;若仍未找到,则返回值-1。请填空。
#include<stdio.h>
int search(int a[10],int m)
{
int i;
for(i=0;i<=9;i++) if(________) return i;
return -1;
}
void main()
{
int a[10],m,i,no;
...
no=search(________);
if(________) printf("\nOK FOUND! %d",no+1);
else printf("\nSorry Not Found!");
}
62、已定义一个含有30个元素的数组s,函数fav1的功能是按顺序分别赋予各元素从2开始的偶数,函数fav2则按顺序每五个元素求一个平均值,并将该值放在数组w中。请填空。
#define SIZE 30
fav1(float s[])
{
int k,i;
for(k=2,i=0;i<SIZE;i++)
{
________;
k+=2;
}
}
fav2(float s[],float w[])
{
float sum; int k,i;
sum=0.0;
for(k=0,i=0;i<SIZE;i++)
{
sum+=s[i];
if(i+1)%5==0
{
w[k]=sum/5;
________;
k++;
}
}
}
void main()
{
float s[SIZE],w[SIZE/5],sum; int i,k;
fav1(s);
fav2(s,w);
}
63、以下程序的运行结果是________,其算法是________。
void main()
{
int a[5]={5,10,-7,3,7},i,t,j;
sort(a);
for(i=0;i<=4;i++) printf("%d",a[i]);
}
sort(int a[])
{
int i,j,t;
for(i=0;i<4;i++)
for(j=0;j<4;j++)
if(a[j]>a[j+1]{t=a[j];a[j]=a[j+1];a[j+1]=t;}
}
64、以下程序的运行结果是________,其算法是________。
void main()
{
int a[5]={9,6,8,3,-1},i,t,j,p;
sort(a);
for(i=0;i<=4;i++) printf("%d",a[i]);
}
sort(int a[])
{
int i,j,t,p;
for(j=0;j<4;j++)
{
p=j;
for(i=j;i<=4;i++)
if(a[i]<a[p]) p=i;
t=a[p];a[p]=a[j];a[j]=t;
}
}
65、函数del的作用是删除有序数组a中的指定元素x。已有调用语句n=del(a,n,x); 其中实参n为删除前数组元素的个数,赋值号左边的n为删除后数组元素的个数。请填空。
del(int a[],int n,int x)
{
int p,i;
p=0;
while(x>=a[p]&&p<n) ________;
for(i=p-1;i<n;i++) ________;
n=n-1;
return n;
}
66、以下程序的运行结果是________。
#include<stdio.h>
func(int array[][4],int m)
{
int i,j,k;
k=0;
for(i=0;i<3;i++)
for(j=0;j<4;j++) if(array[i][j]<m) k=k+array[i][j];
return k;
}
void main()
{
static int a[3][4]={{1,13,5,7},{2,4,26,8},{10,1,3,12}};
int i,j,m;
for(i=0;i<3;i++)
{
for(j=0;j<4;j++) printf("%4d",a[i][j]);
printf("\n");
}
m=10;
printf("\nthe value is %d\n",func(a,m));
}
67、函数swap(int x,int y)可完成对x和y值的交换。在运行调用函数中的如下语句后,a[0]和a[1]的值分别为________,原因是________。
a[0]=1; a[1]=2;
swap(a[0],a[1]);
68、函数swap(arr,n)可完成对arr数组从第1个元素到第n个元素两两交换。在运行调用函数中的如下语句后,a[0]和a[1]的值分别为________,原因是________。
a[0]=1; a[1]=2;
swap(a,2);
69、以下程序可计算10名学生1门课成绩的平均分,请填空。
float average(float array[10])
{
int i; float aver,sum=array[0];
for(i=1;________;i++) sum+=________;
aver=sum/10;
return(aver);
}
void main()
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -