⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 练习(三).txt

📁 谭浩强的C语言题集
💻 TXT
📖 第 1 页 / 共 3 页
字号:
		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 + -