实验一上机操作初步 (2 学时 )
一、实验方式:一人一机
二、实验目的:
1、熟悉 VC++语言的上机环境及上机操作过程。
2、了解如何编辑、编译、连接和运行一个 C 程序。
3、初步了解 C程序的特点。
三、实验内容:
说明:前三题为必做题目,后两题为选做题目。
1、输出入下信息: ( 实验指导书 P79)
*************************
Very Good
*************************
2、计算两个整数的和与积。( 实验指导书 P81)
3、从键盘输入一个角度的弧度值x,计算该角度的余弦值,将计算结果输出到屏幕。 ( 书
P3)
4、在屏幕上显示一个文字菜单模样的图案:
=================================
1 输入数据
2 修改数据
3 查询数据
4 打印数据
=================================
5、从键盘上输入两个整数,交换这两个整数。
四、实验步骤与过程:
五、实验调试记录:
六、参考答案:
1、#include <>
void main( )
{printf( printf( printf( “ ********************\n
“Very Good\n” );
“ ********************\n
” );
” );
}
2、#include <>
void main( )
{int a,b,c,d;
printf( “ Please enter a,b: ”);
scanf( “%d,%d” ,&a,&b);
c=a+b; d=a*b;
printf( “ %d+%d=%d\n” ,a,b,c);
printf( “ %d*%d=%d\n” ,a,b,d);
}
3、#include <>
#include <>
void main( )
{ double x,s;
printf( “ Please input value of x: ”);
scanf( “%lf ” ,&x);
s=cos(x);
printf( “ cos(%lf)=%lf\n ”,x,s);
}
4、#include <>
void main( )
{ printf( “ ==================================\n”);
printf( “ 1 输入数据 2 修改数据 \n ”);
printf( “ 3 查询数据 4 打印数据 \n ”);
printf( “ ===================================\n”);
}
5、#include <>
void main( )
{ int x,y,t;
printf( “ Please enter x and y: ”);
scanf( “%d%d”,&x,&y);
t=x; x=y; y=t;
printf( “ After swap:x=%d,y=%d\n ” ,x,y);
}
实验二简单的 C程序设计 (4 学时 )
一、实验方式:一人一机
二、实验目的:
1、掌握 C语言的数据类型。
2、学会使用 C语言的运算符及表达式。
3、掌握不同数据类型的输入输出方法。
三、实验内容:
说明:前四题为必做题目,后两题为选做题目。
1、输入 r1 、 r2 ,求出圆形垫片面积。 ( 实验指导书 P84)
2、输入华氏温度 h,输出摄氏温度 c。 ( 实验指导书 P85)
3、从键盘输入一个 3 位整数,将输出该数的逆序数。 ( 实验指导书 P89)
4、输入并运行以下程序,分析运行结果。
#include <>
void main( )
{ int i,j; i=8;
j=10;
printf( “ %d,%d\n” ,++i,++j); i=8;
j=10;
printf( “ %d,%d\n” ,i++,j++); i=8;
j=10;
printf( “ %d,%d\n” ,++i,i); i=8;
j=10;
printf( “ %d,%d\n” ,i++,i);
}
5、输入三角形三条边的边长,求三角形的面积。( 书 P55)
6、输入 3 个字符型数据,将其转换成相应的整数后,求它们的平均值并输出。( 书 P55)
四、实验步骤与过程:
五、实验调试记录:
六、参考答案:
1、#include <>
#define PI
void main( )
{ float r1,r2;
double s1,s2,s;
printf( “ Please enter r1,r2:\n”);
scanf( “%f%f”,&r1,&r2);
s2=r2*r2*PI; s1=r1*r1*PI; s=s2-s1;
printf( “ s=%lf\n ” ,s);
}
2、#include <>
void main( )
{ float h,c;
printf( “请输入华氏温度:” );
scanf( “%f” ,&h);
c=9*(h-32);
printf( “ \n 摄氏温度: %f\n ”,c);
3、#include <>
void main( )
{int a,b,c,x,y;
printf(“请输入一个 3 位的正整数: \n ”);
scanf(“%d” ,&x);
a=x/100;/*求x的百位数*/
b=(x-a*100)/10; /*求x的十位数*/
c=x-a*100-b*10; /*求x的个位数*/
y=c*100+b*10+a;
printf( “ %d:%d\n” ,x,y);
}
4、运行结果: 9,11
8,10 9,8 8,8
5、#include <>
#include <>
void main( )
{ int a,b,c;
double area,s;
printf(“ Please enter a,b,c:” );
scanf(“%d,%d,%d” ,&a,&b,&c);
s=(double)(a+b+c)/2;
area=sqrt(s*(s-a)*(s-b)*(s-c));
printf( “ area=%.2lf\n”,area);
}
6、#include <>
void main( )
{char a,b,c;
float x;
printf(“ Please enter:\n”);
a=getchar(); b=getchar(); c=getchar();
x=(a+b+c)/;
printf(“ (a+b+c)/3=%.2f\n” ,x);
}
实验三选择结构程序设计 (2 学时 )
一、实验方式:一人一机
二、实验目的:
1、熟练掌握 if语句和switch语句。
2、练习并掌握多分支选择结构的编程方法。
3、学习调试和修改程序的步骤。
三、实验内容:
说明:前三题为必做题目,后两题为选做题目。
1、读入 3 个分别表示箱子长、宽、高的整数值,判断并输出该箱子是立方体还是长方体。
( 实验指导书 P104)
2、输入某一年月,输出该月的天数。( 实验指导书 P105)
3、有一函数:x (x<1)
y= 2x-1 (1≤x<10)
3x-11 (x≥10)编写程序,输入x 值,输出 y 值。
4、从键盘输入一个字符,如果该字符为小写字母,则转换为大写字母输出;如果该字符
为大写字母,则转换为小写字母输出;如果为其他字符,原样输出。 ( 书 P94) 5、输入 4 个整数,要求按由小到大的顺序输出。
四、实验步骤与过程:
五、实验调试记录:
六、参考答案:
1、#include <>
void main( )
{int l,w,h;
printf(“请输入箱子的长、宽、高:\n ”);
scanf(“%d%d%d”,&l,&w,&h);
if(l==w&&w==h)/*如果长、宽、高相等,则为立方体
*/
printf(“该箱子是立方体。”);
else
printf(“该箱子是长方体。”);
}
2、#include <>
void main( )
{int year,month,days;
printf(“ Please enter year and month:\n” );
switch(month)
{ case 2: if(year%4==0&&year%100!=0||year%400==0)
days=29;
days=28;
break;
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( “ %d年 %d月有 %d天\n ” ,year,month,days);
}
3、#include <>
void main( )
{float x,y;
printf( scanf(
“ Please input
x:\n “%f” ,&x);
”);
if(x<1)
y=x;
else if(x<10)
y=2*x-1;
else
y=3*x-11;
printf( “ y=%f\n ”,y);
}
4、#include <>
void main( )
{char x;
printf( “ Enter a char:\n ”);
x=getchar();
if(x>= ‘a’&&x<=‘ z’ )
x=x-32;
else if(x>=‘ A’&&x<=‘Z’)
x=x+32;
putchar(x);
}
5、#include <>
void main( )
{int a,b,c,d,t;
printf(“请输入 4 个整数:” );
scanf(“%d%d%d%d”,&a,&b,&c,&d); if(a>b) { t=a; a=b; b=t; }
if(a>c) { t=a; a=c; c=t; }
if(b>c) { t=b; b=c; c=t; }
if(b>d) { t=b; b=d; d=t; }
if(c>d) { t=c; c=d; d=t; }
printf(“排序结果如下: \n ” );
printf(“ %d,%d,%d,%d\n” ,a,b,c,d);
}
实验四循环结构程序设计 (4 学时 )
一、实验方式:一人一机
二、实验目的:
1、熟练掌握 while 语句、 do-while语句和for语句。
2、练习并掌握循环结构的嵌套形式。
3、掌握循环结构的程序设计方法。
三、实验内容:
说明:前四题为必做题目,后两题为选做题目。
1、从键盘上输入若干个学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结
束输入。 ( 实验指导书 P117)
2、求所有的水仙花数。水仙花数是一个 3 位数的自然数,该数各位数的立方和等于该数
本身。 ( 实验指导书 P118)
3、判断输入的某个数是否为素数。若是,输出YES,否则输出 NO。( 书 P123)
4、计算π的近似值。公式如下:π/4=1-1/3+1/5-1/7+,直到最后一项的绝对值小
于10-6为止。 ( 书 P123)‘
5、计算 s=1!+2!++20! 的值并输出。
6、输入 10 个整数,统计并输出其中正数、负数和零的个数。
四、实验步骤与过程:
五、实验调试记录:
六、参考答案:
1、#include <>
void main( )
{float x,max,min;
printf(“ Please input scores:
”);
scanf(“%f” ,&x);
max=min=x;
while(x>=0)
if(x scanf(“ %f”,&x); } printf( “ \nmax=%f\nmin=%f\n ”,max,min); } 2、#include <> void main( ) { int x,y,z; int k=100; while(k<=999) { x=k/100; y=(k-x*100)/10; z=k-x*100-y*10; if(k==x*x*x+y*y*y+z*z*z) printf( k++; } “%d\n”,k); } 3、#include <> #include <> void main( ) {int i,x,yes,a; printf(“ Enter integer number: scanf(“%d” ,&x); yes=1; i=2; a=(int)sqrt((double)x); while(yes&&i<=a){if(x%i==0) i++; ”); yes=0; } printf( “ %d” ,x); if(yes) printf(“ YES\n”); else printf(“ NO\n” ); } 4、#include <> void main( ) { float pi,t,n; int sign=1; pi=0; n=1; t=1; while(fabs(t)>=1e-6) { t=sign/n; pi+=t; n+=2; sign=-sign; } pi=pi*4; printf( “ pi=%f\n ” ,pi); } 5、#include <> void main( ) { float s=0,t=1; int n; for(n=1;n<=20;n++) { t=t*n; s=s+t; } printf( “ 1!+2!++20!=%f\n ” ,s); } 6、#include <> void main( ) { int x,i,a1=0,b1=0,c1=0; for(i=1;i<=10;i++) { printf(“ \n请输入第%d个数:”,i); scanf( “ %d”,&x); if(x>0)a1++; else if(x<0) b1++; else c1++; } printf( “整数有 %d个,负数有 %d个,零有 %d个 \n ”,a1,b1,c1); } 实验五综合实验 1:结构化程序设计(2 学时 ) 一、实验方式:一人一机 二、实验目的: 1、进一步掌握选择结构、循环结构的编程特点。 2、掌握 C语言的结构化程序设计思想。 3、学习利用循环结构实现的一些常用算法(如穷举、迭代、递推等)。 三、实验内容: 说明:前两题为必做题目,后两题为选做题目。 1、编一程序,对于给定的一个百分制成绩,输出对应 A,B,C,D,E 表示的的等级成绩。设: 90 分以上为 A, 80-89 分为 B,70-79 分为 C, 60-69 分为 D,60 分以下为 E。( 书 P93) 2、百马百担问题。 ( 实验指导书 P121) 3、输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。 4、输出如下图案:* *** ***** ******* ***** *** * 四、实验步骤与过程: 五、实验调试记录: 六、参考答案: 1、#include <> void main( ) { int score,temp,logic; char grade; logic=1; while(logic) { printf(“ Input score:” ); scanf( “ %d”,&score); if(score>100||score<0) printf(“\nError,Input again!\n”); else logic=0; printf(“ \n ”); } if(score==100) temp=9; else temp=score/10; switch(temp) { case 9: grade= ‘A’;break; case 8: grade= ‘B’;break; case 7: grade= ‘C’;break; case 6: grade= ‘D’;break; default: grade= ‘ E’ ; } printf( “ Score is %d,the grade is %c.\n ” ,score,grade); } 2、#include <> void main( ) {int m,n,k; int sum=0; printf(“各种驮法如下: \n ” ); for(m=1;m<=100;m++) for(n=1;n<=100-m;n++) { k=100-m-n; if(k%2==0&&m*3+n*2+k/2==100) {printf( “大马 %3d匹;中马 %3d匹;小 马%3d 匹.\n ” ,m,n,k); sum++; } } printf( “共有 %d种驮 法 .\n ”,sum); } 3、#include <> void main( ) {char c; int letter=0,space=0,digit=0,other=0; printf(“请输入一行字符: \n ”); while((c=getchar( ))!=‘ \n’) { if(c>=‘ a’ &&c<=‘z’||c>=‘A’&&c<=‘Z’) letter++; else if(c== ‘ ’) space++; else other++; } printf(“字母数=%d,空格数=%d\n”,letter,space); printf( “数字数 =%d,其他字符数 =%d\n”,digit,other); } 4、#include <> void main( ) { int i,j,k; for(i=0;i<=3;i++) { for(j=0;j<=2-i;j++) for(k=0;k<=2*i;k++) printf( printf( “ ”); “* ”); printf( “ \n ”); } for(i=0;i<=2;i++) { for(j=0;j<=i;j++)printf( for(k=0;k<=4- 2*i;k++) printf( printf( “ \n ”); “ ”); “* ”); } } 实验六函数程序设计 (4 学时 ) 一、实验方式:一人一机 二、实验目的: 1、掌握 C语言中函数的三要素:函数定义、函数调用和函数说明。 2、掌握通过参数在函数间传递数据的方法。 3、掌握全局变量、局部变量、动态变量、静态变量的概念和使用方法。 三、实验内容: 说明:前四题为必做题目,后两题为选做题目。 1、从键盘输入三角形的 3 条边,调用三角形面积函数求出其面积,并输出结果。( 实验 指导书 P130) 2、输入整数 n,输出高度为n 的等边三角形。当n=5 时的等边三角形如下:( 实验指导 书P134) * *** ***** ******* ********* #include <> int a=5; int b=7; void main( ) { int a=4,b=5,c; c=plus(a,b); printf(“a+b=%d\n” ,c); } plus(int x,int y) { int z; z=x+y; return (z); } 4、求 500 以内的所有亲密数对。若正整数 A 的所有因子(包括 1 但不包括自身,下同) 之和为 B,而 B 的因子之和为 A,则称 A 和 B 为一对亲密数对。 ( 实验指导书 P136) 5、输入并运行以下程序,分析运行结果。 #include <> int d=1; fun(int p) { static int d=5; d+=p; printf(“ %d ”,d); return (d); } void main( ) { int a=3; printf( “ %d ”,fun(a+fun(d))); } 6、设计一个函数,输出整数n 的所有素数因子。 ( 书 P157) 四、实验步骤与过程: 五、实验调试记录: 六、参考答案: 1、#include <> #include <> float area(float a,float b,float c) s=(a+b+c)/2; p=s*(s-a)*(s-b)*(s-c); area=sqrt(p); return (area); } void main( ) {float x,y,z,ts; scanf(“%f%f%f”,&x,&y,&z); if(x>0&&y>0&&z>0&&x+y>z&&y+z>x&&x+z>y) { ts=area(x,y,z); printf( “ area=%f\n ” ,ts); } else printf( “ data error!\n ” ); } 2、#include <> void trangle(int n) { int i,j; for(i=0;i { for(j=0;j<=n-i;j++) putchar( for(j=0;j<=2*i;j++) putchar( ‘ ’);/* ‘* ’);/* 打印每一行的空格 */ 打印每一行的 * 号 */ putchar( ‘ \n ’); } } void main( ) { int n; printf(“Please enter n: scanf( “%d”,&n); printf(“\n ” ); trangle(n); ”); } 3、a+b=9 4、#include <> int facsum(int m) { int sum=1,f=2; while(f<=m/2) { if(m%f==0) sum=sum+f; f++; return sum; } void main( ) { int m=3,n,k; while(m<=500) { n=facsum(m); k=facsum(n); if(m==k&&m<=n) printf( “%d,%d\n”,m,n); m++; } } 5、6 15 15 6、#include <> int prime(int n) { int i,flag=1; for(i=2;i<=n/2;i++) if(n%i==0) { flag=0; retun flag; } return flag; } void factor(int n) { int i; i=2; while(i<=n) { if((n%i==0)&&prime(i)) { printf(“%d”,i); n=n/i; continue; } i++; } } void main( ) {int num; printf( “ Enter num: ” ); printf(“ prime factor is:\n”); factor(num); } 实验七数组程序设计 (4 学时 ) 一、实验方式:一人一机 二、实验目的: 1、掌握数组的定义、赋值和输入输出的方法。 2、学习用数组实现相关的算法(特别是排序算法)。 3、掌握 C语言中字符数组和字符串处理函数的使用。 三、实验内容: 说明:前四题为必做题目,后两题为选做题目。 1、下列程序的功能是:输入10 个整数,按每行 3 个数输出这些整数,最后输出 10 个整数的 平均值。程序中有几处错误,试找出它们后加以修改,并上机验证修改结果。 #include <> void main( ) { int i,n,a[10],avg; for(i=0;i scanf( “ %d”,a[i]); for(i=0;i { if(i%3==0)printf( “ \n ”); printf(“%d ”,a[i]); } for(i=0;i avg+=a[i]; printf( “\navg=%f\n ”,avg); } 2、写一个函数,对输入的10 个整数按从小到大的顺序排序(升序,用冒泡排序实现)。 ( 实验指导书 P147) 3、编写程序,判断某一字符串是不是“回文数”,回文数是从左至右或从右至左读起来都 是一样的字符串。 ( 实验指导书 P153) 4、输入一个 3 行 3 列矩阵的所有元素,然后求出主对角线元素之和。 5、给定某年某月某日,将其转换成这一年的第几天并输出。( 实验指导书 P152) 6、编写程序,在有序的数列中查找某数,若该数在此数列中,则输出它所在的位置, 否则输出 no found 。( 书 P191) 五、实验调试记录: 六、参考答案: 1、#include <> void main( ) { int i,n=10,a[10]; float avg=0; for(i=0;i scanf(“ %d”,&a[i]); for(i=0;i { if(i%3==0)printf( “ \n ”); printf(“%d ”,a[i]); } for(i=0;i avg+=a[i]; avg=avg/n; printf( “\navg=%f\n ”,avg); } 2、#include <> void sort1(int s[ ],int n) { int i,j; int t; for(i=0;i for(j=9;j>=i+1;j--) if(s[j] { t=s[j];s[j]=s[j-1];s[j-1]=t; } } void main( ) {int i,a[10]; printf( “ Please input 10 numbers:\n ”); for(i=0;i<10;i++) scanf( “%d” ,&a[i]); sort1(a,10); printf( “ The sorted 10 numbers:\n”); for(i=0;i<10;i++) printf(“ %d ”,a[i]); } 3、#include <> #include <> #define N 40 void main( ) { char str[N],ch= ‘ Y’ ; int i; int len; printf(“Input a string:\n”); scanf( “ %s” ,str); len=strlen(str); for(i=0;i if(str[i]!=str[len-1-i]) { ch=‘ N’; break; } if(ch==‘Y’ ) printf(“%s是一个回文数 \n ”,str); else printf(“%s不是一个回文数 \n ”,str); } 4、#include <> void main( ) { int a[3][3],sum; int i,j; sum=0; for(i=0;i<3;i++) for(j=0;j<3;j++) scanf( “ %d”,&a[i][j]); for(i=0;i<3;i++) sum=sum+a[i][i]; printf( “sum=%d\n”,sum); } 5 、#include <> int day_tab[2][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31}, {0,31,29,31,30,31,30,31,31,30,31,30,31}}; int day_year(int year,int month,int day) { int i,j,s=0;