2014版C++实验答案完整版
实验1 顺 序 结 构
任务1 熟悉C语言程序运行环境 【上机内容】
1(输入并运行以下程序,观察运行结果。
#include "stdio.h"
main()
{
printf("*********************\n");
printf(" very good!\n");
printf("*********************\n");
}
运行结果:
*********************
very good~
*********************
2(输入并运行以下程序,观察运行结果。
#include
int main(void)
{
int num1, num2;
num1=1; num2=2;
printf("num1+num2=%d", num1+num2);
}
运行结果:
num1+num2=3
任务2 简单的C语言程序
【上机内容】
1(输入并运行以下程序,观察运行结果。
#include "stdio.h"
main()
{ float x=10,y;
printf("\n2.4*x-1/2=%f",2.4*x-1.0/2);
printf("\nx%%2/5-x=%f",(int)(x)%2/5-x);
printf("\n(x-=x*10,x/=10)=%d\n",(x-=x*10,x/=10));
return 0;
}
运行结果:
2.4*x-1/2=23.500000
x%2/5-x=-10.000000
(x-=x*10,x/=10)=0
2(输入并运行以下程序,观察运行结果。
#include "stdio.h"
main( )
{ int a,x,y;
x=(a=2,6*2);
y=a=2.6 *a;
printf("x=%d,y=%d\n",x,y);
}
运行结果:
x=12,y=5
3(输入并运行以下程序,观察运行结果。
#include "stdio.h" main()
{
char c1,c2;
c1=97;c2=98;
printf("%c,%c", c1, c2); }
运行结果:
a, b
将c1=97;c2=98;改为如下语句,再运行,并分析其运行结果。 c1=300; c2=400;
运行结果:
,,怭(或,,?)
(分析下面程序,写出运行结果,再输入计算机中运行,将得到的结果与分析得到的结果4
比较对照。
#include "stdio.h"
main()
{
char c1='a',c2='b',c3='c',c4='\101',c5='\116';
printf("a%c b%c\tabc%c \n",c1,c2,c3);
printf("\t\b%c %c",c4,c5); }
运行结果:
aa bb abcc
A N
5(分析下面程序,写出运行结果,再输入计算机中运行,将得到的结果与分析得到的结果
比较对照。
#include "stdio.h"
main()
{
int i , j , m , n ;
i=8; j=10;
m=++i; n=j++;
printf("%d,%d,%d,%d",i,j,m,n);
}
运行结果:
9,11,9,10
分别进行以下改动后,先分析结果,再运行对照。 (1)将m=++i; n=j++;改为如下:
m=i++; n= ++ j;
运行结果:
9,11,8,11
(2)程序改为如下:
#include "stdio.h"
main()
{
int i , j ;
i=8; j=10;
printf("%d,%d", i++, j++);
}
运行结果:
8,10
(3)程序改为如下:
#include "stdio.h"
main()
{
int i , j ;
i=8; j=10;
printf("%d,%d", ++ i, ++ j);
}
运行结果:
9,11
(4)程序改为如下:
#include "stdio.h"
main()
{
int i , j ;
i=8; j=10;
printf("%d,%d,%d,%d",i,j,i++,j++);
}
运行结果:
8,10,8,10
(5)程序改为如下:
#include "stdio.h"
main()
{
int i , j , m=0 , n=0 ;
i=8; j=10;
m+= i ++; n-= --j;
printf("i=%d,j=%d,m=%d,n=%d",i,j,m,n);
}
运行结果:
i=9,j=9,m=8,n=-9
任务3 各种类型数据的输入/输出
【上机内容】
1(按格式要求输入、输出数据。
程序请单如下:
#include "stdio.h"
main()
{
int a,b;
flost x,y;
char c1,c2;
scanf("a=%d,b=%d",&a,&b);
scanf("%f, %e",&x,&y);
scanf("%c %c",&c1,&c2); /*录入时%c与%c之间有个空格*/
printf("a=%d,b=%d,x=%f,y=%f,c1=%c,c2=%c\n",a,b,x,y,c1,c2);
}
运行该程序,必须按如下方式在键盘上输入数据:
a=3,b=7 ?
8.5,71.82a A ? (注解:a与A之间输入一个空格,且a紧跟71.82后写,不要空格)
请写出输出结果。
运行结果:
a=7,b=3,x=8.500000,y=71.820000,c1=a,c2=A
2(输入三角形的三条边长,求三角形面积。
程序清单如下:
#include "stdio.h"
#include "math.h"
main()
{
float a,b,c,s,area;
scanf("%f ,%f,%f",&a,&b,&c); s=1.0/2*(a+b+c);
area=sqrt(s*(s-a)*(s-b)*(s-c)); printf("area=%f",area); }
运行结果:(具体情况根据自己输入的数据而定) 如在键盘上输入:3,4,5?
则运行结果为:
area=6.000000
3(已知圆半径、圆柱高、求圆周长、圆柱体积。
程序清单如下:
#include "stdio.h"
main()
{
float r,h,l,v,pi;
pi=3.1415926;
scanf("%f,%f",&r,&h); l=2*pi*r;
v=pi*r*r*h;
printf("圆周长为:%6.2f\n",l);
printf("%圆柱体积为:6.2f",v);
}
运行结果:(具体情况根据自己输入的数据而定) 如在键盘上输入:5,6?
则运行结果为:
圆周长为:31.42
圆柱体积为:471.24
4(输入一个摄氏温度,要求输出华氏温度,公式为f = 5/9?c+32。
程序清单如下:
#include "stdio.h"
main()
{
float c,f;
scanf("%f",&c);
f=5.0/9*c+32;
printf("%5.2f\n",c);
}
运行结果:(具体情况根据自己输入的数据而定) 如在键盘上输入:37?
则运行结果为:
52.56
实验2 选 择 结 构
【上机内容】
1(修改程序如下:
#include "stdio.h"
main()
{ int x; scanf("%d",&x);
if(x==10) printf("==\n");
else printf("!=\n");
}
2(修改程序如下:
#include "stdio.h"
main()
{ int a,b,c;
scanf("%d,%d,%d",&a,&b,&c);
if (a==b)
{ if(b==c)
printf("a==b==c");
}
else
printf("a!=b");
}
或者
#include "stdio.h"
main()
{ int a,b,c;
scanf("%d,%d,%d",&a,&b,&c);
if (a==b)
if(b==c)
printf("a==b==c");
else
;
else
printf("a!=b");
}
3程序填空如下:如果输入的数据c为大写英文字母,则将其转换成对应的小写字母输出,
否则以原值输出。
#include
main()
{ char c;
scanf("%c",&c);
if(c>=?A?&&c<=?Z?)
c=c+32;
printf("\n%c",c);
}
4(有以下程序,执行后输出结果为____4_____。
#include "stdio.h"
main()
{ int a=1,b=2,c=3,d=4;
if(a函数关系,编写程序输入x,输出y值。
xx(1),,, ?yxx,,,21(110),
,?311(10)xx,,
源程序如下:
#include"stdio.h"
main()
{float x,y;
scanf("%f",&x);
if(x<1) y=x;
if(x>=1&&x<10) y=2*x-1; if(x>=10) y=3*x-11; printf("%f",y);
}
8( 输入一个百分制分数,要求输出对应的成绩等级:90,100为‘A’,80,89为‘B’,
70,79为‘C’,60,69为‘D’,不及格为‘E’。 源程序如下:
#include
main()
{ float score;
printf("请输入成绩:");
scanf("%f",&score);
if (score>=90)
printf("A\n");
else if(score>=80)
printf("B\n");
else if (score>=70)
printf("C\n");
else if (score>=60)
printf("D\n");
else
printf("E\n");
}
9(给一个不多于3位的正整数,编写程序完成以下要求: (1)求出它是几位数;
(2)分别输出每一位数字;
(3)按逆序输出各位数字,例如,原数为321,应输出123。 源程序如下:
#include"stdio.h"
main()
{int a,b,c,x;
scanf("%d",&x);
a=x/100;
b=(x%100)/10;
c=x%10;
if (a!=0) printf("三位数,%d,%d,%d,%d%d%d",a,b,c,c,b,a);
else if(b!=0) printf("两位数,%d,%d,%d%d",b,c,c,b);
else printf("一位数,%d,%d",c,c);
}
任务2 switch语句程序设计
【上机内容】
1(有如下程序,执行后输出结果为____14____。
#include “stdio.h”
main ( )
{ int i=5;
switch(i)
{ case 4:i+=1;
case 5:i+=2;
case 6:i+=3;
default:i+=4;
}
printf("%d\n",i);
}
2(有以下程序段,若grade的值为'C',则输出结果是___ Medium!_
___ Pass!___。
switch(grade)
{ case 'A':printf("Excellent!\n");
case 'B':printf("Fine!\n");break;
case 'C':printf("Medium!\n");
case 'D':printf("Pass!\n");break;
default:printf("Fail!\n");
}
3(有以下程序,执行后输出结果为____a=3,b=5________。
#include “stdio.h”
main()
{ int x=0,y=1,a=2,b=3;
switch(x)
{ case 0:
switch(y)
{ case 0: a++;
case 1: b++; break;
}
case 1: a++;b++; break;
case 2: a++;b++;
}
printf("\na=%d,b=%d",a,b);
}
4(将以下程序段改用switch语句来实现,使它完成相同的功能。
if(x>=0 && x<10) y=x;
else if(x<20) y=x*2+3;
else if(x<40) y=-0.5*x+10;
源程序如下:
#include "stdio.h"
main()
{ float x,y;
scanf("%f",&x);
switch((int)x/10)
{
case 0:y=x;break;
case 1:y=x*2+3;break;
case 3:y=-0.5*x+10;break;
}
printf("y=%f",y);
}
5(以下程序计算某年某月有几天,闰年与平年的2月天数不同。判别闰年的条件是:能被4整除但不能被100整除的年是闰年,或者能被400整除的年也是闰年。请分析程序填空。
#include “stdio.h”
main()
{ int yy,mm,days;
printf("input year and month:");
scanf("%d %d",&yy,&mm);
switch(mm)
{ case 1: case 3: case 5: case 7:case 8:
case 10:case 12:__days=31___;break;
case 4: case 6: case 9: case 11:days=30;break;
case 2:if(yy%4==0&&yy%100!=0||yy%400==0)____days=29_____________;
else days=28;
break;
default:printf("input error");break;
}
printf("the days of %d %d is %d\n",yy,mm,days);
}
6(假设奖金税率如下(ma代表税前奖金且ma>0,r代表税率),利用switch语句编写程序对输入的一个奖金数,输出税率和应交税款及实得奖金数(扣除奖金税后)。 ? 0?ma<1000时, tr=0%;
? 1000?ma<2000时, tr=5%;
? 2000?ma<4000时, tr=8%;
? 4000?ma时, tr=10%。
源程序如下:
#include"stdio.h"
main()
{ float ma,tr,y,s;
printf("请输入奖金");
scanf("%f",&ma);
switch ((int)ma/1000)
{ case 0: tr=0;break;
case 1:tr=0.05;break;
case 2:
case 3: tr=0.08;break;
default:tr=0.1;break;
}
y=tr*ma ;
s=ma-y;
printf("税率:%.2f,税款:%.2f,实得奖金:%.2f",tr,y,s);
}
实验3 循环结构(1)
任务1 while语句程序设计
【上机内容】
1(修改程序如下:
#include
main()
{ int x,y;
x=2; y=0;
while (!y--)
printf ("%d,%d\n",x, y);
}
2(下面程序中,while循环的循环次数为______6次______。
#include
main()
{ int i=0;
while(i<10)
{ if(i==5) break;
i++;
}
printf ("%d\n",i);
}
3(求1000以内奇数的和,请填空将下面的程序补充完整。
#include
main()
{ int i=1,sum=0;
while(i<=1000)
{ if(i%2!=0)
___sum=sum+i_______;
i ++;
}
printf("1000以内奇数的和:%d\n",sum);
}
4(编写程序。对输入的任意一个正整数按反序输出。例如,输入1247,输出7421。
源程序如下:
#include"stdio.h"
main()
{int x;
scanf("%d",&x);
while(x!=0)
{printf("%d",x%10);
x=x/10;
}
}
5(编写程序。输入两个正整数m和n,求其最大公约数与最小公倍数。
源程序如下:
#include"stdio.h"
main()
{ int m,n,r,a,b,t,z;
scanf("%d%d",&m,&n);
a=m,b=n;
r=m%n;
while(r!=0)
{ m=n;n=r,r=m%n;
}
z=a*b/n;
printf("最大公约数为:%d,最小公倍数为:%d\n",n,z);
}
任务2 do„while语句程序设计
【上机内容】
1(修改序如下:
#include
main()
{ int x=0;
do{
x++;
}while(x==2);
printf ("%d\n",x);
}
2(有以下两段程序,比较其结果,并分析结果不同的原因。
(1) 结果为 0
#include
main()
{ int x=0;
while(x<0) x++;
printf ("%d\n",x);
}
(2)结果为 1
#include
main()
{ int x=0;
do{ x++;
}while(x<0);
printf ("%d\n",x); }
3(运行下面程序,输出结果为_____105___________。 #include main( )
{ int i=1,s=1;
do{ if(i==9) break;
s=s*i;
i=i+2;
}while(i<20);
printf ("s=%d\n",s); }
4(运行下面程序,输出结果为__sum=4000_____。 #include main()
{ int x=0,sum=0;
do{ if(x==(x/5*5))
continue;
sum=sum+x;
}while (++x<100);
printf ("sum=%d\n",sum);
}
5(求1!+2!+3!+4!+5!+6!+7!+8!+9!+10!,请填空将下面的程序补充完整。
#include main()
{ int j, m,p,s ;
____s=0____________;
m=1 ;
do
{ ____p=1____________;
j=1 ;
while( j<=m )
{ p *= j ;
j++ ;
}
___s=s+p_____________;
m++ ;
} while(m<=10);
printf("s=%d\n", s ) ; }
6(输入任意一个正整数n,将n各位上为奇数的数取出,按原来从高位往低位相反的顺序
组成新的数并输出。比如:输入一个整数:17465238,输出:3571。
源程序如下:
#include"stdio.h"
main()
{int n,t,x=0;
scanf("%d",&n);
do{
t=n%10;
if(t%2!=0)
x=x*10+t;
n=n/10;
}while(n>0);
printf("%d\n",x); }
7(编写程序求出从100,999之间(含100和999)所有整数中各位上数字之和为x(x为
一个正整数,要求从键盘上输入)的整数的个数,比如:输入x=5时,满足条件的整数个
数为15,输入x=20时,满足条件的整数个数为36。 源程序如下:
#include"stdio.h"
main()
{ int x,n,s1,s2,s3,t;
scanf("%d",&x);
t=100; n=0;
do{
s3=t%10;
s2=(t/10)%10;
s1=t/100;
if(s1+s2+s3==x)
n++;
t++;
}while(t<=999);
printf("%d\n",n);
}
实验4 循环结构(2)
任务1 for语句程序设计 【上机内容】
1(修改程序如下:
#include
main()
{ int i;
for(i=1;i<10;i++)
printf ("%d\n",i);
}
2((修改程序如下:使sum的值为1+2+„+10的和。
#include
main()
{ int i=1,sum=0;
for(;i<=10;i++)
sum=sum+i;
printf ("sum=%d\n",sum);
}
3(运行下面程序,输出结果为__sum=15______。
#include
main()
{ int i,sum=0;
for(i=0;i<=10;i++)
{ sum=sum+i;
if(i==5) break;
}
printf ("sum=%d\n",sum); }
4(运行下面程序,输出结果为___sum=4000____。 #include
main() { int i,sum=0;
for(i=0;i<=100;i++)
{ if((i%5)==0) continue;
sum=sum+i;
}
printf ("sum=%d\n",sum); }
5(运行下面程序,输出结果为__sum=60_______。 #include
main() { int i,j,sum=0;
for(i=0;i<=3;i++)
for(j=0;j<=5;j++)
sum=sum+j;
printf ("sum=%d\n",sum); }
6(程序填空。求出1000以内能被13整除的最大数。 #include
main()
{ int i;
for(__i=1000__;__i>0_______;i--)
if (___i%13==0____)
break;
printf("\n%d",i); }
7(程序填空。求如下Fibonacci 数列1,1,2,3,5,8,„„ 的前40个数,要求每
一行输出8个数。
fn,,1(1),1, fn,,1(2),2,?fffn,,(3)nnn,,12,
程序清单如下:
#include
main( )
{ long int f1, f2 ;
int i ;
f1=1 ; f2=1 ;
for( i=1; _i<=20____; i++ )
{ printf("%10ld%10ld" ,f1, f2 ) ;
if(__i%4==0___) printf("\n") ;
f1 = f1 + f2 ;
f2 = f2 + f1 ;
}
}
8(程序填空。从键盘输入10个不为0的整型数,统计其中非正整数的个数并求出所有
正数的平均值。
#include
main()
{ int i, x, count ;
float ave ;
for( i=0, ave=0, count=0; i< 10 ; i++ )
{ scanf("%d", &x ) ;
if( x>0 )
ave +=__x_____;
else
___count++_____________;
}
if( count != 10 )
ave /= _10-count______;
printf("count:%d,Average:%f\n",count,ave ) ;
}
9(统计能被4整除且个位数为6的4位数的个数及和。
源程序如下:
#include
main()
{int i,sum=0,count;
count=0;
for(i=1000;i<10000;i++)
if(i%4==0&&i%10==6)
{sum=sum+i;
count++;}
printf("count:%d,sum:%d\n",count,sum);
}
23n10(输入数据n和x,计算级数和s=1+x+x/2!+x/3!+„+x/n!。
源程序如下:
#include
main()
{float j,i,t=1,m=1,n;float s=1,x;
scanf("%f%f",&n,&x);
for(i=1;i<=n;i++)
{t=t*x;m=m*i;
j=t/m;
s=s+j;}
printf("s:%f",s);
}
11(求2,100之间所有素数的个数及和。
源程序如下:
#include
main()
{ int x,i,c=0,s=0;
for(x=2;x<=100;x++)
{ i=2;
while (x%i!=0&&i<=x-1)
i++;
if(i==x)
{c++;s=s+x;}
}
printf("个数为:%d,和为:%d\n",c,s);
}
12(编写程序输出下面的数字金字塔。
1
222
33333
4444444
555555555
源程序如下:
# include
main()
{int i,j;
for(i=1;i<=5;i++)
{for (j=1;j<=2*i-1;j++)
printf("%d",i);
printf("\n");}
}
实验5 函数(1)
任务1 函数的定义和声明
1(预测下面程序的输出,并上机运行验证结果。(结果:12)
#include
unsigned fun(unsigned num)
{
unsigned k=1;
do
{ k*=num%10;num/=10; }
while(num);
return k;
}
main()
{
unsigned n=26;
printf("%d\n",fun(n));
}
2(分析推测下面程序的输出,并上机运行验证结果。(结果:21)
#include
func(int a,int b)
{
int c;
c=a+b;
return c;
}
main()
{
int x=6,y=7,z=8,r;
r=func((x--,y++,x+y),z--);
printf("%d\n",r);
}
3(若输入7654321,求以下程序的运行结果,并描述程序所完成的功能。
(结果:The result is:642。功能是:从低位开始取出长整形变量s中偶数位上的数,依次构成
一个新数放在t中,高位仍在高位,低位仍在低位。) #include
long fun (long s)
{long t,sl=10;
s /= 10;
t = s % 10;
while (s > 0)
{ s = s/100;
t = s%10*sl + t;
sl = sl * 10;
}
return t;
}
main()
{ long s,t;
scanf("%ld", &s);
t=fun(s);
printf("The result is: %ld\n", t);
}
4(上机调试下面计算两个整数之和的程序,系统给出的出错信息,指出出错原因并予
以改正。
正确代码为:
#include
/************found************/ int fun(int x, int y, int z) //函数名前要有类型(国二考试时函数类型是int也不能省),同时形参
的每个参数前都必须要有类型 {int j,t ,n ,m;
j = 1 ;
t=j%x;
m=j%y ;
n=j%z;
while(t!=0||m!=0||n!=0)
{j = j+1;
t=j%x;
m=j%y;
n=j%z;
}
/************found************/
return j; //注意变量的名称及含义
}
main()
{ int x1,x2,x3,j ;
printf("Input x1 x2 x3: "); scanf("%d%d%d", &x1,&x2,&x3);
printf("x1=%d, x2=%d, x3=%d \n",x1,x2,x3);
j=fun(x1,x2,x3);
printf("The minimal common multiple is : %d\n",j);
}
5(上机调试下面判断n是否是素数的程序,函数fun中有逻辑错误,调试并改正。
正确代码为:
#include
fun(int n)
{
int k,yes=1;
for(k=2;k<=n/2;k++)
/************found************/
if(n%k==0) {yes=0; break;} //反证法证明,找到一个就跳出,否则会被后面覆盖
else yes=1;
return yes;
}
main()
{
int n;
scanf("%d",&n);
/************found************/
if(fun(n)) //将main函数中的函数调用fun()改成fun(n),因为实参的个数应与形参对应
printf("%d:yes!\n",n);
else
printf("%d:no!\n",n);
}
6(下面程序中,函数fun的功能是根据形参m计算公式T=1/1!+1/2!+1/3!+„+1/m!的值,上
机调试,请改正程序中的错误。当从键盘输入10时,给出程序运行的正确结果(按四舍五
入保留10位小数)。
正确代码为:(输入10时的结果:1.7182818011) #include
/************found************/ double fun(int m); //先调用再定义,且不是能缺省的int型,请加上函数说明。 main()
{
int m;
printf("\n input m:");
scanf("%d",&m);
printf("\n t=%12.10lf \n",fun(m)); }
double fun(int m)
{
double fac,t=0.0;
int i=1,j;
/************found************/
for(i=1;i<=m;i++)
{
fac=1.0;
for(j=1;j<=i;j++) fac=fac*j; //逻辑有误,改为:for(j=1;j<=i;j++) fac=fac*j;这样才表示求i!,原程序行是求i的m次方。
t+=1.0/fac;
}
return t;
}
任务2 函数的嵌套调用
1(跟踪调试下面程序,注意函数调用的过程中形参、实参的关系。记录并分析结果;将形参a,b对应改为x,y,使之与实参变量同名,记录并分析结果。
#include
main( )
{
int x=2,y=5;
void swap(int,int);
printf("(1) in main: x=%d,y=%d\n",x,y);
swap(x,y);
printf("(4) in main: x=%d,y=%d\n",x,y);
}
void swap(int a,int b)
{
int t;
printf("(2) in swap: a=%d,b=%d\n",a,b);
t=a;
a=b;
b=t;
printf("(3) in swap: a=%d,b=%d\n",a,b);
}
}
结果:
(1) in main: x=2,y=5
(2) in swap: a=2,b=5
(3) in swap: a=5,b=2
(4) in main: x=2,y=5
将形参a,b对应改为x,y 结果:
(1) in main: x=2,y=5
(2) in swap: x=2,y=5
(3) in swap: x=5,y=2
(4) in main: x=2,y=5
结论:无论实参、形参是否同名,交换的只是子函数(swap)中两个变量的值。主函数中的x,y的值没有变。
2(若输入2、3,求以下程序的运行结果,分析函数嵌套调用的执行过程。
#include long sum(int a,int b); long factorial(int n); main()
{
int n1,n2;
long a;
scanf("%d,%d",&n1,&n2);
a=sum(n1,n2);
printf("a=%ld",a); }
long sum(int a,int b) {
long c1,c2;
c1=factorial(a);
c2=factorial(b);
return(c1+c2);
}
long factorial(int n) {
long rtn=1;
int i;
for(i=1;i<=n;i++)
rtn*=i;
return(rtn);
}
(结果为:a=8。程序功能:求n1!+n2! 即:2~+3~)
3(写出下面程序的输出结果。
#include "stdio.h" int abc(int u,int v); main ()
{
int a=24,b=16,c;
c=abc(a,b);
printf("%d\n",c); }
int abc(int u,int v)
{
int w;
while(v)
{ w=u%v; u=v; v=w;}
return u;
}
(程序功能:求两数的最大公约数即24,16的最大公约数。结果:8)
4(给定程序中,函数fun的功能是根据形参i的值返回某个函数的值。当调用正确时,程
序输出:x1=5.000000, x2=3.000000, x1*x1+x1*x2=40.000000。请在下划线处填入正确的内容,
使程序得出正确的结果。
#include double f1(double x) {return x*x;}
double f2(double x, double y)
{return x*y;}
/**********found**********/
double fun(int i, double x, double y) //函数的类型与返回值的类型一致,所以为double。
{if (i==1)
/**********found**********/
return f1(x); //只有一个实际参数,所以为f1。
else
/**********found**********/
return f2(x, y); //有两个实际参数,所以为f2。
}
main()
{double x1=5, x2=3, r;
r = fun(1, x1, x2);
r += fun(2, x1, x2);
printf("\nx1=%f, x2=%f, x1*x1+x1*x2=%f\n\n",x1, x2, r);
}
实验6 函数(2)
任务1 函数的递归调用
1(fact(j-1)*j
2(gcd(n,m%n)
m
int fun (int n)
{int c;
if(n==1)
c = 10 ;
else
c= fun(n-1)+2;
return(c);
}
main()
{ int n;
printf("Enter n : "); scanf("%d",&n);
printf("The result : %d\n", fun(n));
}
任务2 变量的存储类型与编译预处理 1(t1=4,t2=12,b=100
a=2,b=4
2((1):1 (2):2 (3):11 (4):3 (5):2
3(7 8 9
4(Y=7
5(Y=3
6(#define FU(m,n) ((m)/(n))
return(value);
7(程序代码如下:
#include "stdio.h"
#define MAX(A,B) (A)>(B)?(A):(B) #define ZMAX(A,B,C) MAX(MAX(A,B),C)
main()
{ int a,b,c,t;
printf("input a,b,c:");
scanf("%d,%d,%d",&a,&b,&c);
t=ZMAX(a,b,c);
printf("max of a,b,c:%d\n",t); }
实验7 数组(1)
任务1 数组的基本定义与应用
1(14
2(6,4,3,2,
3(a=a+arr[i][j]
j=2
j--
i+j==2
输出为:a=13,b=14
4(i=1
x[i-1]
5(m<1000或m<=999
m/10%10或m/10-x*10
a[j]=m
i=j;i—
a[i+1]=a[i]
3(t=i
i
0或„\0?
4(int i, j=0;
for(i=0; i方法