C语言第六章习题汇总(22道)

1.#include<stdio.h>
int max(int a,int b)
{
	if(a>b) return a;
	else return b;
}
void main()
{
	int x,y,m;
	scanf("%d,%d",&x,&y);
	m=max(x,y);
	printf("max=%d",m);
}
2.直传递(单向传递):#include<stdio.h>
int max(int a,int b)
{
	int c;
	if(a>b) c=a;
	else c=b;
	a++;
	printf("a=%d\nb=%d\n",a,b);
	return c;
}
void main()
{
	int x,y,m;
	scanf("%d%d",&x,&y);
	m=max(x,y);
	printf("x=%d\n",x);
	printf("max=%d\n",m);
}
3.写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用
#include<stdio.h>
int fmax(int a,int b)
{
	int c,i;
	if(a<b)  c=a;
	else  c=b;
	for(i=c;i!=0;i--)
		if(a%i==0&&b%i==0)
			return i;	
}
int fmin(int a,int b)
{
	int c,j;
	if(a>b)  c=a;
	else  c=b;
	for(j=c;j!=0;j++)
		if(j%a==0&&j%b==0)
			return j;
}
void main()
{
	int x,y,max,min;
	scanf("%d%d",&x,&y);
	max=fmax(x,y);
	min=fmin(x,y);
	printf("max%d\nmin%d\n",max,min);	
}
4.主调函数在上,被调函数的声明:
#include<stdio.h>
void main()
{
	float add(float x,float y);
	float a,b,c;
	scanf("%f%f",&a,&b);
	c=add(a,b);
	printf("c=%f",c);
}
float add(float x,float y)
{
	float z;
	z=x+y;3
	return z;
}
5.输入五个数把小于零的数变为零再输出:
#include<stdio.h>
int nzp(int v)
{
	if(v>0) return v;
	else  return 0;
}
void main()
{
	int a[5],i,x;
	for(i=0;i<5;i++)
		scanf("%d",&a[i]);
	for(i=0;i<5;i++)
	{x=nzp(a[i]);
	printf("%d",x);
	}
}
6.求a的起始地址(与a[i]作比较):(结果与a[5]首先出现的位置有关)
#include<stdio.h>
void main()
{
	int a[5],i;
	for(i=0;i<5;i++)
		scanf("%d",&a[i]);
	printf("%d\n",a);	
	printf("%d\n",a+1);	
	printf("%d\n",a[0]);	
	printf("%d\n",a[1]);
}
7.#include<stdio.h>
float aver(float a[5])
{
	int i;
	float av,s=a[0];
	for(i=0;i<5;i++)
		s=s+a[i];
	av=s/5;
	return av;
}
void main()
{
	float sco[5],av;
	int i;
	printf("input 5 scores");
	for(i=0;i<5;i++)
	scanf("%d",&sco[i]);
	av=aver(sco);
	printf("%d",av);
}
8.无参的宏的形式:
#include<stdio.h>
#define M y*y+3*y
void main()
{
	int s,y;
	printf("please input a number:");
	scanf("%d",&y);
	s=3*M+4*M+5*M;
	printf("%d\n",s);
}
9.有参的宏的形式:
#include<stdio.h>
#define PI 3.1415926
#define s(r)PI*r*r
void main()
{
	float a,area;
	a=3.6;
	area=s(a);
	printf("%f\n""%f\n",a,area);
}
10.有参的宏中字符串的变量最好用括号之错题:
#include<stdio.h>
#define PI 3.1415926
#define s(r) PI*r*r
void main()
{
	float area;
	area=s(1+2);//area=PI*1+2*1+2;
	printf("%f\n",area);
}
11.有参的宏中字符串的变量最好用括号之正确题(1):
#include<stdio.h>
#define PI 3.1415926
#define s(r) PI*(r)*(r)
void main()
{
	float area;
	area=s(1+2);
	printf("%f\n",area);
}
12.有参的宏中字符串的变量最好用括号之正确题(2):
#include<stdio.h>
#define PI 3.1415926
#define s(r) PI*r*r
void main()
{
	float area;
	area=s((1+2));
	printf("%f\n",area);
}
13.条件编译
#include<stdio.h>
#define R 1
void main()
{
	float c,r,s;
	printf("input a number:\n");
	scanf("%d",&c);
# if R
	r=c;s=3.14159*r*r;
	printf("%d",s);
# else
	s=c*c;
	printf("%d",s);
# endif
}
14.递归调用
#include<stdio.h>
int age(int n)
{
	int c;
	if(n==1) c=10;
	else c=age(n-1)+2;
	return(c);
}
void main()
{	
	printf("%d",age(5));

}
15.
#include<stdio.h>
int s1,s2,s3;
int vs(int a,int b,int c)
{
	int v;
	v=a*b*c;
	s1=a*b;
	s2=b*c;
	s3=c*a;
	return v;
}
void main()
{
	int v,l,w,h;
	printf("input length width and height:");
    scanf("%d%d%d",&l,&w,&h);
	v=vs(l,w,h);
	printf("v=%d\n",v);
	printf("l=%d\n",l);
	printf("w=%d\n",w);
	printf("h=%d\n",h);
	printf("s1=%d\n",s1);
	printf("s2=%d\n",s2);
	printf("s3=%d\n",s3);
}

16.动态变量和静态变量的比较之动态变量:
答案为:1 1 1 1 1
#include<stdio.h>
#include<iomanip.h>
void f()
{
	int j=0;//j默认为是动态变量auto
	j++;
	printf("  j=%d",j);
}
void main()
{
	int i;
	for(i=1;i<=5;i++)
		f();
	printf("\n");
}
17.动态变量和静态变量的比较之静态变量:
答案为:1 2 3 4 5
#include<stdio.h>
#include<iomanip.h>
void f()
{
	static int j=0;//j是静态变量
	j++;
	printf("  j=%d",j);
}
void main()
{
	int i;
	for(i=1;i<=5;i++)
		f();
	printf("\n");
}
18.两个源文件共同执行:
(1)#include<stdio.h>
extern void f();
extern int k;
int main()
{
	int i;
	for(i=1;i<=5;i++)
		f();
	printf("  %d",k);
	return 0;
}
(2)#include<stdio.h>
extern int k=100;
void f()
{
	static int j=0;
	j++;
	printf("  %d",j);
}
19.自定义函数
#include<stdio.h>
void star(){
	printf("*******************\n");
}
void main()
{
	star();
	printf("holle\n");
	star();
}
20.定义函数,求最大值
int max(int a,int b)
{
	int c;
	if(a>b) c=a;
	else c=b;
	return c;
//return c;的作用是使max()输出c的值,即最大值
}
#include<stdio.h>
void main()
{
	int x,y,m;
	scanf("%d%d",&x,&y);
	m=max(x,y);
	printf("max=%d",m);
}
21.最大值
int max(int a,int b)
{
	if(a>b) return a;
	else return b;	
}
#include<stdio.h>
void main()
{
	int x,y,m;
	scanf("%d""%d",&x,&y);
	m=max(x,y);
	printf("max=%d",m);
}
22.(素数)
#include<stdio.h>
int max(int x)
{   int a,i;
   if(x=1) a=-1;return a;
	for(i=2;i<=x/2;i++)
	{	if(x%i==0){break;
	a=-1;}
    	else a=1;}
		return a;
}

void main()
{
	int x,i,m;
	scanf("%d",&x);
	m=max(x);
	if(m==-1)
		printf("no!%d");
	else
		printf("yes!%d");

	
}
发布了10 篇原创文章 · 获赞 10 · 访问量 129

猜你喜欢

转载自blog.csdn.net/helo_world01/article/details/104234403