程序设计与算法语言实验指导书山东师范大学数学科学学院实验大纲实验一 TC开发环境一、实验目的1、熟悉C语言运行环境。
2、掌握C语言程序的书写格式和C语言程序的结构。
3、掌握C语言上机步骤,了解运行一个C程序的方法。
4、本实验可在学习完教材第一章后进行。
二、实验内容和步骤1.打开TC,运行一个程序,尝试用CTRL+F9编译运行;用ALT+F5查看结果。
学会调试程序,实验TC的各个菜单功能。
2.输入并调试下列程序 #include <stdio.h> main(){printf(“This is a C program.\n ”); }3. 输入并调试下面程序,对出现的错误进行修改#include <stdio.h> main() {int a,b; a=123 b=456; sum=a+b;printf(“sum= %d\n ”,sum); }实验二 基本数据类型一、实验目的1.熟练表达式的表示方法2.了解表达式的运行结果3.了解C语言中数据类型的意义二、实验内容和步骤1.了解整数变量的数据范围 #include <stdio.h> main() {int a; long b; a=32767; a=a+1; printf(“a=%d\n ”,a); b=32767; b=b+1; printf(“b=%d\n ”,b); 2.字符变量的使用#include <stdio.h> main(){char c1,c2; c1=’A ’; c2=97; printf(“c1=%c,c2=%c ,c1=%d\n ”,c1,c2,c1); printf(“c=%c\n ”,c1+1);} 3.输入一个华氏温度,要求输出摄氏温度。
公式为)32(95-=F c 。
输出要有文字说明,取2位小数。
main(){float c,f;printf(“please input a Fahrenheit”);scnaf(“%f”,&f);c=(5.0/9)*(f-32);printf(“the is %.2f\n”,c);}实验三选择结构一、实验目的1、了解条件与程序流程的关系2、了解用不同的数据使程序的流程覆盖不同的语句、分支和路径。
二、实验内容和步骤1.输入3个数,要求从小到大输出。
main(){ float a,b,c,t;scanf(“%f,%f,%f”,&a,&b,&c);if(a>b){t=a;a=b;b=t;}if(a>c){t=a;c=a;c=t;}if(b>c){t=b;b=c;c=t;}printf(“%f,%f,%f\n”,a,b,c);}2.计算分段函数12111031110x xy x xx x<⎧⎪=-<<⎨⎪-≥⎩main(){ int x,y;scanf(“%d”,&x);if(x<1)y=x;else if(x>=10)y=3*x-11;elsey=2*x-1;printf(“y=%d\n”,y);}运行程序,输入5回车,查看运行结果是否正确。
实验四循环结构一、实验目的1、掌握在程序设计条件型循环结构时,如何正确地设定循环条件,以及如何控制循环的次数。
2、了解条件型循环结构的基本测试方法。
二、实验内容与步骤1.下面是一个计算e的近似值(使误差小于给定的δ)的程序。
main(){double e=1.0,x=1.0,y,detax;int i=1;printf(“\n please input enter a error:”);scanf(“%lf”,&detax);y=1/x;while(y>=detax){x=x*i;y=1/x;e=e+y;++i;}printf(“%12.10lf”,e);}运行程序,输入0.001<回车>,查看结果,再运行程序输入0.00001<回车>,比较两次运行结果有何不同?2.求出1到1000之间,满足“用3除余2、用5除余3、用7除余2“的所有数。
#include <stdio.h>main(){ int n=1;do{ if(n%3==2&&n%5==3&&n%7==2)printf(“%8d”,n);n++;}while(n<1000);}实验五数组一、实验目的掌握有关数组和字符串的程序设计方法。
二、实验内容和步骤1 已知一组数据如下:6,3,42,23,35,71,98,67,56,38编写程序,把它们按从小到大的次序排列起来。
程序如下:# include<stdio.h># define N 10main(){int a[N]={6, 3, 42, 23, 35, 71, 98, 67, 56, 38};int i, j, t;printf(“The array before sorted:”);for(i=0; i<N; i++)printf(“%4d”, a[i]);for(i=0; i<9; i++){for(j=i+1; j<10; j++){if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t;}}}for(i=0; i<N; i++)printf(“%4d”, a[i]);return o;}2.运行下面的C程序,根据运行结果,可以说明什么?main( ){ int num[5]={1,2,3,4,5};inti i;for(i=0;i<=5;i++)printf(“%d”,num[i]);}实验六函数的定义和调用一、实验目的1.理解和掌握多模块的程序设计与调试的方法。
2.掌握函数的定义和调用的方法。
二、实验内容和步骤1.编写一个函数,判断一个数是不是素数。
在主函数中输入一个整数,输出是否是素数的信息。
int prime(int n) {int flag=1,i;for(i=2;i<n/2;&&flag==1;i++) if(n%i==0) flag=0; return(flag); }2. 上机调试下面的程序,记录系统给出的出错信息,并指出出错原因。
main() { int,y;printf(“%d \n”,sum(x+y)); int sum(a,b) { int a,b; return(a+b); } }实验七 函数的嵌套调用和递归调用一、实验目的1.学会使用递归方法进行程序设计。
二、实验内容和步骤1. 用递归方法求n 阶勒让德多项式的值,递归公式为1210()1((21)()(1)())/1n n n n P x x n n xP x n P x n n --=⎧⎪==⎨⎪--->⎩main() {int x,n; float p(int int); printf(“\nInput n&x ”); scanf(“%d,%d ”,&n,&x); printf(“n=%d,x=%d\n ”,n,x); printf(P%d(%d)=%6.2f ”,n,x,p(n,x));}float p(int n,int x){if(n==0) return 1;else if(n==1) return x;else return(((2*n-1)*x*p(n-1),x)-(n-1)*p((n-2),x))/n); }实验八指针的运算一、实验目的1. 熟悉指针的正确用法。
二、实验内容和步骤1、指出下面程序错误的原因。
main( ){int x=10,y=5,*px,*py;px=py;px=&x;py=&y;printf(“*px=%d,*py=%d,*px,*py);}2.下面的程序能获得上述运行结果吗?main(){char *S=”COMPUTER”;char c;printf(“which style you want to \n”);printf(“capital (c) or uncapital(u);”);c=getchar();if(c=’c’)put(s);else {s=”computer”;puts(s);}}分析出错原因。
实验九指针与函数一、实验目的1、了解指针参数的特殊性。
2、掌握函数、指针、数组的用法。
二、实验内容与步骤1、想使指针变量pt1指向a 和b 中的大者,pt2指向小者,以下程序能否实现此目的?swap(int *p1,int *p2){int *p;p=p1;p1=p2;p2=p;}main(){int a,b;scanf(“%d,%d”,&a,&b);pt1=&a;pt2=&b;if(a<b)swap(pt1.pt2);printf(“%d,%d\n”,*pt1,*pt2);}上机调试此程序。
如果不能实现题目要求,指出原因,并修改之。
2、下面的程序。
注意其中的复杂声明语句;int (*function[4])();和各标记符的含义,并记录执行结果。
main(){int fun1();int fun2();int fun3();int fun4();int (*function[4])();int a=10,b=5,i;function[0]=fun1;function[1]=fun2;function[2]=fun3;function[3]=fun4;for(I=0;I<4;i++)printf(“fun no.%d->%d\n”,i+1,execute(a,b,function[i]));}execute(int x,int y,int *fun()){return(*fun)(x,y);}fun1(int x, int y){return(x+y);}fun2(int x,int y){return(x-y);}fun3(int x,int y){return(x*y);}fun4(int x,int y){return(x/y);}实验十结构体和共用体一、实验目的1、掌握结构体类型方法以及结构体变量的定义和引用。
2、掌握指向结构体变量的指针变量的应用,特别是链表的应用。
3、掌握运算符”.”和”->”的应用。
4、共用体的概念和应用。
二、实验内容和步骤1、编写程序:有4名学生,每个学生的数据包括学号、姓名、成绩,要求找出成绩最高者的姓名和成绩,上机运行程序。
#define N 4struct student{ char num[6];char name[8];int score;}stu[N];main(){int i,j,max;maxi;for(i=0;i<N;i++){scanf(%s”,stu[i].num);scanf(“%s”,stu[i].name);scanf(“%d”,&stu[i].score);}max=0;maxi=0;for(i=0;i<N;i++){if(max<stu[i].score){ max=stu[i].score;maxi=i;}printf(“%s,%d\n”,stu[maxi].name,stu[maxi].score); }。