admin 管理员组文章数量: 887021
2023年12月18日发(作者:screened)
实验1熟悉Visual C++6.0环境及运行C程序
一、实验目的
1.掌握在Visual C++6.0环境下C程序的建立、编辑、编译和执行过程。
2.掌握C程序的最基本框架结构,完成简单程序的编制与运行和调试。
3.掌握发现语法错误、逻辑错误的方法以及排除简单错误的操作技能。
二、实验内容
1.从键盘输入两个数a和b,求它们的平方和,并在屏幕上输出。输入该C程序,编译并运行之,记下屏幕的输出结果,以文件名sy1_1.c保存。
#include
main()
{
int a,b,sum; /*定义整型变量a、b、sum */
printf("Please Input a,b n "); /*输出提示信息*/
scanf("%d%d",&a,&b); /*从键盘输入两个整数分别赋予a和b*/
sum=a*a+b*b; /*赋值语句,把a2+b2的结果赋给变量sum*/
printf("%d*%d+ %d*%d=%dn",a,a,b,b,sum); /*输出语句*/
}
2. 改错题
在程序中画出错误的语句,将修改后的语句完整地写在该语句的右边。
(1计算x*y的值并将结果输出。试纠正程序中存在的错误,以实现其功能。程序以文件名sy1_2.c保存。
#include
main main()
{ int x=2;y=3;a int x=2,y=3,a;
A=x*y a=x*y;
print ('a=%d",A); printf ("a=%d",a);
printf("n");
}
(2)下程序的功能为:求两数中的较大数据并输出。纠正程序中存在的错误,以实现其功能。程序以文件名sy1_3.c保存。
#include
1
该程序的运行结果:
Please Input a,b
2 4
2*2+4*4=20
该程序的运行结果:
a=6
viod main() void main()
{
int a ,b , max;
Scanf(“%d,%d”,&a,&b); scanf(“%d,%d”,&a,&b);
Max=a; max=a;
If (max
Printf(“max=%d”,max); printf(“max=%d”,max);
}
3.程序填空题
(1)从键盘输入两个整数,输出这两个整数的和。根据注释信息填写完整程序,以实现其功能。以文件名sy1_4.c保存。
#include
main()
{
int x,y,total; /* 定义整型变量x,y,total*/
printf("Please input x,y ! "); /*
输出提示信息 */
scanf(“%d%d”,&x,&y); /*
由键盘输入两个数分别赋予x和y*/
total=x+y; /*
赋值语句 */
printf("%d + %d=%dn",x,y,total); /* 输出两个整数的和 */
}
(2)从键盘输入两个整数,输出这两个整数的差。根据注释信息填写完整程序,以实现其功能。程序以文件名sy1_5.c保存。
#include
main()
{
int a,b,m;
printf("Input a,b please ! ");
scanf("%d%d",&a,&b);
_m=a-b;___ /*
赋值语句,将a和b的差值赋给m */
_printf(“%d-%d=%dn”,a,b,m);_ /* 输出a 和b差的结果值后换行 */
}
4.编程题
2
该程序的运行结果:
5,3
max=5
该程序的运行结果:
Please input x,y !2 4
2+4=6
该程序的运行结果:
Input a,b please !20 17
20-17=3
(1)编程序,运行后输出如下信息:“Better City,Better Life!”。程序以文件名sy1_6.c保存。
#include
main()
{
printf("Better City,Better Life!n");
}
(2)编程序,从键盘输入3个整数,输出它们的平方和。程序以文件名sy1_7.c保存。
#include
main()
{
int a,b,c,sum;
printf("Please Input a,b,c n ");
scanf("%d,%d,%d",&a,&b,&c);
sum=a*a+b*b+c*c;
printf("%d*%d+%d*%d+%d*%d=%dn",a,a,b,b,c,c,sum);
}
该程序的运行结果:
Please Input a,b,c
2,3,4
2*2+3*3+4*4=29
3
实验2 数据类型、运算符和表达式
一、实验目的
1.理解C语言中各种数据类型的意义,掌握各种数据类型的定义方法。
2.掌握C语言常量、变量的定义与使用。
3.掌握C语言数据类型及运算符的使用规则。
二、实验内容
1.改错题
在程序中画出错误的语句,将修改后的语句完整地写在该语句的右边。
(1)下列程序的功能为:已知圆锥半径r和高h,计算圆锥体积v。纠正程序中存在的错误,以实现其功能。程序以文件名sy2_1.c保存。计算圆锥体积的公式为:
#include stdio.h #include
main(); main()
{ float r=10,h=5; float r=10,h=5,v;
v=1/3*3.14159*r^2*h; v=1.0/3*3.14159*r*r*h;
printf("v=%dn",v) printf("v=%dn",v);
}
(2)下列程序的功能为:通过键盘输入两个整数分别存放在变量x、y中,不借用第3个变量实现变量x、y互换值。纠正程序中存在的错误,以实现其功能。程序以文件名sy2_2.c保存。
#include
main()
{
}
4
int x,y;
printf("请输入两个整数n");
scanf("%d%d",x, y); scanf("%d%d",&x, &y);
printf("初始状态下的x:%d y: %dn",x,y );
x=x+y x=x+y;
y=x-y;
x=x-y;
该程序的运行结果:
v=523.598333
printf("最终状态下的x:%d y: %d/n",x,y);
该程序的运行结果:
请输入两个整数
2 5
初始状态下的x:2 y: 5
最终状态下的x:5 y: 2
2.程序填空题
(1) 计算当x=4时,公式y序以文件名sy2_3.c保存。
#include
main()
{
float x=4.0,y;
y=(1+x*x*x)/(x*x+4*sqrt(x)+10)*2*x*x;
printf("%f",y);
}
(2) 下列程序的功能为:从键盘输入3个整数分别存入变量a、b、c,然后,将变量a的值存入变量b,将变量b的值存入变量c,将变量c的值存入变量a,输出经过转存后变量a、b、c的值。(提示:使用中间变量)补充完善程序,以实现其功能。程序以文件名sy2_4.c保存。
#include
main ()
{
int a,b,c, t ;
printf("Please input a,b,c: ");
scanf("%d%d%d", &a,&b,&c );
t=a ;
a=c ;
c=b ;
b=t ;
printf("a=%dnb=%dnc=%dn",a,b,c);
}
3.编程题
(1)从键盘输入3个大写英文字母,把它们转换成小写字母后输出。程序以文件名sy2_5.c保存。
#include
main()
{
char c1,c2,c3;
scanf("%c%c%c",&c1,&c2,&c3);
c1=c1+32;
c2=c2+32;
c3=c3+32;
5
1x3x4x102×2x2
的值。补充完善程序,以实现其功能。程该程序的运行结果:
61.176471
该程序的运行结果:
Please input a,b,c:1 2 3
a=3
b=1
c=2
该程序的运行结果:
ABC
abc
printf("%c%c%cn",c1,c2,c3);
}
(2)从键盘输入3个整数,输出它们的平均值与积。程序以文件名sy2_6.c保存。
#include
main()
{
int a,b,c,ji;
float ave;
printf("请输入3个整数n");
scanf("%d%d%d",&a,&b,&c);
ave=(a+b+c)/3.0;
ji=a*b*c;
printf("ave=%f,ji=%dn",ave,ji);
}
6
该程序的运行结果:
请输入3个整数
2 4 6
ave=4.000000,ji=48
实验3 顺序结构程序设计
一、实验目的
1.掌握scanf()、printf()以及其他常用输入、输出函数的使用。
2.掌握格式控制符的使用。
3.掌握顺序结构程序设计的方法。
二、实验内容
1.改错题
在程序中画出错误的语句,将修改后的语句完整地写在该语句的右边。
(1)下列程序的功能为: 输入一个华氏温度,要求输出摄氏温度。公式为:C=
5(F32),输出取92位小数。纠正程序中存在的错误,以实现其功能。程序以文件名sy3_1.c保存。
#include
main()
{
float c,f;
printf("请输入一个华氏温度:n");
scanf("%f",f); scanf("%f",&f);
c=(5/9)*(f-32); c=(5.0/9)*(f-32);
printf("摄氏温度为:%5.2fn" c); printf("摄氏温度为:%5.2fn", c);
}
(2)下列程序的功能为:按下列公式计算并输出x的值。其中a和b的值由键盘输入。纠正程序中存在的错误,以实现其功能。程序以文件名sy3_2.c保存。
该程序的运行结果:
请输入一个华氏温度:
75
摄氏温度为:23.89
x2ab(ab)2
#include
main()
{ int a,b;
float x;
该程序的运行结果:
4,6
x=0.480000
scanf("%d,%d",a,b); scanf("%d,%d",&a,&b);
x=2ab/(a+b)(a+b); x=2.0*a*b/((a+b)*(a+b));
printf("x=%dn",x); printf("x=%fn",x);
}
(3)下列程序的功能为:从键盘输入一个小写字母,要求改用大写字母输出。请纠正程序中存在的错误,使程序实现其功能,程序以文件名sy3_3.c保存。
#include
main()
{
char c1,c2;
printf("%c,%dn",c1,c1);
7
该程序的运行结果:
a
a,97
A,65
c1=getchar; c1=getchar(); /* 从键盘输入一个小写字母 */
c2=c1+26; c2=c1-32; /* 转换为大写字母 */
printf("%c,%dn",c2,c2); /* 输出大写字母及其ASCII码值 */
}
2.程序填空题
(1)下列程序的功能为:按给定格式输入数据,按要求格式输出结果。补充完善程序,以实现其功能。程序以文件名sy3_4.c保存。
输入形式 enter x,y:2 3.4
输出形式 x+y=5.4
#include
main()
{
int x;
float y;
printf ("enter x,y: ");
scanf("%d%f",&x,&y);
printf("x+y=%.1fn",x+y);
}
(2) 下列程序的功能为:设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf输入数据r、h,输出计算结果,输出时要求有文字说明,取小数点后2位数字。(周长l=2r,圆面积s=r,圆球表面积sq=4r,圆球体积vq=善程序,以实现其功能。程序以文件名sy3_5.c保存。
#include
main()
{
float pi,h,r,l,s,sq,vq,vz;
pi=3.1415926;
printf("请输入圆半径r,圆柱高h:n");
scanf("%f%f",&r,&h) ;
l= 2*pi*r ;
s= pi*r*r ;
sq= 4*pi*r*r ;
vq= 4.0/3*pi*r*r*r ;
vz= pi*h*r*r ;
printf("圆周长为:%.2fn",l );
printf("圆面积为:%.2fn", s );
printf("圆球表面积为:%.2fn", sq );
printf("圆球体积为:%.2fn", vq );
printf("圆柱体积为:%.2fn", vz );
}
(3) 下列程序的功能为:通过键盘输入两个整数,分别存入变量x、y中,当x #include 22该程序的运行结果: enter x,y:2 3.4 x+y=5.4 43r;圆柱体积vz=hr2),请补充完3该程序的运行结果: 请输入圆半径r,圆柱高h: 1.5 3 圆周长为:9.42 圆面积为:7.07 圆球表面积为:28.27 圆球体积为:14.14 圆柱体积为:21.21 该程序的运行结果: 8 请输入x,y: 3 5 交换后的x:5 y:3 main() { int x,y,t; printf("请输入x,y:n"); scanf("%d%d",&x,&y) ; if (x { t =x ; x=y ; y=t;} /* x与y交换 */ printf("交换后的x:%d y:%d n",x,y); } 3.编程题 (1)编写一个程序实现如下功能:从键盘输入3个字符,然后在屏幕上分3行输出该3个字符。程序以文件名sy3_7.c保存。 #include main() { char c1,c2,c3; c1=getchar(); c2=getchar(); c3=getchar(); putchar(c1); putchar('n'); putchar(c2); putchar('n'); putchar(c3); putchar('n'); } (2)编写一个程序实现如下功能:输入一元二次方程ax2+bx+c=0的系数a、b、c,求方程的根。要求:运行该程序时,输入a、b、c的值,分别使b2-4ac的值大于、等于和小于零,观察并分析运行结果。程序以文件名sy3_8.c保存。求根公式如下: #include #include void main() {float a,b,c,disc,x1,x2,p,q; scanf("a=%f,b=%f,c=%f",&a,&b,&c); disc=b*b-4*a*c; p=-b/(2.0*a); q=sqrt(disc)/(2.0*a); x1=p+q; x2=p-q; printf("x1=%5.2fnx2=%5.2fn",x1,x2); 9 该程序的运行结果: ABC A B C 该程序的运行结果: a=1,b=3,c=2 x1=-1.00 x2=-2.00 . . . . . } #include #include void main() {float a,b,c,disc,x1,x2,p,q; scanf("a=%f,b=%f,c=%f",&a,&b,&c); if (a==0) printf("不是二次方程n"); disc=b*b-4*a*c; printf("无实根n"); else if (disc<0) else if (disc==0) {p=-b/(2.0*a); q=sqrt(disc)/(2.0*a); x1=p+q; x2=p-q; } else {p=-b/(2.0*a); printf("有两个相同的实根n"); printf("x1=%5.2fnx2=%5.2fn",x1,x2); q=sqrt(disc)/(2.0*a); x1=p+q; x2=p-q; } 实验四 选择结构程序设计 (解答) 1.改错题 (1)下列程序的功能为:输入1个字母,如果它是小写字母,则首先将其转换成大写字母,再输出该字母的前序字母、该字母、该字母的后序字母,例如:输入g,则输出FGH;输入a,则输出ZAB;输入M,则输出LMN;输入Z,则输出YZA。请纠正程序中存在错误,使程序实现其功能,程序以文件名sy4_1.c保存。 10 } printf("有两个不同的实根n"); printf("x1=%5.2fnx2=%5.2fn",x1,x2); #include main() { char ch,c1,c2; printf("Enter a character:"); ch=getchar(); if((ch>='a')||(ch<='z')) // if((ch>='a')&&(ch<='z')) ch-=32; c1=ch-1; c2=ch+1; if(ch='A') // if(ch=='A') c1=ch+25; else if(ch='Z') // else if(ch=='Z') c2=ch-25; putchar(c1); putchar(ch); putchar(c2); putchar('n'); } 改正后的程序: #include main() { char ch,c1,c2; printf("Enter a character:"); ch=getchar(); if((ch>='a')&&(ch<='z')) ch-=32; c1=ch-1; c2=ch+1; if(ch=='A') c1=ch+25; else if(ch=='Z') c2=ch-25; putchar(c1); putchar(ch); putchar(c2); putchar('n'); } (2)下列程序的功能为:输入3个整数后,输出其中最大值。请纠正程序中存在错误,使程序实现其功能,程序以文件名sy4_2.c保存。 #include "stdio.h" main() 11 该程序的运行结果: Enter a character:g FGH 该程序的运行结果: 请输入3个整数: 5 2 7 3个数中最大者为:7 { int a,b,c,max; printf ("请输入3个整数:n"); scanf ("%d%d%d",&a,&b,&c); max=a; if (c>b) { if (b>a) max=c;} /* c>b>a */ else /* b>c */ {if (c>a) max=b;} /* b>c>a */ printf("3个数中最大者为:%dn",max); } 改正后的程序: #include "stdio.h" main() { int a,b,c,max; printf ("请输入3个整数:n"); scanf ("%d%d%d",&a,&b,&c); max=a; if (c>b) { if (c>a) max=c;} else {if (b>a) max=b;} printf("3个数中最大者为:%dn",max); } (3)下列程序的功能为:输入1-4月份号,输出该月份对应的英语表示法。例如,输入“3”,则输出“Mar”。纠正程序中存在错误,以实现其功能。程序以文件名sy4_3.c保存。 #include "stdio.h" main() { char m; printf(“input the month number:n”); scanf (“%c”,&m); switch (m) { case 1:printf (“Jan”); case 2:printf (“Feb”); case 3:printf (“Mar”); case 4:printf (“Apr”); } } 改正后的程序:改法一 12 该程序的运行结果: input the month number: 2 Feb #include "stdio.h" main() { char m; printf("input the month number:n"); scanf ("%d",&m); switch (m) { case 1:printf ("Jan");break; case 2:printf ("Feb");break; case 3:printf ("Mar");break; case 4:printf ("Apr"); } } 改法二 #include "stdio.h" main() { char m; printf("input the month number:n"); scanf ("%c",&m); switch (m) { case ‘1’:printf ("Jan");break; case ‘2’:printf ("Feb");break; case ‘3’:printf ("Mar");break; case ‘4’:printf ("Apr"); } } 2.程序填空 (1) 下列程序的功能为:判断从键盘上输入的一个字符,并按下列要求输出。 若该字符是数字 输出字符串"0-9" 若该字符是大写字母 输出字符串"A-Z" 若该字符是小写字母 输出字符串"a-z" 若该字符是其他字符 输出字符串"!,@,…" 补充完善程序,以实现其功能。程序以文件名sy4_4.c保存。 #include main() { char c; scanf(___"%c", &c _________); if('0'<=c&&c<='9') _____ printf("0-9n");______ 13 该程序的运行结果: d a-z else if(___c>='A' && c <='Z'______) printf("A-Zn"); ____ else if _______('a'<=c&&c<='z') printf("a-zn"); ____ else __________________ printf("!,@,…n"); } (2)下列程序的功能为:实现加、减、乘、除四则运算。补充完善程序,以实现其功能。程序以文件名sy4_5.c保存。 #include main() { int a,b,d; } (3)下列程序的功能为:猜价格,用户输入自己估计的价格,程序判断其正确性。请填写适当的符号或语句,使程序实现其功能,程序以文件名sy4_6.c保存。 #include "stdio.h" main() {float a,b; 14 char ch; printf("Please input a expression:"); scanf("%d%c%d", &a,&ch,&b ); switch(ch) { case '+':d=a+b; } printf("%d+%d=%dn",a,b,d); break; printf("%d-%d=%dn",a,b,d); break; printf("%d*%d=%dn",a,b,d); break; if( b==0 ) printf("Divisor is zeron"); printf("%d/%d=%fn",a,b,( float )a/b); /*强制类型转换*/ else break; printf("Input Operator error!n"); 该程序的运行结果: Please input a expression:2*6 2*6=12 case '-':d=a-b; case '*':d=a*b; case '/': default: 该程序的运行结果: 请主持人输入时尚手机的实际价格 1500 printf("请主持人输入时尚手机的实际价格n"); scanf("%f",&b); printf("nn请观众猜时尚手机的价格n"); scanf("%f",&a); if( a printf("低了n"); if( a= =b ) printf("猜对了!n"); if( a>b ) printf("高了n"); } 3.编程题 (1)从键盘输入三个整数,输出这三个整数的和、平均值(保留2位小数)、积、最小值以及最大值。程序以文件名sy4_7.c保存。 参考源程序 #include main() { int sum=0, a, b, c, max, min; long ji=0; float ave; printf("输入三个整数:(a=? b=? c=?)n"); scanf("a=%d b=%d c=%d", &a, &b, &c); sum=a+b+c; ave=sum/3.0; ji=a*b*c; max=((a>b?a:b)>c)?(a>b?a:b):c; min=a; if (b min=b; if(c min=c; printf("a+b+c=%d a*b*c=%ld ave=%.2f", sum,ji, ave); printf("nmax=%d min=%dn", max, min); } (2)有一分段函数如下,要求用scanf函数输入x的值,求y值并在屏幕上输出。程序以文件名sy4_8.c保存。 0 x<5 y = x-1 5≤x<15 6x2-1 x≥15 参考源程序 15 #include void main() { float x,y; scanf("%f", &x); if(x<5) y=0; else if(x<15) y=x-1; } (3)从键盘输入一个数字0~6,输出相应星期几的英文单词,其中数字0对应Sunday,数字1~6对应Monday~Saturday,如果输入的不是0~6的数字,则显示错误信息。程序以文件名sy4_9.c保存。 参考源程序 #include main() { int m; printf("请输入数字(0-6):"); scanf ("%d",&m); switch (m) { case 0:printf ("Sunday ");break; case 1:printf ("Monday ");break; case 2:printf ("Tuesday ");break; case 3:printf ("Wednesday ");break; case 4:printf ("Thursday ");break; case 5:printf ("Friday ");break; case 6:printf ("Saturday ");break; default:printf ("数据输入错误。"); } } else y=6*x*x-1; printf("x=%f, y=%fn", x,y); 实验5 循环结构程序设计 一、实验目的 1.掌握循环结构程序设计的3种控制语句——while语句、do···while语句、for语句的使用方法。 2.了解用循环的方法实现常用的算法设计。 二、实验内容 1.改错题(在程序中画出错误的语句,将修改后的语句完整地写在该语句的右边。) (1)下列程序的功能为:求1~100之和(和值为5050)并输出。纠正程序中存在的错误,以实现其功能。程序以文件名sy5_1.c保存。 #include main() { 16 该程序的运行结果: The sum from 1 to 100 is 5050 int i,sum=0; i=1; while(i<100) while(i<=100) sum=sum+i; { sum=sum+i; i++; i++;} printf(“The sum from 1 to 100 is %dn”,sum); } (2)下列程序的功能为:倒序打印26个英文字母。纠正程序中存在的错误,以实现其功能,程序以文件名sy5_2.c保存。 #include main() { char x; x='z'; while(x!='a') while(x!='a'-1)或while(x>='a') { printf("%3d",x); printf("%3c",x); x++; x- -; } } (3)下列程序的功能为:输入一个大写字母,打印出一个菱形。该菱形中间一行由此字母组成,其相邻的上下两行由它前面的一个字母组成,按此规律,直到字母A出现在第一行和最末行为止。纠正程序中存在的错误,以实现其功能。程序以文件名sy5_3.c保存。例如,输入字母D,打印出如下图形: #include main() { int i,j,k; char ch; scanf("%c",&ch); k=ch-'A'+1; for (i=1;i<=k;i++) { for (j=20;j>=i;j--) printf("%c",' '); for (j=1;j<=i-1;j++) for (j=1;j<=2*i-1;j++) printf("%c",'A'+i-1); printf("n"); } k=ch-'A'; for (i=k;i>=1;i--) { for (i=20;i>=i;i--) for (j=20;j>=i;j--) printf("%c",' '); for (j=1;j<2*i-1;j++) for (j=1;j<=2*i-1;j++) 17 该程序的运行结果: printf("%c",'A'+i-1); printf("n"); } } 2.程序填空题 (1)用辗转相除法求两个正整数的最大公约数和最小公倍数。补充完善程序,以实现其功能,程序以文件名sy5_4.c保存。 #include main () { int r, m, n,k, t ; scanf ("%d%d",&m,&n); if (m { t=m; k=m*n; r = m%n; while (r) { m=n; n=r; r= m%n ; } printf ("%d %dn", n , k/n ); /*输出最大公约数和最小公倍数*/ } (2)假设有1020个西瓜,第一天卖了一半多两个,以后每天卖剩的一半多两个,求几天后能卖完。补充完善程序,以实现其功能。程序以文件名sy5_5.c保存。 #include main( ) { int day,x1,x2; day=0; x1=1020; while( x1>0 ) { x2= x1/2-2 ; x1=x2; day++; } printf("day=%dn",day); } (3)下列程序的功能为:输出100以内能被3整除且个位数为6的所有整数.补充完善程序,以实现其功能。程序以文件名sy5_6.c保存。 #include main() { int i,j; for(i=0; __ i<10 _____; i++) { j=i*10+6; 18 m=n; n=t; } /*交换两数*/ 该程序的运行结果: 该程序的运行结果: day=8 该程序的运行结果: if (___ i%3!=0 ____) continue; printf("%d",j); } } 3.编程题(写出程序运行结果) (1)计算1~100之间所有含8的数之和。程序以文件名sy5_7.c保存。 参考程序: #include main() { int i, sum=0; for(i=1; i<=100; i++) if(i%10==8 || i/10==8) sum+=i; printf("sum=%dn",sum); } (2)编写程序,利用下列近似公式计算e值,误差应小于10-5。程序以文件名sy5_8.c保存。 e1参考程序: 1111… n!1!2!3!#include main() { int i=0 ; long n=1; float e=0, t=1; while(t>1e-5) { e+=t; i++; n*=i; t=1.0/n; } printf("e=%fn",e); } 该程序的运行结果: (3)某学校有近千名学生,在操场上排队,若5人一行余2人,7人一行余3人,3人一行余1人。编写程序,求该校的学生总人数。程序以文件名sy5_9.c保存。 参考程序: 19 该程序的运行结果: #include main() {int i; for(i=900;i<=1000;i++) if(i%5==2&&i%7==3&&i%3==1) } (4)从键盘输入N个学生的学号和每人M门课程的成绩,计算每个学生的总分及平均分。输出内容包括每个学生的学号、总分和平均分。程序以文件名sy5_10.c保存。 #include void main() { int i,j,n,m,no,score,sum; float ave; printf("输入学生数和每人课程数:"); scanf("%d%d",&n,&m); for(i=1;i<=n;i++) { sum=0; } } printf("输入第%d个学生的学号: ",i); scanf("%d",&no); printf("输入第%d个学生的%d门课程成绩: ",i,m); for(j=1;j<=m;j++) { scanf("%d",&score); sum+=score; } ave=(float)sum/m; break; printf("学生总人数=%dn",i); printf("n**第%d个学生的学号为:%d 总分为:%d 平均分为:%.2fnn",i,no,sum,ave); 实验6 数组程序设计 一、实验目的 1. 掌握一维数组和二维数组的定义、赋值和输入输出的方法。 2. 掌握字符数组和字符串函数的使用。 3. 掌握与数组有关的算法。 二、实验内容 1.改错题(在程序中画出错误的语句,将修改后的语句完整地写在该语句的右边。) 20 (1)下列程序的功能为:为指定的数组输入10个数据,并求这些数据之和。纠正程序中存在的错误,以实现其功能。程序以文件名sy6_1.c保存。 #include void main() {int n=10,i,sum=0; int a[n]; int a[10]; for(i=0;i<10;i++) { scanf("%d",a[i]); scanf("%d",&a[i]); sum=sum+a[i]; } printf("sum=%dn",sum); } (2)下列程序的功能为:将字符串b连接到字符串a。纠正程序中存在的错误,以实现其功能。程序以文件名sy6_2.c保存。 #include void main( ) { char a[]="wel",b[]="come"; char a[20]="wel",b[]="come"; int i,n=0; while(!a[n]) n++; while(a[n] != '0') n++; for(i=0;b[i]!='0';i++) a[n+i]=b[i]; a[n+i]=’0’; printf("%sn",a); } (3)下列程序的功能为:找出一个二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小。也可能没有鞍点。纠正程序中存在的错误,以实现其功能。程序以文件名sy6_3.c保存。 #include #define N 4 #define M 4 main() { int i,j,k,flag1,flag2,a[N][M],max,maxj; for (i=0;i for (j=0;j scanf("%d",&a[i][j]); flag2=0; for (i=0;i { max=a[j][0]; max=a[i][0]; for (j=0;j if (a[i][j]>max) if (a[i][j]>=max) { max=a[i][j]; maxj=j; } for (k=0,flag1=1;k if (max>a[k][maxj]) flag1=0; if (flag1) { printf("nThe saddle point is:a[%d][%d]=%dn",i,maxj,max); flag2=1; } } if ( flag2) if (! flag2) printf("nThere is no saddle point in the Matrixn"); } 2.程序填空题 (1)以下程序的功能是:采用二分法在给定的有序数组中查找用户输入的值,并显示查找结果。补充完善程序,以实现其功能。程序以文件名sy6_4.c保存。 21 #include "stdio.h" #define N 10 main() { int a[ ]={0,1,2,3,4,5,6,7,8,9},k; int low=0,high=N-1,mid,find=0; printf("请输入欲查找的值:n"); scanf("%d",&k); while (low<=high) { mid=(low+high)/2; if(a[mid]==k) { printf("找到位置为:%dn",mid+1);find=1; } if(a[mid]>k) _ high=mid-1 ; else _ low=mid+1_____; } if(!finD. printf("%d未找到n",k);` } (2)以下程序的功能是:求3个字符串(每串不超过20个字符)中的最大者。补充完善程序,以实现其功能。程序以文件名sy6_5.c保存。 #include #include void main() { char string[20],str[3][20]; int i; for (i=0;i<3;i++) gets(str[i]); if ( strcmp(str[0],str[1])>0 ) strcpy(string,str[0]); else strcpy(string,str[1]); if ( strcmp(string,str[2])<0 ) strcpy(string,str[2]); puts(string); } (3)下列程序的功能为:从键盘输入20个整数,统计非负数个数,并计算非负数之和。补充完善程序,以实现其功能。程序以文件名sy6_6.c保存。 #include main() { int i,a[20],sum=0,count; count=0; for(i=0;i<20;i++ ) scanf("%d", &a[i] ); for(i=0;i<20;i++) { if(a[i]<0) 22 continue; sum+=a[i]; count++; } printf("s=%dt count=%dn",sum,count); } 3.编程题(写出程序运行结果) (1)从键盘输入10个数,用选择排序法将其按由大到小的顺序排序;然后在排好序的数列中插入一个数,使数列保持从大到小的顺序。程序以文件名sy6_7.c存盘。 #define N 11 #include void main() { int a[N],i,j,k,t,p; printf("请输入%d 个整数 :n",N); for(i=0;i scanf("%d",&a[i]); for(i=0;i { k=i; for(j=i+1;j if(a[k]>a[j]) k=j; if(k!=i) { t=a[k]; a[k]=a[i]; a[i]=t;} } printf("n排序后:n"); for(i=0;i printf("%5d",a[i]); printf("n请输入插入整数: "); scanf("%d",&p); j=9; while(j>=0 && a[j]>p) //找插入位置 {a[j+1]=a[j];j--;} a[j+1]=p; //插入 printf("n插入后:n"); for(i=0;i printf("%5d",a[i]); printf("n"); } (2)从键盘输入两个矩阵A、B的值,求C=A+B 。程序以文件名sy6_8.c存盘。 357A12136 4B68101316#include void main() { int a[2][3],b[2][3],c[2][3],i,j; for(i=0;i<2;i++) for(j=0;j<3; j++) 23 scanf("%d",&a[i][j]); for(i=0;i<2;i++) for(j =0;j<3; j++) scanf("%d",&b[i][j]); for(i=0; i<2; i++) for(j =0;j<3; j++) c[i][j]=a[i][j]+b[i][j]; for( i=0;i<2;i++) { for(j=0;j<3;j++) printf("%3d",c[i][j]); printf("n"); } } (3)从键盘输入一个字符串,删除其中某个字符。如输入字符串“abcdefededff”,删除其中的字符e,则输出的字符串为“abcdfddff”。程序以文件名sy6_9.c存盘。 //方法一: #include #include void main() { int i,j; char s[80],c; printf("输入一行字符: "); gets(s); printf("输入要删除字符: "); scanf("%c",&c); for(i=0,j=0;s[i]!='0';i++) if (s[i]!=c) s[j++]=s[i]; s[j]='0'; puts(s); } //方法二: #include #include void main() {char line[80] ; char ch; int i,j; int len; printf("输入一行字符: "); gets(line) ; printf("输入要删除字符: "); ch=getchar(); i=0; while(line[i]!='0' ) {while( line[i]!='0' && line[i]!=ch) i++; len=strlen(line); for(j=i;j line[j]=line[j+1]; line[j]='0'; } puts(line); } 24 实验7 函数程序设计 一、实验目的 1.掌握函数定义的方法。 2. 掌握函数实参与形参的传递方式。 3. 掌握函数的嵌套调用和递归调用的方法。 4. 了解全局变量和局部变量、动态变量、静态变量的概念和使用方法。 二、实验内容 1.改错题(在程序中画出错误的语句,将修改后的语句完整地写在该语句的右边。) (1)下列sub函数的功能为:将s所指字符串的反序和正序进行连接形成一个新串放在t所指的数组中。例如,当s所指字符串的内容为“ABCD”时,t所指数组中的内容为“DCBAABCD”。纠正程序中存在的错误,以实现其功能。程序以文件名sy7_1.c存盘。 #include #include void sub( char s[], char t[] ) { int i, d; d=strlen( s ); for( i=1; i< d ; i++ ) for( i=0; i< d ; i++ ) t[i]=s[d-1-i] ; for( i=0; i t[d+i]=s[i] ; t[2*d]='/0' ; t[2*d]='0' } main( ) { char s[100], t[100]; printf( " Please enter string s : " ); scanf("%s" , s ); sub(s,t) ; printf( " n The result is : %s n ", t ); } (2)下列程序的功能为:将字符数组中的字符串逆序输出。纠正程序中存在的错误,以实现其功能。程序以文件名sy7_2.c存盘。 #include #include #define ARR_SIZE = 80; #define ARR_SIZE 80 void Inverse(char str[]) void Inverse(char str[]); main() { char a[ARR_SIZE] ; printf("Please enter a string: "); gets(a); Inverse(char a[]); Inverse(a); printf ("The inversed string is: "); 25 puts(a); } void Inverse(char str[]) { int len, i = 0, j; char temp; len = strlen(str); for (j=len-1; i { temp = str[i]; str[j] = str[i]; str[i] = str[j]; str[j] = temp; } } (3)下列程序的功能为:求整数n的阶乘。纠正程序中存在的错误,以实现其功能。程序以文件名sy7_3.c存盘。 #include int fun(int n) { static int p=1; p=p*n; return p; } void main() { int n,i; int f=0; int f=1; printf("input member: "); scanf("%d",&n); for(i=1;i<=n;i++) f=f*fun(i); f= fun(i); printf("%d!=%dn",n,f); } 2.程序填空题 (1)下列sum()函数的功能是:计算数组x前n个元素之和。在主函数中,输入10个任意整数和下标i1、i2的值(设1≤i1≤i2≤9),调用sum()函数计算从第i1元素到第i2元素的和,并输出结果。补充完善程序,以实现其功能。程序以文件名sy7_4.c存盘。 #include int sum( int x[], int n ) { } void main() { int i, i1, i2, result; 26 int i, s=0; for ( i=0; i s = s+x[i] ; return s; } int x[10]; for ( i=0; i<10; i++ ) scanf( "%d", &x[i] ); scanf( "%d%d", &i1, &i2 ); result = sum( x+i1, i2-i1+1 ); printf( "Sum=%dn", result ); (2)下列程序的功能为:输入一个字符数小于100的字符串string,然后将string所存盘字符串中的每个字符之间加一个空格。补充完善程序,以实现其功能。程序以文件名sy7_5.c存盘。 #include #include #define MAX 100 void Insert(char srcStr[]); main() { char string[MAX]; scanf("%s",string); Insert( string ); printf("%s",string); } void Insert(char srcStr[]) { char strTemp[MAX]; int i = 0, j = 0; strcpy(strTemp, srcStr); while ( j { srcStr[i] = strTemp[j]; i++; j++; srcStr[i] = ' '; i++; } srcStr[i] = '0'; } strTemp[j]!=’0’ 27 (3)下列程序的功能为:输出如下图形,补充完善程序,以实现其功能。程序以文件名sy7_6.c保存。 #include void a(int i) { int j,k; for(j=1;j<=30-i;j++) printf("%c",' '); for(k=1;k<= 2*i-1 ;k++) printf( “%c”,i+48 ); printf("n"); or “%d”,i } void main() { int i; for(i=1;i<=7;i++) a(i) ; for(i=6;i>=1;i--) a(i) ; } 3.编程题 (1)从键盘任意输入10个整数,用函数编程实现将其中最大数与最小数的位置对换后,再输出调整后的数组。程序以文件名sy7_7.c存盘。 #include #define N 10 void EXmaxmin(int a[],int n) //求最大数和最小数 { int i,j=0,k=0,t; int max,min; max=a[0]; min=a[0];
版权声明:本文标题:c程序设计教程与实验__吉顺如__实验一到七 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/free/1702892718h434925.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论