printf(“min=%d\n”,c);
else
printf(“nofindminimun\n”);
}
(2)
#include
main()
{
longx,x1,x_len=0,y,h[10],i,m=0;
printf("\nInputthenumber:
");
scanf("%ld",&x);
x1=x;
y=x*x;
while(x>0)
{x=x/10;
x_len=x_len+1;
}
for(i=0;i{h[i]=y%10;
y=y/10;
m=h[i]*pow(10,i)+m;
}
if(x1==m)printf("%ldyes%ld*%ld=%ld",x1,x1,x1,x1*x1);
elseprintf("%ldno%ld*%ld=%ld",x1,x1,x1,x1*x1);
}
实验四:
循环结构程序设计
一、实验目的:
(1)学习循环语句for、while、do-while语句的使用方法。
(2)学习用循环语句实现各种算法,例如穷举法、迭代法等。
(3)进一步熟悉TC环境。
二、实验内容:
(1)下列程序计算SUM得知。
调试该程序,使之能正确地计算SUM。
计算公式如下:
SUM=1+1/2+1/3+1/4+……+1/n
main()
{intt,s,I,n;
scanf(“%d”,&n);
for(I=1;I<=n;I++)
t=1/I;
s=s+t;
printf(“s=%f\n”,s);
}
调试后的程序:
main()
{
inti,n;
floatt=0,s=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
t=1.0/i;
s=s+t;
}
printf("s=%f\n",s);
}
(2)下面程序的功能是计算n!
。
main()
{intI,n,s=1;
printf(“Pleaseentern:
”);
scanf(“%d”&n);
for(I=1;I<=n;I++)
s=s*I;
printf(%d!
=%d”,n,s);
}
调试后的程序:
main()
{
inti,n;
floats=1.0;
printf("Pleaseentern:
");
scanf("%d",&n);
for(i=1;i<=n;i++)
s=s*i;
printf("%d!
=%f\n",n,s);
}
此程序计算n<=7时,结果正确。
改正程序使之能正确计算20!
。
(3)北京体育彩票采用整数1、2、3……、36表示36种体育运动,一张彩票可以选择7种运动。
编写程序,选择一张彩票的号码,使这张彩票的7个号码之和是105且相邻两个号码之差按顺序依次是1、2、3、4、5、6。
例如第一个号码是1,则后续号码应是2、4、7、11、16、22。
main()
{
inta,i,j,k,s;
s=1+2+4+7+11+16+22;
a=s;
for(i=1;i<=7;i++)
{
s=s+7;
if(s==105)
{
k=(s-a)/7;
printf("%d",k+=1);
for(j=1;j<7;j++)
{
k=k+j;
printf("%d",k);
}
}
}
printf("\n");
}
(4)编写程序实现输入整数n,输出如下所示由数字组成的菱形。
1
121
12321
1234321
123454321
1234321
12321
121
1
源程序如下:
main()
{
inti,j,k,n;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
for(j=1;j<=30-3*i;j++)
printf("");
for(k=1;k<=i;k++)
printf("%3d",k);
for(k=i-1;k>0;k--)
printf("%3d",k);
printf("\n");
}
for(i=n-1;i>0;i--)
{
for(j=1;j<=30-3*i;j++)
printf("");
for(k=1;k<=i;k++)
printf("%3d",k);
for(k=i-1;k>0;k--)
printf("%3d",k);
printf("\n");
}
}
三、实验用设备仪器及材料:
软件需求:
TurboC2.0版本。
硬件需求:
Pc机以上微机,打印机。
实验五:
数组
一、实验目的:
6.掌握数组的定义、赋值和输入输出方法
7.学习用数组实现相关的算法
8.进一步熟悉Tc环境,学习TC环境调试数组
二、实验内容:
9.输入10个整数,按每行3个数输出这些整数,最后输出10个整数的平均值。
三、实验用设备仪器及材料:
计算机一台
四、实验源程序
main()
{
inti,n,a[10];
floatav;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<10;i++)
{
printf("%d",a[i]);
if((i+1)%3==0)
printf("\n");
}
printf("\n");
for(i=0;i<10;i++)
av+=a[i];
printf("av=%.1f\n",av/10);
}
实验六:
字符数据处理
一、实验目的:
(1)掌握C语言中字符数组和字符串处理函数的使用。
(2)掌握在字符串中删除和插入字符的方法。
(3)熟悉TC环境的调试字符串程序的方法。
二、实验内容:
(1)调试下列程序,使之具有如下功能:
任意输入两个字符串,并存放在a,b两个数组中。
然后把较短的字符串放在a数组,较长的字符放在b数组,并输出。
Main()
{chara[10],b[10];
intc,d,k;
scanf(“%s”,&a);
scanf(“%s”,&b);
printf(“a=%s,b=%s\n”,a,b);
c=strlen(a);
d=strlen(b);
if(c>d)
for(k=0;k{ch=a[k];a[k]=b[k];b[k]=ch;}
printf(“a=%s\n”,a);
printf(“b=%s\n”,b);
}
#include"string.h"
调试后的程序:
Main()
{
chara[10]={'\0'},b[10]={'\0'};
intc,d,k,ch;
scanf("%s",a);
scanf("%s",b);
printf("a=%s,b=%s\n",a,b);
c=strlen(a);
d=strlen(b);
if(c>d)
for(k=0;k<=c;k++)
{
ch=a[k];
a[k]=b[k];
b[k]=ch;
}
printf("a=%s\n",a);
printf("b=%s\n",b);
}
_
(2)编写程序,输入若干个字符串,求出每个字符串的长度,并打印最长一个字符串的内容。
以“stop”作为输入的最后一个字符串。
#include"string.h"
main()
{
chari[10]={'\0'},j[10]={'\0'},k[10]={'\0'};
inta,b,c;
scanf("%s",i);
scanf("%s",j);
scanf("%s",k);
printf("i=%s\nj=%s\nk=%s\n",i,j,k);
a=strlen(i);
b=strlen(j);
c=strlen(k);
printf("i=%d,j=%d,k=%d\n",a,b,c);
if(a>b&&a>c)
printf("long:
i=%s\n",i);
elseif(b>a&&b>c)
printf("long:
j=%s\n",j);
elseif(c>a&&c>b)printf("long:
k=%s\n",k);
}
_
(3)编写程序,输入任意一个含有空格的字符串(至少10个字符),删除指定位置的字符后输出该字符串。
如:
输入“BEIJING123”和删除位置4,则输出:
“BEIJING123”。
main()
{
chars[128];
intn,i,l;
printf("Enterastring:
\n");
gets(s);
printf("Enterlocate:
");
scanf("%d",&n);
l=strlen(s);
for(i=n-1;is[i]=s[i+1];
printf("%s\n",s);
}_
三、实验用设备仪器及材料:
软件需求:
TurboC2.0版本。
硬件需求:
Pc机以上微机,打印机。
实验七:
函数
(1)
一、实验目的:
10.学习C语言中的函数的定义和调用方法
11.掌握通过参数在函数传递的方法
12.熟悉TC环境对包含函数调用的程序的调试方法
二、实验内容:
13.使用函数fun()判断整数是否为素数的函数,并用该函数求1000以内的素数平均值。
三、实验用设备仪器及材料:
计算机一台
四、实验源程序
#include"math.h"
main()
{
inta=0,k,n=0;
floatav;
for(k=2;k<=1000;k++)
if(fun(k))
{
a+=k;
n++;
av=a/n;
}
printf("av=%f\n",av);
}
fun(intn)
{
inti,y=0;
for(i=2;iif(n%i==0)y=1;
elsey=0;
returny;
}
实验八:
函数
(2)
一、实验目的:
1.掌握含多个源文件的程序的编译、联接和调试运行的方法。
2.学习递归程序设计,掌握递归函数的编写规律。
3.熟悉TC环境的调试函数程序的方法。
二、实验内容:
1.编写两个函数,其功能分别为:
(1)求N个整数的次大值和次小值。
(2)求两个整数的最大公约数和最小公倍数。
输入10个整数,调用函数求它们的次大值和次小值,及次大值和次小值的最大公约数和最小公倍数。
要求:
这两个函数和主函数分属3个文件。
求最大公约数和最小公倍数的方法。
辗转相除法:
两个数相除,若不能整除,则以除数作为被除数,作数作为除数,继续相除,直到余数为0时,当前除数就是最大公约数。
而原来两个数的积除以最大公约数的商就是最小公倍数。
128
12%8的值为4
8%4的值为0
则4为最大公约数,12*8/4为最小公倍数。
相减法:
两个数中的大数减小数,其差与减数再进行大数减小数,直到差与减数相等为止,此时的差或减数就是最大公约数。
而原来两个数的积除以最大公约数所得的就是最小公倍数。
128
12-8=48-4=4
则4为最大公约数,12*8/4为最小公倍数。
假定保存主函数的文件名是“file1.c”,保存求次大值和次小值函数的文件名是“file2.c”
保存求最大公约数和最小公倍数函数的文件名是“file3.c”。
现在再编辑一个文件,它的内容如下:
file1.c
file2.c
file3.c
保存这个文件为“file.prg”。
这是一个项目文件,表示文件中指定的几个源文件是经编译连接后生成一个名为“find.exe”的可执行文件。
我们要将项目文件名通知TC环境,按+键,选择“Project”菜单的“Projectname”选项,在“Projectname”窗口输入项目文件名。
编译系统这时将根据项目文件指出的源文件名分别进行编译,然后把编译后的各目标文件(文件)连接后生成可执行文件。
intmf(inta[11])
{
inti,j,t;
for(i=1;i<11;i++)
scanf("%d",&a[i]);
printf("\n");
for(j=1;j<=9;j++)
for(i=1;i<=10-j;i++)
if(a[i]{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
a[1]=a[2];
a[2]=a[9];
}
inthf(inta[11])
{
intr,u,v,i;
u=a[1];
v=a[2];
i=u*v;
while((r=u%v)!
=0)
{
u=v;
v=r;
}
a[1]=v;
a[2]=i/v;
}
main()
{
inta[11];
mf(a);
printf("%d,%d\n",a[1],a[2]);
hf(a);
printf("%d,%d\n",a[1],a[2]);
}_
2.用递归的方法求下面函数的值:
递归公式为:
#include
#include
doublefun(doublex,intn)
{
if(n>1)return(sqrt(x+fun(x,n-1)));
elsereturn(sqrt(x));
}
main()
{
doublex,y;
intn;
printf("Enternx=");
scanf("%d%lf",&n,&x);
y=fun(x,n);
printf("f(%lf,%d)=%lf\n",x,n,y);
}
3.一个递归函数,实现将任意的十进制正整数转换为作进制数。
#include
intten_to_eight(intval,chara[])
{
intb,t,i;
b=val%8;
t=val/8;
if(t>0)i=ten_to_eight(t,a);
elsei=0;
a[i]=b+'0';
a[i+1]='\0';
return(i+1);
}
voidmain()
{
intv;
chars[80];
printf("Enteranumber:
");
scanf("%d",&v);
ten_to_eight(v,s);
printf("result:
%s\n",s);
}
三、实验用设备仪器及材料:
软件需求:
TurboC2.0版本。
硬件需求:
Pc机以上微机,打印机。
实验九:
指针
(1)
一、实验目的:
1.掌握指针变量的定义与引用
2.掌握指针与变量、指针与数组的关系
3.掌握用数组指针作为函数参数的方法
4.熟悉TC环境的调试指针程序的方法
二、实验内容:
输入12个数,然后按每行4个数输出。
三、实验用设备仪器及材料:
计算机一台
四、实验源程序
main()
{
intj,k,a[12],*p;
p=a;
for(j=0;j<12;j++)
scanf("%d",p++);
p=a;
for(j=1;j<13;j++)
{
printf("%d",*p++);
if(j%4==0)
printf("\n");
}
}
voidsort(int*a[],intn)
{
inti,j,k,t;
for(i=0;ik=i;
for(j=i+1;jif(*a[j]<*a[k])k=j;
if(k!
=i){t=a[k];a[k]=a[i];a[i]=t;}
}
}
voidmain(void)
{
intb[10];
int*c[10];
inti;
for(i=0;i<10;i++)
{
printf("Enteraint");
scanf("%d",b+i);
c[i]=b+i;
}
sort(c,10);
for(i=0;i<10;i++)
printf("%d",b[i]);
printf("\n");
for(i=0;i<10;i++)
printf("%d",*c[i]);
printf("\n");
}_
实验十:
指针(