文档库 最新最全的文档下载
当前位置:文档库 › 实验中的程序参考答案

实验中的程序参考答案

实验中的程序参考答案
实验中的程序参考答案

实验三:顺序结构程序设计

1.编写一个程序,输入一个字符,输出它的前后邻居

#include

void main()

{ char c1;

printf(“Input a character: ”);

c1=getchar();

putchar(c1-1);

putchar(‘\t’);

putchar(c1+1);

putchar(‘\n’); }

2.编写一个程序,求三角形的面积。其中,a、b、c为三角形的三条边,s=(a+b+c)/2,面积为area=

#include

#include

void main()

{ float a,b,c,s,area;

printf(“Input a,b,c: ”);

scanf(“%f,%f,%f”,&a,&b,&c);

s=(a+b+c)/2;

area=sqrt(s*(s-a)*(s-b)*(s-c));

printf(“area=%f\n”,area); }

3.编写一个程序,求摄氏温度。公式:c=5*(f-32)/9

#include

void main()

{ float f,c;

printf(“Input f: ”);

scanf(“%f”,&f);

c=5*(f-32)/9;

printf(“c=%f\n”,c);} 4.设计一个程序,输入正五边形的边长的长度a,按公式

计算该五边形外接圆的半径。

#include

#include

void main()

{ float r,a;

printf(“Input a: ”);

scanf(“%f”,&a);

r=a*sqrt((10+2*sqrt(5))/5)/2;

printf(“r=%0.2f\n”,r); }

5.设计程序,输入空间中两点的坐标x1,y1,z1和x2,y2,z2计算两点之间的距离。

#include

#include

void main()

{ float x1,x2,y1,y2,z1,z2,d;

printf(“Input x1,y1,z1,x2,y2,z2: ”);

scanf(“%f,%f,%f,%f,%f,%f”,&x1,&y1,&z1,&x2,&y2,&z2);

d=sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)+(z2-z1)*(z2-z1));

printf(“d=%f\n”,z);

}

6.编写一个C程序,输入一个3位整数,分别输出百位数、十位数和个位数。#include

void main()

{ int x, a, b, c;

printf(“Input a integer: ”);

scanf(“%3d”,&x);

a=x/100;b=x/10%10;c=x%10;

printf(“a=%d, b=%d, c=%d\n”,a,b,c);

}

5

5

2

10

2

1+

=a

R

)

)(

)(

(c

s

b

s

a

s

s-

-

-

实验四选择结构程序设计

1.编写程序输入四个整数,要求输出最小的一个。

#include

void main()

{ int a,b,c,d,min;

printf(“Input a,b,c,d: ”);

scanf(“%d,%d,%d,%d”,&a,&b,&c,&d);

min=a;

if(min>b) min=b;

if(min>c) min=c;

if(min>d) min=d;

printf(“min=%d\n”,min); }

2.编写程序判断体重。体指数(t)=体重(w)/身高2(h)其中,t<18时体重偏轻,18<=t<25时体重正常,25<=t<27时体重偏重,t>=27时为肥胖。

#include

void main()

{ float t,w,h;

printf(“Input w,h: ”);

scanf(“%f,%f”,&w,&h);

t=w/(h*h);

if(t<18) printf(“tai qing le\n”);

else if(t<25) printf(“zheng chang\n”);

else if(t<27) printf(“pian zhong\n”);

else printf(“fei pang\n”); }

3.分别用if…else…if语句和switch语句编写书P58⑸

#include

void main()

{ float dan_jia,zong_e,ze_kou;

int n;

printf(“Input n: ”); scanf(“%d”,&n);

if(n<1) printf(“Input error!\n”);

else if(n<=5) ze_kou=n-1;

else if(n<=20) ze_kou=4+(n-5)*0.4;

else if(n<=50) ze_kou=10+(n-20)*0.15;

else if(n<=300) ze_kou=14.5+(n-50)*0.03;

else ze_kou=22;

dan_jia=10*ze_kou;

zong_e=dan_jia*n;

printf(“dan_jia=%f, zong_e=%f\n”,dan_jia,zong_e); }

#include

void main()

{ float dan_jia,zong_e,ze_kou;

int n,m;

printf(“Input n: ”);

scanf(“%d”,&n);

m=(n-1)/5;

4.有一人过独木桥,到桥中间时看见前面有狼,后面有虎,底下是深深的河水。编程写出此人的最后结局。

#include

void main()

{ char choice;

printf(“Input your choice(a or b or c)”);

scanf(“%c”,&choice);

if(choice==’a’) printf(“bei lang chi le\n”);

else if(choice==’b’) printf(“bei hu chi le\n”);

else if(choice==’c’) printf(“shuai si le\n”);

else printf(“Input error!\n”); }

5.从键盘输入3个数,判断能否构成三角形,若能构成三角形,计算以这3个数为边长的三角形面积;否则,输出相应的提示信息。

#include

#include

void main()

{ float a,b,c,s,area;

printf(“Input a,b,c: ”);

scanf(“%f,%f,%f”,&a,&b,&c);

if(a+b>c && b+c>a && a+c>b)

{ s=(a+b+c)/2;

area=sqrt(s*(s-a)*(s-b)*(s-c));

printf(“area=%f\n”,area);

}

else printf(“bu neng gou cheng san jiao xin\n”);

}

6.编写一个程序,输入某学生成绩,若成绩在85分以上,则输出“Very Good”,若成绩在60分到85分之间,则输出“Good”,若成绩低于60分,则输出“Bad”。

#include

void main()

{ float grade;

printf(“Input a student’grade: ”);

scanf(“%f”,&grade);

if(grade<0 || grade>100) printf(“Input error!\n”);

else if(grade<60) printf(“Bad\n”);

else if(grade<85) printf(“Good\n”);

else printf(“Very Good\n”);

}

7.编写程序,读入一个年份和月份,打印出该月有多少天。

#include

void main()

{ int year,month,days; printf(“Input year and month: ”);

scanf(“%d,%d”,&year,&month);

if(year%4==0 && year%100!=0 || year%400==0)

days=29;

else days=28;

switch(month)

{ 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;

}

printf(“days=%d\n”,days); }

实验五循环结构程序设计

1.请分别用while语句和do-while语句编程求的值。#include

void main()

{ float sum=0;

int k=1;

while(k<=100)

{ sum=sum+k;k++; }

k=1;

while(k<=10)

{ sum=sum+1.0/k;k++; }

printf(“sum=%f\n”,sum); }

#include

void main()

{ float sum=0;

int k=1;

do

{ sum=sum+k;k++; }while(k<=100);

k=1;

=

=

+

10

1

100

1

1

k

k

k

k

do

{ sum=sum+1.0/k;k++; }while(k<=10);

printf(“sum=%f\n”,sum); }

2.请分别用while语句和do-while语句编程求12/(1+1)+22/(2+1)+32/(3+1)+…+n2/(n+1),n由键盘输入。

#include

void main()

{ int n,i;

float sum=0;

printf(“Input n: ”);

scanf(“%d”,&n);

i=1;

while(i<=n)

{ sum=sum+i*i/(i+1.0);i++; }

Printf(“sum=%f\n”,sum); }

#include

void main()

{ int n,i;

float sum=0;

printf(“Input n: ”);

scanf(“%d”,&n);

i=1;

do

{ sum=sum+i*i/(i+1.0);i++; }while(i<=n);

Printf(“sum=%f\n”,sum); }

3.输入一个字符串,将其中的空格和数字删除后输出。

#include

void main()

{ char ch;

While((ch=getchar())!=’\n’)

if(!(ch==‘’|| ch>=‘0’&& ch<=‘9’))

putchar(ch);

putchar(‘\n’); }

4.编写程序求出满足不等式1+2+3+…+n<500的最大n值及总和。

#include

void main()

{ int sum=0,n=0;

while(sum<500)

{ n++;sum=sum+n;}

sum=sum-n;

n--;}

printf(“sum=%d, n=%d\n”,sum,n); }

5.编程实现求数列1/2,3/4,5/8,7/16…的所有大于等于0.000001的数据项之和,显示输出计算结果。

#include

void main()

{ float m,n,sum=0;

m=1;n=2;

while(m/n>=0.000001)

{ sum=sum+m/n;m+=2;n*=2;}

printf(“sum=%f\n”,sum); }

6.编程找出1000以内的完数。所谓完数是它等于它的因子之和。如:6=1+2+3。#include

void main()

{ int m,s,i;

for(m=2;m<1000;m++)

{ s=0;

for(i=1;i

if(s==m)

{ printf(“%d是一个完数。它的因子是:”,m);

for(i=1;i

if(m%i==0) printf(“%d”,i);

printf(“\n”); }

} }

实验六一维数组的使用

1. 用筛法求100以内的素数。

#include

#define N 100

void main()

{ int sushu[N]={0},k,n;

for(j=1;j

sushu[j]=j+1;

for(j=2;j

for(n=2;n<=sushu[j]/2;n++)

if(j%n==0) sushu[j]=0;

for(j=0;j

if(sushu[j]!=0)

printf(“%3d”,sushu[j]);

printf(“\n”); }

2. 编写一个程序,计算若干学生的某门功课的平均成绩、标准差,找出最高分和最低分。

#include

#include

#define N 100

void main()

{ float grade[N],aver,stdev,max,min;

int m,k;

printf(“Input m:”);

scanf(“%d”,&m);

for(k=0;k

scanf(“%f”,&grade[k]);}

max=min=grade[0];aver=0;

for(k=0;k

{ aver=aver+grade[k];

if(max

if(min>grade[k]) min=grade[k];

}

aver=aver/m;stdev=0;

for(k=0;k

stdev=stdev+(grade[k]-aver)*(grade[k]-aver);

stdev=sqrt(stdev/m);

printf(“aver=%f,stdev=%f,max=%f,min=%f\n”,aver,stdev,max,min);} 3.编写一个程序,让计算机产生20个随机数,用选择法排序。

#include

#include

#define N 20

void main()

{ int a[N],i,j,p,temp;

randomize();

for(i=0;i

a[i]=random(100);

printf(“Befor sorted:”);

for(i=0;i

{ if(i%10==0) printf(“\n”);

printf(“%3d”,a[i]);}

printf(“\n”); }

for(i=0;i

{ p=i;

for(j=i+1;j

if(a[p]>a[j]) p=j;

if(p!=i)

{ temp=a[p];a[p]=a[i];a[i]=temp;}

}

printf(“After sorted: ”);

for(i=0;i

{ if(i%10==0) printf(“\n”);

printf(“%3d”,a[i]);}

printf(“\n”); }

4. 根据上题的内容1,编一程序在数组中查找一个数。要求:

⑴若有该数,则输出该数,否则输出找不到的信息;

⑵用顺序查找实现;

⑶用折半查找实现。

顺序查找:

#include

#include

#define N 20

void main()

{ int a[N],i,j,p,temp,x,f;

randomize();

for(i=0;i

a[i]=random(100);

for(i=0;i

{ p=i;

for(j=i+1;j

if(a[p]>a[j]) p=j;

if(p!=i)

{ temp=a[p];a[p]=a[i];a[i]=temp;}

}

for(i=0;i

printf(“%3d”,a[i]);}

printf(“\n”);

printf(“Input you want to find: ”);

scanf(“%d”,&x);f=0;

for(i=0;i

if(a[i]==x) { f=1;break;}

if(f) printf(“Found! The number is: %d\n”,x); else printf(“Not found.\n”);

}

折半查找:

#include

#include

#define N 20

void main()

{ int a[N],i,j,p,temp;

int x,top,mid,bot,f;

randomize();

for(i=0;i

a[i]=random(100);

for(i=0;i

{ p=i;

for(j=i+1;j

if(a[p]>a[j]) p=j;

if(p!=i)

{ temp=a[p];a[p]=a[i];a[i]=temp;}

}

for(i=0;i

{ if(i%10==0) printf(“\n”);

printf(“%3d”,a[i]);}

printf(“\n”);

printf(“Input you want to find: ”);

scanf(“%d”,&x);

f=0;top=0;bot=N-1;

while(top

{ mid=(top+bot)/2;

if(x==a[mid]) { f=1;break;}

else if(x

else top=mid+1;

}

if(f) printf(“Found! The number is: %d\n”,x); else printf(“Not found.\n”);

}

5.根据实验内容3,编写一程序删除指定的一个数。

#include

#include

#define N 20

void main()

{ int a[N],i,j,p,temp;

int x;

randomize();

for(i=0;i

a[i]=random(100);

for(i=0;i

{ p=i;

for(j=i+1;j

if(a[p]>a[j]) p=j;

if(p!=i)

{ temp=a[p];a[p]=a[i];a[i]=temp;}

} for(i=0;i

{ if(i%10==0) printf(“\n”);

printf(“%3d”,a[i]);}

printf(“\n”);

printf(“Input you want to delete: ”);

scanf(“%d”,&x);

for(i=0;i

if(x==a[i]) break;

for(;i

a[i]=a[i+1];

a[i]=0;

for(i=0;i

{ if(i%10==0) printf(“\n”);

printf(“%3d”,a[i]);}

printf(“\n”);

}

6.根据实验内容3,编写一程序插入一个指定的数,插入后,数组仍然有序。#include

#include

#define N 20

void main()

{ int a[N+1],i,j,p,temp;

int x,f;

randomize();

for(i=0;i

a[i]=random(100);

for(i=0;i

{ p=i;

for(j=i+1;j

if(a[p]>a[j]) p=j;

if(p!=i)

{ temp=a[p];a[p]=a[i];a[i]=temp;}

}

for(i=0;i

{ if(i%10==0) printf(“\n”);

printf(“%3d”,a[i]);}

printf(“\n”);

printf(“Input you want to insert: ”);

scanf(“%d”,&x);

for(i=0;x

for(f=N;f>i;f--)

a[f]=a[f-1];

a[i]=x;

for(i=0;i<=N;i++)

{ if(i%10==0) printf(“\n”);

printf(“%3d”,a[i]);}

printf(“\n”);

}

实验七二维数组的使用

1.找出一个二维数组的“鞍点”,即该位置上的元素在该行上最大,在该列上最小。也可能没有“鞍点”。要求用随机函数生成数据。

#include

#include

#define N 5

void main()

{ int a[N][N]={0},i,j,k,p,q;

randomize();

for(i=0;i

for(j=0;j

a[i][j]=random(100);

for(i=0;i

{ p=0;

for(j=1;j

if(a[i][p]

q=0;

for(k=1;k

if(a[q][p]>a[k][p]) q=k;

if(i==q)

printf(“a[%d][%d]=%d\n”,i,q,a[i][q]);

} }

2.使用二维数组,打印杨辉三角形前10行。

#include

#define N 10

void main()

{ int yh[N][N]={0},i,j;

for(i=0;i

{ yh[i][i]=1;

yh[i][0]=1;}

for(i=2;i

for(j=1;j

yh[i][j]=yh[i-1][j]+yh[i-1][j-1];

for(i=0;i

{ for(j=0;j<=i;j++)

printf(“%5d”,a[i][j]);

printf(“\n”);

} }

3.编写程序,将一个5×5的矩阵中最大的元素放在中心,4个角分别放4个最小的元素(按从左到右、从上到下的顺序,依次从小到大存放。

#include

#include

#include

#define N 5

void main()

{ int a[N][N],i,j,x,y,t;

randomize();

clrscr();

for(i=0;i

{ for(j=0;j

{ a[i][j]=random(100);

printf("%4d",a[i][j]);

}

printf("\n");

}

x=y=0;

for(i=0;i

for(j=0;j

if(a[x][y]

{ x=i;y=j;}

t=a[2][2];a[2][2]=a[x][y];a[x][y]=t; x=0;y=0;

for(i=0;i

for(j=0;j

if(a[x][y]>a[i][j])

{ x=i;y=j;}

t=a[0][0];a[0][0]=a[x][y];a[x][y]=t; x=0;y=1;

for(i=0;i

for(j=0;j

if(i!=0 && j!=0)

if(a[x][y]>a[i][j])

{ x=i;y=j;}

t=a[0][4];a[0][4]=a[x][y];a[x][y]=t;

x=0;y=1;

for(i=0;i

for(j=0;j

if(!(i==0 && j==4)&&i!=0 && j!=0)

if(a[x][y]>a[i][j])

{ x=i;y=j;}

t=a[4][0];a[4][0]=a[x][y];a[x][y]=t;

x=0;y=1;

for(i=0;i

for(j=0;j

if(!(i==0 && j==4)&&i!=0 && j!=0&&!(i==4 && j==0))

if(a[x][y]>a[i][j])

{ x=i;y=j;}

t=a[4][4];a[4][4]=a[x][y];a[x][y]=t;

printf("\n");

for(i=0;i

{ for(j=0;j

printf("%4d",a[i][j]);

printf("\n");

}

}

4 .编写程序,用随机函数产生一个二维迷宫(用0表示通道,1表示隔墙)#include

#define N 10

void main()

{ int a[N][N],i,j;

randomize();

for(i=0;i

for(j=0;j

{ a[i][j]=rand()%2;

printf(“%2d”,a[i][j]);

} }

实验八字符数组

1、编写一个程序,将字符数组s2中的全部字符拷贝到字符数组s1中。(不能使用strcpy函数。)

#include

void main()

{ char s1[30],s2[30];

int k;

printf(“Input a string: ”);

gets(s2);

for(k=0;s2[k]!=’\0’;k++)

s1[k]=s2[k];

puts(s1); }

2、有一篇文章,共有3行文字,每行有80个字符。要求分别统计出其中英文大写字母、小写字母、数字、空格以及其他字符的个数。

#include

voi main()

{ char str[3][81];

int i,j,upper=0,low=0,digit=0,space=0,other=0;

printf(“Input three strings: ”);

for(i=0;i<3;i++)

gets(str[i]);

for(i=0;i<3;i++)

for(j=0;str[i][j]!=’\0’;j++)

if(str[i][j]>=’a’&& str[i][j]<=’z’) low++;

else if(str[i][j]>=’A’&& str[i][j]<=’Z’) upper++;

else if(str[i][j]>=’0’&& str[i][j]<=’9’) digit++;

else if(str[i][j]==’’) space++;

else other++;

printf(“upper=%d,lower=%d,digit=%d\n”,upper,low,digit); printf(“space=%d,other=%d\n”,space,other);

}

3、有n个字符串,要求找出其中最大和最小的字符串。

#include

#include

#define N 30

#define M 20

void main()

{ char str[M][N],max[30],min[30];

int k;

for(k=0;k

{ printf(“Input the No.%d string: ”,k+1);

gets(str[k]);}

strcpy(max,str[0]);strcpy(min,str[0]);

for(k=1;k

{ if(strcmp(max,str[k])<0) strcpy(max,str[k]);

if(strcmp(min,str[k])>0) strcpy(min,str[k]);

}

p rintf(“The max is: %s\n”,max);

printf(“The min is: %s\n”,min);

}

4、有n个字符串,要求按字母顺序从小到大对其排序。

#include

#include

#define N 30

#define M 20

void main()

{ char str[M][N],s[30];

int j,k,p;

for(j=0;j

{ printf(“Input the No.%d string: ”,j+1);

gets(str[j]);}

for(j=0;j

{ p=j;

for(k=j+1;k

if(strcmp(str[p],str[k])>0) p=k;

if(p!=j)

{ strcpy(s,str[j]);strcpy(str[j],str[p]);strcpy(str[p],s);} }

for(k=0;k

puts(str[k]);

}

实验九函数的定义与调用

1、写一个判断素数的函数。要求:

⑴在主函数中输入一个整数并输出是否素数的信息;

⑵用自定义函数判断此数是否素数;

⑶测试数据:17、34、2、1、0、49、39。

#include

int panduan(int n)

{ int i,f=1;

if(n==1 || n==0) f=0;

for(i=2;i<=n/2;i++)

if(n%i==0) { f=0;break;}

return f;

}

void main()

{ int x,flag; printf(“Input x: ”);

scanf(“%d”,&x);

flag=panduan(x);

if(flag) printf(“Yes\n”);

else printf(“No\n”); }

2、编一个函数,其功能是:求高于平均分的人数,并作为函数值返回。要求:

⑴学生的成绩放在student数组中;

⑵在主函数中输入学生的成绩,用-1结束成绩的输入;

⑶在主函数中输出高于平均分的人数;

⑷测试数据:78、34、65、86、54、76、65、48、29、94

87、46、88、71、68、60、83、92、57、51

69、89、79、39、55、44、21、99、96、70

#include

#define N 100

void main()

{ float grade[N];

int k,total,n=0;

int tongji(int a[],int n);

k=0;

printf(“Input the No.%d’s grade: ”,k+1);

scanf(“%f”,&grade[k]);

while(grade[k]!=-1)

{ k++;n++;

printf(“Input the No.%d’s grade: ”,k+1);

scanf(“%f”,&grade[k]);

}

total=tongji(grade,n);

printf(“total=%d\n”,total);

}

int tongji(int x[],int n)

{ float aver=0;

int m,k=0;

for(m=0;m

aver=aver+x[m];

aver=aver/n;

for(m=0;m

if(x[m]>aver) k++;

return k;}

3、P103第三题的第三小题。

#include

int gys(int m,int n)

{ int r;

if(m

r=m%n;

while(r!=0)

{ m=n;n=r;

r=m%n;}

return n;}

int gbs(int m,int n,int k)

{ return m*n/k;}

void main()

{ int x,y,gysh,gbsh;

printf(“Input x,y: ”);

scanf(“%d,%d”,&x,&y);

gysh=gys(x,y);

gbsh=gbs(x,y,gysh);

printf(“gongyueshu: %d\n gongbeishu: %d\n”,gysh,gbsh); }

实验十函数的数据传递、递归调用及模块化程序设计1、用递归法求n阶勒让德多项式的值,递归公式为:#include

float pnx(int n,float x)

{ if(n==0) return 1.0;

else if(n==1) return x;

else return ((2*n-1)*pnx(n-1,x)-(n-1)*pnx(n-2,x))/n);} void main()

{ float x,n,pn;

printf(“Input x,n: ”);

scanf(“%f,%d”,&x,&n);

pn=pnx(n,x);

printf(“%f\n”,pn);}

2、运行汉诺塔程序

void move(char x, char y)

{ printf(“%c?%c\n”, x, y); }

void Hanoi(int n, char one, char two, char three)

{ if(n==1) move(one, three);

else

{ Hanoi(n-1, one, three, two);

move(one, three);

Hanoi(n-1, two, one, three); }

}

main( )

{ int m;

printf(“input the number of diskes:”);

scanf(“%d”, &m);

printf(“The step to moving %3d diskes:\n”,m);

Hanoi(m, ‘A’, ‘B’, ‘C’); }

?

?

?

?

?

>

?

-

-

?

-

=

=

=

-

-

)1

(

/

))

(

)1

(

)

(

)1

2

((

)1

(

)0

(

1

)

(

2

1

n

n

x

p

n

x

p

n

n

x

n

x

p

n

n

n

测试用例:4,10。

3、写一个函数,使输入的一个字符串反序存放。

#include

#include

void main()

{ char s1[50];

void fun(char s[]);

printf(“Input a string: ”);

gets(s1);

fun(s1);

puts(s1);}

void fun(char s[])

{ int i,j;

char ch;

for(i=0,j=strlen(s)-1;i<=j;i++,j--)

{ ch=s[i];s[i]=s[j];s[j]=ch;}

}

4、编写一个程序,解决以下问题:

n个人围成一圈,从第一个人开始顺序报数1、2、3。凡是报到“3”的人退出圈子。找出最后留在圈子中的人的原来的序号。测试用例:15、22、39。#include

#define N 50

int baoshu(int x[],int n)

{ int i,j,k;

i=k=j=0;

while(j

{ if(x[i]!=0) k++;

if(k==3)

{ j++;k=0;x[i]=0;}

i++; if(i==n) i=0;

}

for(i=0;i

if(x[i]!=0) return x[i];

}

void main()

{ int n,i,k,a[N];

printf("Input n: ");

scanf("%d",&n);

for(i=0;i

a[i]=i+1;

k=baoshu(a,n);

printf("The end is: %d\n",k);

}

实验十一预处理命令的使用

2.编写一段程序,用来求两个数的最小值,其中用来求最小值的部分用宏定义来实现。编写完成后编译执行。

#include

#define MIN(a,b) (a)<(b)?(a) : (b)

void main()

{ float x,y,min;

printf(“Input x,y: ”);

scanf(“%f,%f”,&x,&y);

min=MIN(x,y);

printf(“min is: %f\n”,min);}

实验十二指针

1.编制交换整型变量值的函数swap( )。函数swap( )的功能是交换两个整型变量的值,函数swap( )设有两个指向整型变量的指针参数,函数利用指针参数间接访问变量。调用swap( )函数时,两个参数分别是两个待交换值得整型变量的地址。

#include

void swap(int *a,int *b)

{ int x; x=*a;*a=*b;*b=x;}

void main()

{ int x,y;

printf(“Input x,y: ”);

scanf(“%d,%d”,&x,&y);

swap(&x,&y);

printf(“x=%d, y=%d\n”,x,y);

}

2.编写程序,用指针来实现数组的输入和输出。数组定义如下:a[10]={1,2,3,4,5,6,7,8,9,0}

#include

void main()

{ int a[10],*p=a,i;

for(i=0;i<10;i++)

scanf(“%d”,p+i);

for(i=0;i<10;i++,p++)

printf(“%3d”,*p);

printf(“\n”); }

3.输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写3个函数:⑴输入10个数;⑵对换处理;⑶输出10个数。

#include

#define N 10

void input(int a[],int n)

{ int i;

for(i=0;i

{ printf(“Input the No.%d number: ”,i+1);

scanf(“%d”,&a[i]); } }

void output(int a[],int n) { int i;

for(i=0;i

printf(“%5d”,a[i]);

printf(“\n”); }

void swap(int a[],int n)

{ int min,max,i,t;

Min=max=0;

for(i=1;i

{ if(a[min]>a[i]) min=i;

if(a[max]

t=a[0];a[0]=a[min];a[min]=t;

t=a[n-1];a[n-1]=a[max];a[max]=t;

}

void main()

{ int x[N];

input(x,N);

output(x,N);

swap(x,N);

output(x,N);}

4.有n个整数,使前面各数顺序向后移m个位置,最后m个数变成最前面m 个数。写一函数实现上面的功能,在主函数中输入n个整数和输出调整后的n 个数。

#include

#define N 50

void mov(int a[],int n,int m)

{ int i,j,t;

for(j=1;j<=m;j++)

{ t=a[n-1];

for(i=n-2;i>=0;i--)

a[i+1]=a[i];

a[0]=t;

} }

void main()

{ int x[N],n,m,i;

printf(“Input n,m(n>m): ”);

scanf(“%d,%d”,&n,&m);

for(i=0;i

{ printf(“Input the No.%d number: ”,i+1);

scanf(“%d”,&x[i]);}

mov(x,n,m);

for(i=0;i

{ if(i%10==0) printf(“\n”);

printf(“%4d”,x[i]);}

printf(“\n”); }

5.有一个班5个学生,5门课程。⑴求第一门课的平均成绩;⑵找出有2门以上课程不及格的学生,输出他们的学号和全部课程成绩和平均分;⑶找出平均成绩在90分以上或全部课程成绩在85分以上的学生。分别编写3个函数实现以上3个要求。

#include

#define N 5

float fun1(float grade[][5])

{ float aver,sum=0;

int i;

for(i=0;i

sum=sum+grade[i][0];

aver=sum/N;

return aver;

}

void fun2(char num[][11],float grade[][5])

{ int n,i,j,k; float sum,aver;

for(i=0;i

{ n=0;

for(j=0;j<5;j++)

if(grade[i][j]<60) n++;

if(n>=2)

{ sum=0;

for(k=0;k<5;k++)

sum=sum+grade[i][k];

aver=sum/5;

printf("%s\t",num[i]);

for(k=0;k<5;k++)

printf("%.2f\t",grade[i][k]); printf("%.2f\n",aver);

}

}

}

void fun3(char num[][11],float grade[][5]) { float sum,aver;

int n,i,j,k,f;

for(i=0;i

{ sum=0;f=1;

for(j=0;j<5;j++)

{ if(grade[i][j]<85) f=0;

sum=sum+grade[i][j];}

aver=sum/5;

if(aver>=90 || f==1)

{ printf("%s\t",num[i]);

for(k=0;k<5;k++)

printf("%.2f\t",grade[i][k]);

printf("%.2f\n",aver);

}

}}

void main()

{ char num[N][11];

float grade[N][5],aver;

int i,j;

for(i=0;i

{ printf("Input the No.%d's number: ",i+1);

gets(num[i]);

for(j=0;j<5;j++)

{ printf("Input the No.%d's course %d's grade: ",i+1,j+1);

scanf("%f",&grade[i][j]);

}

getchar();

}

aver=fun1(grade);

printf("The No.1 course average=%f\n",aver);

fun2(num,grade);

fun3(num,grade);

}

实验十三结构体数据类型的定义和应用

?实验目的

?掌握结构体的定义方式和使用,并可以地用结构体来处理一些简单问题;

?掌握结构体类型变量的定义和使用;

?掌握结构体类型数组的概念和应用。

?实验内容

?从键盘输入10个人的姓名和年龄并存到结构数组中,编写程序从中查找年龄最大和最小的人的姓名和年龄,并输出。

?利用结构体来实现一个简单的数据库,该数据库可以完成添加、按序号查询、显示等功能。下面将该程序的主函数部分给出,

要求学生将给出自定义函数补充完整,并在机器上调试通过。#include

#include

#include

void add(void); /*向数据库中添加记录*/

void query(void); /*按指定的序号查找相应的记录*/

void listall(void); /*列出数据库中的全部记录*/

void list(int n); /*列出给定序号的记录*/

struct employee

{ int no; /*序号*/

char name[15]; /*姓名*/

char phone[12]; /*电话号码*/

int age; };/*年龄*/

int index;

struct employee record[20];

main()

{ char ch;

system(“cls”);

while(1)

{ printf(“\n1.Enter new employee\n”);

printf(“2.Query employee\n”);

printf(“3.List all\n”);

printf(“4.Quit\n”);

printf(“Select:”);

ch=getchar();

switch(ch)

{ case ‘1’: add();break;

case ‘2’: query();break;

case ‘3’: listall();break;

case ‘4’: exit(0);

default:break; }

}

}

……

实验四-循环结构汇编语言程序的设计实验报告

循环结构汇编语言程序设计实验报告

实验四循环结构汇编语言程序设计 一、实验目的 1、学习循环结构的汇编语言程序的设计和调试。 2、学习通过直接对8086计算机的寄存器和存的直接访问,编写更高效简洁的汇编程序。 3、加深掌握计算机整体的工作过程。 3、加深对排序算法的理解。 二、实验任务 编写程序求出数组A中(20个元素)的最大值和最小值(数组没有排序)。 要求至少采用二种不同的排序算法来实现。( 快速排序,归并排序、堆排序、Shell排序、插入排序、冒泡排序、交换排序、选择排序、基数排序……) 三、实验容 为了更好地实现老师所布置的实验任务,我们根据情况选取以下两种方式实

验。 1、利用冒泡排序的方式求解数组A中元素的最大值最小值。设计流程图如 下所示: 2、利用选择排序的方式求得数组A中元素的序列。设计流程图如下所示:

四、实验环境 PC机: winXP/win7(32位)/win7(64位)+winxp 虚拟机 汇编工具:Masm.exe+Link.exe。 五、实验步骤 1)建立和生成的文件 (1)编写的源程序,源程序名为abc、扩展名为.asm (2)源程序经汇编程序Masm.exe汇编(翻译)后生成二进制目标程序,文件名为abc.obj (3)目标程序需要经Link.exe连接生成可执行程序,文件名为abc.exe 2)汇编环境 最基本的汇编环境只需要两个文件:Masm.exe和Link.exe。将这两个文件拷入到已经建好的文件夹(例如 huibian)中,并将文件夹huibian放在硬盘根

目录C :\>下 3)上机步骤 进入DOS窗口中执行。 4)调试程序 进入DEBUG后,调试程序 5)调试成功后重新汇编、连接并生成可执行代码 6)执行程序,并对运行结果截图。 利用冒泡排序求得数组A中元素的最大值最小值的实验结果如下图所示:(说明:输入数据为:13,0,59,900,587,1,657,234,34,48) 利用选择排序对数组A中元素排序得到的序列得实验结果如下图所示:(说明:输入数据为13,0,59,900,587,1,657,234,34,48)

C语言程序设计实验报告参考答案

长沙理工大学C语言实验报告参考答案 实验一熟悉C语言程序开发环境及数据描述四、程序清单 1.编写程序实现在屏幕上显示以下结果: Thedressislong Theshoesarebig Thetrousersareblack 答案: #include main() { printf("Thedressislong\n"); printf("Theshoesarebig\n"); printf("Thetrousersareblack\n"); } 2.改错题(将正确程序写在指定位置) 正确的程序为: #include main() {

printf("商品名称价格\n"); printf("TCL电视机¥7600\n"); printf("美的空调¥2000\n"); printf("SunRose键盘¥50.5\n"); } 2.编写程序:a=150,b=20,c=45,编写求a/b、a/c(商)和a%b、a%c(余数)的程序。 答案: #include main() { inta,b,c,x,y; a=150; b=20; c=45; x=a/b; y=a/c; printf("a/b的商=%d\n",x);

printf("a/c的商=%d\n",y); x=a%b; y=a%c; printf("a/b的余数=%d\n",x); printf("a/c的余数=%d\n",y); } 4.设变量a的值为0,b的值为-10,编写程序:当a>b时,将b赋给c;当a<=b时,将a赋给c。(提示:用条件运算符) 答案: #include main() { inta,b,c; a=0; b=-10; c=(a>b)?b:a; printf("c=%d\n",c); }

vb程序设计实验教程习题答案

实验教材实验一 1:单项选择题: A A C C C D C B B C 2:填空题: (1).bas (2).vbp,.frm (3)视图工具箱 (4)对象 (5)属性对象事件方法 (6)Windows (7)事件行为 (8)窗体模块 实验二 1:单项选择题: A D C C A B A B D C B B C B C B A B D C 2:基本运算题: (1)27 (2)3.33333333333333 (3)3 (4)0 (5)-3 (6)2 (7)ab33 (8)类型不匹配 (9)3 (10)AB3 实验三 1:单项选择题: B C B D C 2:填空题: (1)300 (2)321456 (3)Shanghai (4)6 7 6 (5)True (6)2+3=5 (7)”area=” 12.56 (8)VISUAL 实验四 1:单项选择题: C A A C A 2:填空题: (1)7 (2)3 5

(3)输入的数小于0 (4)3 (5)False (6)2010 is not leap year. 试验五 1:单项选择题: A C C A B A C C C B 2:填空题: (1)9 (2)①n ②1 (3)①Len(a) ②n\2 ③Mid(a,(n-i+1),1) ④Mid(a,(n-i+1),1) (4)①n Mod 3=1 And n Mod 5=1 And n Mod 7=1 ②While CountN<5 (5)Mid(c1,1,i) 实验六 1:单项选择题: D B D C D A C A D D 2:填空题: (1)30 (2)3 (3)①a(2) ②a(3) ③a(1) (4)①1 ②2 ③a(i)=a(6-i) (5)①i+j ②0 ③a(i,j) (6)①Print ②k ③a(k,j)=a(j,k) ④a(k,j); 实验七 1:单项选择题: A B B A C B 2:填空题: (1)15 (2)①Preserve a(n+1) ②a(i+1)=a(i) ③Exit For ④a(i+1)=m⑤0 to n+1 (或LBound(a) to UBound(a)) (3)d,c,b,a 实验八 1:单项选择题: C A D B D C A C B 2:填空题: (1)a=9 b=4 (2) 36 25 16 9 4 1 (3)①a ②UBound(b) ③

C语言程序设计实验报告(实验大纲+过程)

《C程序设计》实验教学大纲 一、适用范围 大纲适用信息管理专业本科教学使用。 二、课程名称 C程序设计 三、学时数与学分 总学时:90 总学分:4 实验学时:28 实验学分:1 四、教学目的和基本要求 目的:通过C程序设计实验,培养学生对学习程序设计的兴趣,加深对讲授内容的理解,尤其是通过上机来掌握语法规则,使学生全面了解 C 语言的特点,熟练掌握 C 语言程序设计的基本方法和编程技巧。 基本要求:了解和熟悉C语言程序开发的环境;学会上机调试程序,善于发现程序中的错误,并且能很快地排除这些错误,使程序能正确运行,达到实验知识和理论知识的融会贯通。上机实验前,学生必须事先根据题目的内容编好程序,然后在实验时输入程序、调试程序、直至运行结果正确为止,上机结束后,应整理出实验报告。 注:带*的实验项目为选做实验项目 六、教材、讲义及参考书 《C程序设计题解与上机指导》谭浩强主编清华大学出版社 七、实验成绩评定办法 实验成绩=平时实验表现+实验报告。实验成绩占总成绩的20%。 实验成绩以等级形式给出,评定等级分优、良、中、及格、不及格五类。 1、平时考核:上机实验前,学生必须事先根据题目的内容编好程序,然后在实验时输入程序、调试程序、直至运行结果正确为止。在实验中,教师可根据学生编程操作能力、观察和分析及运用知识能力、程序编制正确性以及学生的课堂纪律、实验态度、保持实验室卫生等方面的表现进行综合考核。

2、实验报告:学生实验后应按时完成实验报告。 八、实验教学大纲说明 本大纲共安排28学时的实验,其中带*号实验项目为选做实验项目,实际课时为18学时。实验项目多为设计性实验项目,每个设计性实验项目中都包含数个小的设计性题目,其中带*号的题目为选做题目,有时间和有能力的同学可以选做。 九、实验项目 实验一C程序的运行环境和运行一个C程序的方法 一、实验目的 1.了解Visual C++6.0编译系统的基本操作方法,学会独立使用该系统。 2.了解在该系统上如何编辑、编译、连接和运行一个C程序。 3.通过运行简单的C程序,初步了解C源程序的特点。 二、实验内容 1.用编辑程序,输入教材第一章例1.1程序,并进行编译和运行。应了解所用的系统是用什么命令进行编译和连接运行的。编译和连接后所得到的目标程序的后缀是什么形式的? 2.编写一个C程序,输出以下信息: **************************** very good! **************************** 3.输入并运行教材第一章中例1.3,了解如何在运行时向程序变量输入数据。 实验二数据类型、运算符和表达式 一、实验目的 1.掌握C语言数据类型,熟悉如何定义一个整型、字符型、实型变量,以及对它们赋值的方法,了解以上类型数据输出时所用格式转换符。 2.学会使用C的有关算术运算符,以及包含这些运算符的表达式,特别是自加(++)和自减(--)运算符的使用。 二、实验内容 1.输入并运行以下程序: main( ) { char c1,c2; c1=97;c2=98; pr intf(“%c %c\n”,c1,c2); printf(“%d %d\n”,c1,c2); } 在此基础上 ①将第三行、第四行改为: c1=321;c2=353; 再使之运行,分析其运行结果。 ②将第二行改为: int c1,c2; 再使之运行,分析其运行结果。。 2.输入并运行以下程序:

C语言程序设计实验与习题答案

2.程序填空 (1)以下程序的功能是计算1~50之间能被7整除的整数之和。 #include void main() {int i,sum= 0; for(i=1;50;i++) if(i%7==0) sum+=i; printf("sum=%d\n",sum); } (2) 下面程序接收来自键盘的输入,直到输入+Z(值为-1)键为止。这些字符被原样输出,但若有连续一个以上的空格时只输出一个空格。请填空。 #include void main() {char cx; char front=’’; while ((cx=getchar())!=’\n’) {if (cx!=’’) putchar(cx); if (cx= =’’) if (front!=’’) putchar(cx); front=cx; } } 3.程序改错 (1)下列程序的功能是求1+3+5+…99的和。

#include void main( ) { int s,i; ★//int s=0,i; i=1; while(i<=99)s=s+i;★//{s=s+i;i++;} printf("1+3+5+…99的和是:%d\n",s); } (2)下面程序的功能是输入一个正整数,判断是否是素数,若 为素数输出1,否则输出0。 #include void main() { int i,x,y=0; ★//y=1 scanf("%d",&x); for(i=2;i<=x/2&&y;i++) if ((x%i)!=0) y=0; ★//x%i==0 printf("%d\n",y); } 4.设计性实验 (1)题 /* 方法(1)精度控制*/ #include

实验四 MATLAB程序设计

实验四 MATLAB 程序设计 1.实验目的 (1)熟练掌握MATLAB 的程序流程控制结构。 (2)掌握M 文件的结构,M 函数文件编写、使用。 (3)熟练掌握函数调用和参数传递。 2.实验仪器 (1)Matlab6.5应用软件安装版 一套 (3)PC 机 一台 3. 实验原理 依据MA TLAB 的编程的原理,编写M 函数文件,调用M 函数文件,完成曲线绘制。 4. 实验步骤 (1)利用for 、while 控制语句和sum 指令求和。 (2)使用MA TLAB 函数文件绘图。 (3)利用置换指令绘制脉冲响应曲线. (4)利用feval 指令实现指定的函数。 5. 实验报告内容(选做其中两题) (1)分别用for 和while 循环语句计算∑==630i i 2 K 的程序,再写出一种避免循环的计算程序。 (提示:可考虑利用MA TLAB 的sum (X,n )函数,实现沿数组X 的第n 维求和。)保存为M 文件. (2)将课本例4-8子函数编程及调用演示,三个子图上的圆和多边形绘制在同一坐标系中。并保存为M 文件。保存输出结果图。 (3)利用置换指令subs(X,new),例4-18中的脉冲响应在t=[0,18]的曲线。并保存为M 文件。保存输出结果图。 (4)试利用feval ()指令计算F(x)+F 2(x),其中F 可取‘sin ’、‘cos ’。(提示:先编写以个M 函数function y=trif(F,x)实现F(x)+F 2(x)的计算,在编写调用函数完成F 为‘sin ’、‘cos ’的计算),并保存为M 文件。(指定完成sin(pi/2)+sin(pi/2)^2; cos(pi/3)+cos(pi/3)^2)

C语言程序设计实验报告(数组)

C语言程序设计实验报告(数组) 1实验目的 (1)熟练掌握一维数组,二维数组的定义,初始化和输入、输出方法; (2)熟练掌握字符数组和字符串函数的使用; (3)掌握与数组有关的常用算法(查找、排序等)。 2实验内容 编写函数catStr(char str1[],char str2[])用于进行两个字符串的连接,编写函数lenStr(char str[])用于统计一个字符串的长度,并在主函数中调用。 要求: 1、不允许用strcat()和strlen()字符处理库函数; 2、在主函数以直接初始化的方式输入两个字符串str1和str2.调用函数 strlen()计算并返回两个字符串的长度; 3、调用函数catstr()连接两个字符串(将str2连接在str1后面); 4、调用函数lenstr()计算并返回连接后字符串的长度; 5、在主函数中输入两个原始的字符串及几个字符串的长度,以及处理后字 符串及其长度。

3算法描述流程图

4源程序 #include #include void catStr(char str1[],char str2[]) { int i,j; for (i=0;str1[i]!='\0';i++); for(j=0;str2[j]!='\0';j++) str1[i+j]=str2[j]; str1[i+j]='\0'; } lenStr(char m[] ) {int i;

for (i=0;m[i]!='\0';i++); printf("%d",i); } void main() {char s1[50]="forever",s2[50]="more"; printf("s1=%s,s2=%s",s1,s2); printf("\ns1的长度:"); lenStr(s1); printf("\ns2的长度:"); lenStr(s2); catStr(s1,s2); printf("\n连接后的字符:"); printf("%s\n",s1); printf("连接后字符的长度:"); lenStr(s1); printf("\n"); } 5测试数据 s1=forever, s2=more 6运行结果 7出现问题及解决方法 在输入程序时,少写了半边引号,调试时发现存在错误,找到了错误并加以改正。无论什么事,细心都是必不可少的,认真是解决问题的关键。 8实验心得 通过本次实验,对于函数的定义和声明,数组以及循环语句有了进一步的认识,掌握了字符数组和字符串函数的使用,以及与数组有关的常用算法。此次实验不是调用strlen()和strcat()函数,而是通过自己设计程序来进行字符串的连接以及计量字符串的长度,由此我学会了如何去理清自己的思路来设计程序。

VB程序设计教程第四版课后答案

vb课后习题答案 第一章习题参考答案 一、填空题 1、对象事件驱动 2、编译运行模式解释运行模式 二、简答题 1、简述VB的特点。 答:①可视化的程序设计方法 ②面向对象的程序设计思想 ③事件驱动的编程机制 ④结构化的程序设计语言 ⑤高度的可扩充性 ⑥强大的数据库访问能力 ⑦支持动态数据交换 ⑧支持对象链接与嵌入 2、简述VB的安装过程。 答:①向光驱中放入VB安装光盘; ②计算机将运行自动安装程序,若没有,执行VB目录下的Setup.exe; ③根据提示逐一回答问题,并点击“下一步”; ④点击“完成”; 2、如何启动VB。

答:三种方法: ①单击“开始”按钮,选择“程序”菜单下的“Microsoft Visual Basic 6.0 中文版”菜单项并单击; ②双击桌面上的VB6.0快捷图标; ③在“开始”菜单的运行对话框中输入命令来启动VB; 第二章习题参考答案 一、选择题: 1-10、 DCACD BCBBC 11-20、BADCA BBAAB 21-29、AACBB CDDC 二、填空题 1.窗体、控件 2.属性值 3.属性窗口设置、代码窗口设置 4.事件过程 5.对象名、下划线、事件名 6. Form_Click 第三章习题参考答案

一、选择题 1、B 2、C 3、A 4、B 5、A 6、C 7、C 二、填空题 1、 11 字符型、字节型、整型、长整型、单精度型、双精度型、货币型、逻辑型、日期型、对象型、变体型。String、Byte、Integer、Long、Single、Double、Currency、Boolean 、Date、Object、Variant 2、双引号(英文)、# 3、 ASCII、1、2 4、 public、通用、Dim、Static、Private、Static 5、 &、+、+ 6、 Now()、Time、日期型 三、解答题 1、(3) 2、(1 ) 3、(1)常量(关键字)(2)字符型常量(3)逻辑型常量(4)变量(5)字符串常量(6)变量 (7)字符串常量(8)变量(9)日期型常量(题目应是#11/16/1999#)(10)数值型常量(单精度) 4、31 5、(1)(1+y/x)/(1-y/x) (2)x^3+3*x*y/(2-y) (3)sqr(abs(a*b-c^3)) (4)sqr(s*(s-a)*(s-b)*(s-c))

C程序设计实验报告

实验1 C程序运行环境、数据类型、运算符和表达式 一、实验目的 1. 掌握Turbo C集成环境的进入与退出、Turbo C集成环境各种窗口的切换,了解Turbo C集成环境的设置。 2. 掌握C语言源程序的建立、编辑、修改、保存及编译和运行等操作。 3. 学会使用C语言的基本运算符(主要是算术运算符、赋值运算符)及其表达式。 4. 掌握C语言源程序的结构特点与书写规范。 二、实验要求 1. 根据题目要求,进行各种程序测试与验证,并记录结果。 2. 上机调试程序。按各个程序输入计算机,并进行编译和连接,如果在编译、连接中有错误信息,则要根 据这些信息找到程序中的错误所在,然后修改程序,直至正确。 3. 详细记录数据的输入、输出信息,按要求写出实验报告。 三、实验内容 1. 开机;进入Turbo C集成工作环境,了解Turbo C集成工作环境及其菜单的使用,输入如下C语言源程序,并以exl.C存盘。 / *ex1.c* / #include main() { printf("Hello!\n"); printf("This is C program!\n"); } 试编译、连接、运行该程序,并按Alt+F5查看运行结果。 运行结果是: 2. 输入并调试运行以下程序,查看运行结果 (由此结果可以了解到在实验用的微型机上,几种数据类型所占的字节数)。 main() { printf("char\t%d bytes\n",sizeof(char)); printf("short\t%d bytes\n",sizeof(short)); printf("int\t%d bytes\n",sizeof(int)); printf("long\t%d bytes\n",sizeof(long)); printf("float\t%d bytes\n",sizeof(float)); printf("double\t%d bytes\n",sizeof(double)); } 运行结果是: 3. 输入并调试运行以下程序。 main() {int i,j,m,n; i=8;j=10;

单片机实验4 子程序设计-- BCD码转换为二进制

实验4. 子程序设计----BCD 码转换为二进制 单字节可存放两位压缩BCD 码(0—99) 为0 —9) 单字节BCD 码转换为二进制子程序 入口:(R0)= 压缩BCD 码的地址 出口:(A)= 转换结果 DSFR::MOV A,@R0 ANL A,#0F0H ;取十位数 SWAP A ;变为标准BCD 码 MOV B,#10 MUL AB ;(A)=D1×10 MOV R7,A ;D1× 10暂存 R7 MOV A,@R0 ANL A,#0FH ;取个位 ADD A,R7 ;A=D1×10+D0 RET 1、实验内容: 子程序设计要点: 1) 子程序一般为多次返复使用的程序段,一般应说明入口条件,DSFR 子程序的 入口条件是:被转换为二进制的单字节BCD 码为间接寻址,间接寻址寄存器为R0。要调用DFSR 子程序必需先将压缩BCD 码的存放地址赋与R0。而出口条件是指最后结果在哪儿存放。本子程序转换结果在ACC 内。 2) 主程序调用子程序,在调试时一般要先调试子程序、再调试主程序。

2、实验步骤 1)打开PV32编程序。汇编正确进入调试界面。否则修改程序重新汇编直到通过。 2)打开DATD窗口给20H、21H、R6、R7赋值 3)单步调试DSFR子程序观察并记禄寄存器、内存的变化。判断程序是否正确。若发现 问题重返编辑界面,修改、存盘、汇编。返回调试界面调试通过。 4) 设断点调试主程序观察并记禄寄存器、内存的变化。判断程序是否正确。若发现问 题重返编辑界面,修改、存盘、汇编。返回调试界面调试通过。 3.实验报告 1.写出主程序流程图、子程序流程图、程序清单 2.根据记渌数据给程序加注解 3.调试心得

C+程序设计实验报告-2013

C++程序设计 实验报告 专业计算机科学与技术班级 ____________ 学号 ____________ 姓名 ____________ 指导教师 __许加兵_ 信息与电子工程学院2013年9月-12月

C++程序设计实验报告 专业__________班级__________学号__________姓名__________ 成绩____________ 指导教师____________ 日期____________ 实验1 C++集成开发环境与C++函数程序设计 一、实验目的 1、了解和使用Visual Studio 2010的C++集成开发环境; 2、熟悉Visual Studio 2010环境的基本命令、功能键和常用的菜单命令; 3、学会完整的C++程序开发过程; 4、学习并掌握C++函数程序设计; 二、实验内容 1、安装、了解和使用Visual Studio 2010的C++集成开发环境; 2、通过以下的C++函数程序设计,熟悉Visual Studio 2010环境的基本命令、功能键和常用的菜单命令; 3、通过以下的C++函数程序设计,学会完整的C++程序开发过程; 4、完成以下的C++函数程序设计和调试: 1)编写一个函数print(),将一个整型向量输出到cout。此函数接受两个参数:一个字符串(用于“标记”输出)和一个向量。 2) 编写一个函数,接受一个vector 参数,返回一个vector ,其每个元素值是对应字符串的长度。此函数还找出最长和最短的字符串,以及字典序第一个和最后一个字符串。 三、简要说明C++开发环境安装和配置的过程

C语言程序设计实验实验指导书及答案

实验一熟悉C程序运行环境 班级学号姓名成绩 一、实验目的 1. 熟悉C语言Visual C++调试环境。 2. 掌握C程序的编辑、调试及运行。 二、实验内容 项目1. 调试并运行下面程序,并写出运行结果: #include <> int main() { printf(“Good morning!\n”); printf(“Hello,world!\n”); return 0; } 运行结果(注意,按照屏幕输出格式写): 项目2. 调试并运行下面程序,并写出运行结果: #include <> int main() { int a , b , sum; /*定义变量*/ a=23; b=56; /*为变量赋值*/ sum=a+b; /*计算两个变量的和*/ printf(“sum is %d\n”,sum); /*输出计算结果*/ return 0; } 运行结果:

项目3. 调试并运行下面程序,并写出运行结果: #include <> int max(int,int); int main() { int a , b , c; /*定义变量*/ a=23; b=56; /*为变量赋值*/ c=max(a,b); /*调用max函数,将得到的值赋给c*/ printf(“max is %d\n”,c); /*输出c的值*/ return 0; } int max(int x,int y) /*定义max函数,函数值为整型*/ { int z; /*定义变量*/ if(x>y) z=x; else z=y; return(z); /*将z的值返回*/ } 运行结果: 三、提高部分 1.试想,如果求10个数中的最大者,则程序该如何编写。 程序代码 运行结果:

VB程序设计实验报告

《VB程序设计》实验报告 专业:信息管理与信息系统 班级:1502班 学号: 姓名: 日期:2016年12月20日

一、实验题目:记事本程序的设计 二、实验目的 1、掌握菜单编辑器的使用方法。 2、掌握菜单事件的编程方法。 3、初步掌握多窗体程序设计方法。 三、实验内容与步骤 1、实验内容:设计一个记事本程序。 2、界面设计(贴出对象属性表和界面设计图)。 ①在窗体frmPad上添加一个文本框text1,并根据下表修改窗体及控件属性。 对象窗体属性设置 对象名属性值 FrmPad Caption “记事本” Text1 MultiLine True ScrollBars 2-Vertical Text 清空 ②使用菜单编辑器在窗体上建立菜单:选中窗体frmpad后,单击“工具”菜 单的“菜单编辑器”命令,弹出“菜单编辑器“对话框,如下图所示。 ③根据下表设置菜单。 菜单设置 菜单项标题菜单项名称快捷键其他属性编辑mnuEdit ···剪切mnuCut Ctrl+X ···复制mnuCopy Ctrl+C ···粘贴mnuPaste Ctrl+V

文本风格mnuStyle ···粗体(&B)mnuBold "复选"属性为True ···斜体(&I)mnuItalic "复选"属性为True 弹出菜单popMenu "可见"属性为True ···剪切popCut ···复制popCopy ···粘贴popPaste 设计好程序窗体如下图所示。 菜单编辑器

界面设计 3、编写程序代码。 Private Sub Form_Load() Text1.FontSize = 16 Text1.Text = "Visual Basic程序设计" mnuBold.Checked = False mnuItalic.Checked = False End Sub '剪切 Private Sub mnuCut_Click() Clipboard.Clear Clipboard.SetText Text1.SelText Text1.SelText = "" End Sub '复制

微机实验 子程序设计

微机实验三分支和循环程序设计实验 一、分支程序设计实验 1.实验目的 1.掌握分支程序的结构。 2掌握分支程序的设计、调试方法。 2.实验设备 微机一台 3.内容 设计一数据块间的搬移程序 设计思想: 程序要求把内存中一数据区(称为源数据块)传送到另一存贮区(称为目的数据块)。源数据块和目的数据块在存贮中可能有三种情况。 对于两个数据块分离的情况,数据的传送从数据块的首址开始,或者从数据块的末址开始均可,但对于有部分重叠的情况,则要加以分析,否则重叠部分会因“搬移”而遭破坏。 可以得出以下结论:当源数据块首址〉目的块首址时,从数据块首址开始传送数据。当源数据块首址〈目的块首址时,从数据块末地址开始传送数据。 流程图: 结果: 在源数据块中存入6个数,分别使SI大于、等于、小于DI均发觉数据正确传送。可见程序正确。

实现代码如下: DATA SEGMENT ORG 3500H SRC_MESS DB 1,2,3,4,5,6 ORG 3510H NEW_LOC DB 20 DUP(0) DATA ENDS ; CODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA START: MOV AX,DATA MOV DS,AX MOV ES,AX LEA SI,SRC_MESS LEA DI,NEW_LOC MOV CX,6 CLD ;DF置0 CMP SI,DI ;源数据块首址〈目的块首址时,从数据块末地址开始传送数据。 JL NEXT1 ;如果SI小于DI,则跳转到NEXT1(否则直接执行NEXT2) NEXT2: REP MOVSB NEXT1: ADD SI,CX ; SI=SI+CX-1 从末地址开始传递数据 DEC SI ; ADD DI,CX ;DI+=DI+CX-1 DEC DI ; STD ; DF置1 JMP NEXT2 ; CODE ENDS END START 结果显示:将3500H开始的1,2,3,4,5,6复制到3510H开始的地址。 DATA SEGMENT

C程序设计上实验报告(完整版)

C语言程序设计上机实验报告 学院:机械工程学院 班级:机自161213 姓名:刘昊 学号:20162181310 实验时间:2017年3月6号 任课老师:张锐

C语言程序设计上机实验报告 实验一 一、实验名称: C程序的运行环境和运行C程序的方法 二、实验目的:了解在C编译系统上如何编辑、编译、连接和运行一个C 程序 三、实验内容: (1). 输入并运行一个简单的C程序。 (2). 设计程序,对给定的两个数求和。 (3). 设计程序,对给定的两个数进行比较,然后输出其中较大的数。 四、源程序代码: 代码1: 运行结果1:

程序分析1: 该程序用来判断所输入的整数是否为一个素数,如果一个数能被除了1和它本身整除,还能被其它数整除,那么它就不是一个素数,因此,用for 循环来进行整除过程的简写。 代码2: 运行结果2:

程序分析2: 简单的使用printf()和scanf()函数进行简单的数据运算。代码3: 运行结果3:

程序分析3: 使用if语句进行判断。 五.实验总结 C语言程序设计上机实验报告 实验二 一、实验名称:顺序结构程序设计 二、实验目的:正确使用常用运算符(算术运算符、赋值运算符)的用法, 熟练掌握算术运算符及其表达式,逻辑运算符和逻辑表达式。 三、实验内容: (1). 编写程序,实现小写字母转大写。

(2). 编写程序,实现输入两个不同类型数据后,经过适当的运算(加、减、乘、除)后输出。 (3). 编写程序,计算三角形面积、立方体的体积和表面积、圆的面积和周长。 (4). 编写程序,实现单字符getchar和putchar输入输出。 (5). 编写程序,实现十进制、八进制、十六进制不同数制的输出。 四、源程序代码 代码1: 运行结果1: 程序分析1:

C语言程序设计实验报告(实验1-12)

文档从网络中收集,已重新整理排版.word版本可编辑.欢迎下载支持. 《C语言程序设计》 实验报告 2013~2014学年第二学期 班级 姓名 学号 指导教师

实验一 实验项目名称:C程序的运行环境和运行C程序的方法 所使用的工具软件及环境:Visual C++ 6.0 一、实验目的: 1.了解在Visual C++ 6.0环境下如何编辑、编译、连接和运行一个C程序; 2.通过运行简单的C程序,初步了解C源程序的特点。 二、预习内容: 教材《C语言程序设计教程》第1章。 三、实验内容: 1. 在Visual C++ 6.0环境下输入并运行下面的程序: #include int main( ) { printf("This is a C program.\n"); return 0; } 2. 在Visual C++ 6.0环境下输入下面的程序(有语法错误),编译、连接、调试该程序,直至程序 无语法错误,然后运行程序,并观察分析运行结果。 #include int main( ) { int a,b,sum a=3; b=4; sun=a+b; print(“%d+%d=%d\n”,a,b,sum); return 0; } 四、实验结果: 1. 运行结果(或截图): This is a C program. Press any key to continue

2. (1) 改正后的源程序: #include int main( ) { int a,b,sum; a=3; b=4; sum=a+b; printf("%d+%d=%d\n",a,b,sum); return 0; } (2) 运行结果(或截图): 3+4=7 五、思考题: 1. 一个C程序上机的步骤有哪些? 答:上级输入与编辑源程序—对原程序进行编译–与库函数链接–运行可执行的目标程序。 2. 组成C程序的基本单位是函数,一个函数包括哪几个部分? 答:一个函数包括两部分:分别为函数头或函数首部和函数体。 成绩指导教师签名 实验二 实验项目名称:数据类型、运算符和表达式 所使用的工具软件及环境:Visual C++ 6.0 一、实验目的: 1.掌握整型、实型与字符型这三种基本类型的概念; 2.掌握常量及变量的使用方法; 3. 掌握基本算术运算符及其表达式的使用方法; 4. 掌握++、--运算符、赋值运算符及其表达式的使用方法。 二、预习内容:

实验十一 子程序设计

实验十一子程序设计 知识提要: 1、掌握子程序的定义语句; 过程名 PROC [near/far] 过程体 RET 过程名 ENDP 其中过程名的命名方法与变量名相同,同一源程序中不能有相同的过程名.PROC为过程定义开始的伪指令,ENDP为过程定义结束伪指令,且PROC-ENDP必须配对使用。配对的PROC-ENDP 前面的过程名应相同。NEAR/FAR定义了过程的属性,前者表示所定义的过程只能被相同代码段的程序调用,称为段内调用;而后者所表示的过程只能被不同代码段的程序调用,称为段间远调用。 2.子程序结构形式 一个完整的子程序一般应包含下列内容: 1.)子程序的说明部分 在设计了程序时,要建立子程序的文档说明,使用户能清楚此子程序的功能和调用方法.说明时,应含如下内容: .子程序名:命名时要见名中意. .子程序的功能:说明子程序完成的任务; .子程序入口参数:说明子程序运行所需参数及存放位置; .子程序出口参数:说明子程序运行结果的参数及存放位置; .子程序所占用的寄存器和工作单元; .子程序调用示例; 2、)掌握子程序的调用与返回 在汇编语言中,子程序的调用用CALL,返回用RET指令来完成。当发生CALL过程调用时,返回地址入栈;而运行RET指令时,则由栈顶取出返回地址。 CALL指令执行分两步走;第一步,保护返回地址,利用堆栈实现,即将返回的地址压入

堆栈;第二步,转向子程序,即把子程序的首地址送入IP 或CS :IP 。 RET 指令功能是返回主程序,即把子程序的返回地址送入IP 或CS :IP 。 .段内调用与返回:调用子程序指令与子程序同在一个段内。因此只修改IP ; .段间调用与返回:调用子程序与子程序分别在不同的段,因此在返回时,需同时修改CS :IP 。 3.)子程序的现场保护与恢复 保护现场:在子程序设计时,CPU 内部寄存器内容的保护和恢复,在运行主程序时已经占用了一定数量的寄存器,子程序执行时也要使用寄存器。子程序执行完返回主程序后,要保证主程序按原来状态执行,这就需要对那些在主程序和子程序中都要使用的寄存器的内容在子程序体执行之前加以保护,这就是保护现场。 恢复现场:子程序执行完后再恢复这些主程序中寄存器的内容,称为恢复现场。 一般利用堆栈实现现场保护和恢复的格式: 过程名PROC [NEAR/FAR] PUSH AX PUSH BX . . PUSH DX . . . POP DX . . . POP AX RET 过程名 ENDP 4.子程序的参数传递方法 1. 寄存器传递参数

c程序设计实验报告.docx

. C++ 程序设计 实 验 报 告 : 班级: 学号: 指导教师:

. 实验一VC6.0 环境入门与简单程序设计 一、实验目的: 1、熟悉 VC++6.0 开了环境并编写简单的C++ 程序。 3、使用 C++ 语言编写简单的输入输出程序。 4、使用 VC++6.0 的 DEBUG 调试功能:单步执行、设置断点、观察变量值。 二、实验内容: 1、使用 VC++ 建立一个标准C++ 程序,编译、运行如下程序: #include Int main() { Cout<< ”Hello World!\n”; Cout<< ”Welcome to C++!\n”; } 2、编程计算图形的面积。程序可计算圆形、长方形、正方形等的面积,运行时首先提 示用户选择图形类型,然后根据不同图形类型,输入相关参数计算其面积,并将其显示出来。 #include using namespace std; void circle_area(); void rectangle_area(); void square_area(); int main()

. { int i; while(1) { cout<<" 请输入图形类型(1:圆形; 2:长方形; 3:正方形; 4:退出。): "; cin>>i; switch(i) { case 1:circle_area();break; case 2:rectangle_area();break; case 3:square_area();break; case 4:return 0; default:cout<<"输入错误!\n"; } } } void circle_area() { float r,s; cout<<" 输入圆的半径:"; cin>>r; s=3.14*r*r; cout<<" 该圆的面积是:"<>a>>b; s=a*b; cout<<" 该长方形的面积是:"<>a; s=a*a; cout<<" 该正方形的面积是:"<

VB程序设计教程 实验2答案

41011066付乾峰资源1103实验2 自测练习1,程序 Private Sub Command1_Click() Dim s s = Text1.Text Label1.Caption = Left(s, 2) End Sub Private Sub Command2_Click() Dim s s = Text1.Text Label2.Caption = Right(s, 2) End Sub Private Sub Command3_Click() Dim s s = Text1.Text Text1.Text = Label1.Caption & Label2.Caption End Sub 截图

自测练习2,程序 Private Sub Command1_Click() Dim m%, a%, b%, c%, d% m = V al(Text1.Text) a = m Mod 10 b = m \ 10 Mod 10 c = m \ 100 Mo d 10

d = m \ 1000 a = (a + 7) Mod 10 b = (b + 7) Mod 10 c = (c + 7) Mo d 10 d = (d + 7) Mod 10 Print "加密前的4位整数是" & m Print "加密后的结果是" & a & b & c & d End Sub Private Sub Command2_Click() End End Sub 截图 “我和校庆合张影,我给校庆送祝福”——北京科技大学学生公寓九斋活动策划

一、活动名称 “我和校庆合张影,我给校庆送祝福” ——北京科技大学学生公寓九斋活动 二、活动意义 1.在校庆前,表达九斋学员对北科60年校庆的祝福 2.展现九斋学子积极向上的精神风貌 3.加深学生与楼层长之间的友谊便于以后的管理 4.调动大家对校庆的热情与关注欲望 5.增进同学与同学之间的联系 活动地点及时间 地点:九斋一楼大厅校篮球场 时间:2011年3月20日-25日 三、活动对象 北京科技大学九斋公寓所有学生 四、内容: 1.活动时间推进表 时间任务

子程序设计实验

实验四子程序设计实验 一、实验目的 1.学习子程序的定义和调试方法。 2.掌握子程序、子程序的嵌套、递归子程序的结构; 3.掌握子程序的程序设计及调试方法。 二、实验设备 PC 机一台,TD-PITE 实验装置一套。 三、实验内容及步骤 1.求无符号字节序列中的最大值和最小值 设有一字节序列,其存储首地址为3000H,字节数为08H。利用子程序的方法编程求出该序列中的最大值和最小值。程序流程图如图4-1所示。 图4-1 程序流程图 实验程序 SSTACK SEGMENT STACK DW 64 DUP(?) SSTACK ENDS CODE SEGMENT ASSUME CS:CODE

START: MOV AX, 0000H MOV DS, AX MOV SI, 3000H ; 数据区首址 MOV CX, 0008H CALL BRANCH ; 调用子程序 HERE: JMP HERE BRANCH PROC NEAR JCXZ A4 PUSH SI PUSH CX PUSH BX MOV BH, [SI] MOV BL, BH CLD A1: LODSB CMP AL, BH JBE A2 MOV BH, AL JMP A3 A2: CMP AL, BL JAE A3 MOV BL, AL A3: LOOP A1 MOV AX, BX POP BX POP CX POP SI A4: RET BRANCH ENDP CODE ENDS END START 实验步骤: (1)根据程序流程图编写实验程序; (2)经编译、链接无误后装入系统; (3)键入E3000命令,输入8个字节的数据,如:D9 07 8B C5 EB 04 9D F9; (4)运行实验程序; (5)点击停止按钮,停止程序运行,观察寄存器窗口中AX的值,AX应为F9 04,其中AH中为最大值,AL中为最小值; (6)反复测试几组数据,检验程序的正确性。 程序说明:该程序使用BH和BL暂存现行的最大值和最小值,开始时初始化成首字节的内容,然后进入循环操作,从字节序列中逐个取出一个字节的内容与BH和BL相比较,若取出的字节内容比BH的内容大或比BL的内容小,则修改之。当循环操作结束时,将BH送AH,将BL送AL,作为返回值,同时恢复BX原先的内容。

相关文档
相关文档 最新文档