




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言程序设计上机安排C语言上机实验:32学时序号实验项目名称内容提要学时数1上机操作初步熟悉VC++语言上机环境;了解如何编辑、编译、连接和运行一个C程序。22简单的C程序设计掌握C语言的数据类型;学会使用C语言的运算符及表达式;掌握不同数据类型的输入输出方法。掌握复制语句的使用、各种数据类型数据输入输出方法、格式转换符。43选择结构程序设计正确使用逻辑运算符和逻辑表达式、if语句、switch语句24循环结构程序设计熟悉while语句、do-while语句、for语句实现一些算法45综合实验1:结构化程序设计26函数程序设计掌握函数定义的方法、实参与形参对应关系、全局变量和局部变量的使用47数组程序设计掌握一维二维数组的定义赋值和输入输出、字符数组和字符串数组使用、数组的算法-排序48指针程序设计掌握定义和使用指针、使用数组指针、字符串指针、函数指针29综合实验2:函数、数组、指针的综合应用210综合实验3:结构体、文件程序设计小型综合应用实例设计411考试模拟练习掌握C语言考试系统的使用2实验一上机操作初步(2学时)一、实验方式:一人一机二、实验目的:1、熟悉VC++语言的上机环境及上机操作过程。2、了解如何编辑、编译、连接和运行一个C程序。3、初步了解C程序的特点。三、实验内容:说明:前三题为必做题目,后两题为选做题目。1、输出入下信息:(实验指导书P79)*************************VeryGood*************************2、计算两个整数的和与积。(实验指导书P81)3、从键盘输入一个角度的弧度值x,计算该角度的余弦值,将计算结果输出到屏幕。(书P3)4、在屏幕上显示一个文字菜单模样的图案:=================================1输入数据2修改数据3查询数据4打印数据=================================5、从键盘上输入两个整数,交换这两个整数。四、实验步骤与过程:1、试验指导书P79#include<stdio.h>main(){ printf("*****************\n");printf("verygood\n"); printf("*****************\n");}2、计算两个整数的和与积。(实验指导书P81)#include<stdio.h>main(){ inta,b,c,d; printf("pleaseentera,b:"); scanf("%d,%d",&a,&b); c=a+b; d=a*b; printf("cis%d",c); printf("dis%d",d);}2、实验指导书P81计算两个整数的和与积。#include"stdio.h"voidmain(){intx,y;printf("pleaseinputx,y:\n");scanf("%d,%d",&x,&y);printf("x+y=%d\n",x+y);printf("x*y=%d\n",x*y);}3、课本P3,从键盘输入一个角度的弧度值x,计算该角度的余弦值,将计算结果输出到屏幕。#include"stdio.h"#include"math.h"voidmain(){doublex,s;printf("pleaseinputvalueofx:");scanf("%lf",&x);s=cos(x);printf("cos(%lf)=%lf\n",x,s);}注意:lf是长整型变量或函数,另外由于在编写过程中用到了数学问题,所以要加#include"math.h"4、在屏幕上显示一个文字菜单模样的图案:=================================1输入数据2修改数据3查询数据4打印数据=================================#include"stdio.h"voidmain(){printf("============================\n"); printf("1输入数据2修改数据\n"); printf("3查询数据4打印数据\n"); printf("============================\n");}5、从键盘上输入两个整数,交换这两个整数。#include<stdio.h>main(){ inta,b,t; printf("pleaseentera,b:\n"); scanf("%d%d",&a,&b); t=a; a=b; b=t; printf("ais%d,bis%d",a,b);}五、实验调试记录:1、输出字符,要多个printf2、注意:scanf的意思是:输入两个数。3、lf中l,不是I,是l。5、 scanf("%d%d",&a,&b);是关键,切勿错。六、参考答案:(省略)实验二简单的C程序设计(4学时)一、实验方式:一人一机二、实验目的:1、掌握C语言的数据类型。2、学会使用C语言的运算符及表达式。3、掌握不同数据类型的输入输出方法。三、实验内容:说明:前四题为必做题目,后两题为选做题目。1、输入r1、r2,求出圆形垫片面积。(实验指导书P84)2、输入华氏温度h,输出摄氏温度c。(实验指导书P85)3、从键盘输入一个3位整数,将输出该数的逆序数。(实验指导书P89)4、输入并运行以下程序,分析运行结果。#include<stdio.h>voidmain(){inti,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、输入r1、r2,求出圆形垫片面积。(实验指导书P84)#include<stdio.h>#definep3.14voidmain(){ floatr1,r2; doubles1,s2,s; printf("pleaseenterr1,r2:\n"); scanf("%f%f",&r1,&r2); s2=r2*r2*p; s1=r1*r1*p; s=s2-s1; printf("s=%lf\n",s);}2、输入华氏温度h,输出摄氏温度c。(实验指导书P85)#include<stdio.h>main(){ floath,c; printf("请输入华氏温度:\n"); scanf("%f",&h); c=5.0/9*(h-32); printf("\n摄氏温度:%f\n",c);}3、从键盘输入一个3位整数,将输出该数的逆序数。(实验指导书P89)#include<stdio.h>voidmain(){ inta,b,c,x,y; printf("请输入一个3位的正整数:\n"); scanf("%d",&x); a=x/100; b=x/10-a*10; c=x/1-a*100-b*10; y=c*100+b*10+a; printf("原始数是%d,交换后得数是%d\n",x,y);}4、输入并运行以下程序,分析运行结果。#include<stdio.h>voidmain(){inti,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);}结果9,118,109,88,85、输入三角形三条边的边长,求三角形的面积。(书P55)#include"stdio.h"#include"math.h"voidmain(){inta,b,c; doublearea,s; 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",area);}6、输入3个字符型数据,将其转换成相应的整数后,求它们的平均值并输出。(书P55)#include"stdio.h"voidmain(){chara,b,c; floatx; printf("pleaseenter:\n"); scanf("%c%c%c",&a,&b,&c); x=(a+b+c)/3.0; printf("(a+b+c)/3=%.2f\n",x);}五、实验调试记录:1、“p3.14”2、float为单精度,不是int\double\型!3、a=x/100; b=x/10-a*10; c=x/1-a*100-b*10; y=c*100+b*10+a;数字的交换!是整型,int。4、i=8;j=10;printf(“%d,%d\n”,++i,++j);中++i,++j为先增加1,再相应的使用i,j.故结果i=9,j=11.i=8;j=10;printf(“%d,%d\n”,i++,j++);中i++,j++为先使用i,j;再增加1,故结果为i=8;j=10.5、sqrt中是q,不是p.六、参考答案:(省略)实验三选择结构程序设计(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、读入3个分别表示箱子长、宽、高的整数值,判断并输出该箱子是立方体还是长方体。(实验指导书P104)#include"stdio.h"voidmain(){intl,w,h; printf("请输入箱子的长、宽、高:\n"); scanf("%d%d%d",&l,&w,&h); if(l==w&&w==h&&h==l) printf("该箱子是立方体。"); else printf("该箱子是长方体。");}2、输入某一年月,输出该月的天数。(实验指导书P105)#include"stdio.h"voidmain(){intyear,month,days; printf("pleaseenteryearandmonth:\n"); scanf("%d%d",&year,&month); switch(month) { case2:if(year%400==0||(year%4==0&&year%100!=0)) days=29; else days=28; break; case1: case3: case5: case7: case8: case10: case12:days=31; break; case4: case6: case9: case11:days=30; break; } printf("该月的天数为:%d\n",days);}3、有一函数:x(x<1)y=2x-1(1≤x<10)3x-11(x≥10)编写程序,输入x值,输出y值。#include"stdio.h"voidmain(){ intx,y; scanf("%d",&x); if(x<1) y=x; if(1<=x&&x<10) y=2*x-1; if(x>=10) y=3*x-11; printf("y=%d\n",y);}4、从键盘输入一个字符,如果该字符为小写字母,则转换为大写字母输出;如果该字符为大写字母,则转换为小写字母输出;如果为其他字符,原样输出。(书P94)#include"stdio.h"voidmain(){charx;printf("Enterachar:\n"); x=getchar(); if((x>='a')&&(x<='z')) x-='a'-'A'; elseif((x>='A')&&(x<='Z')) x+='a'-'A'; putchar(x);}5、输入4个整数,要求按由小到大的顺序输出#include"stdio.h"voidmain(){ inta,b,c,d,t; printf("请输入四个整数:\n"); 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(a>d){t=a,a=d,d=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("%d,%d,%d,%d\n",a,b,c,d);}五、实验调试记录:1\if(l==w&&w==h&&h==l)判断该箱子是否为正方体。2、switch(month)为一典型的嵌套结构,再该嵌套结构的结束时要记得加上break,否则无法跳出该嵌套!!if(year%400==0||(year%4==0&&year%100!=0))该语句为判断该年是否为闰年。3\ifd的循环结构,判断清楚当满足什么条件时执行该语句,ifd嵌套的前提是再满足上个if条件的情况下执行该个if。4、char为字符型,获取一字符用char类型。5、if(a>b){t=a,a=b,b=t;} if(b>c){t=b,b=c,c=t;} if(c>d){t=c,c=d,d=c;}并列if判断句,从上到下依次执行。六、参考答案:(省略)实验四循环结构程序设计(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、从键盘上输入若干个学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入。(实验指导书P117)#include"stdio.h"voidmain(){ floatx,max,min; printf("pleaseinputscores:\n"); scanf("%f",&x); max=min=x; while(x>=0) { if(x>max)max=x; if(x<min)min=x; scanf("%f",&x); } printf("\nmax=%f\nmin=%f\n",max,min);}2、求所有的水仙花数。水仙花数是一个3位数的自然数,该数各位数的立方和等于该数本身。(实验指导书P118)#include"stdio.h"voidmain(){ intx,y,z; intk=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("%d\n",k); k++; }3、判断输入的某个数是否为素数。若是,输出YES,否则输出NO。(书P123)#include"math.h"voidmain(){ inti,x,yes,a; printf("Enterintegernumber:"); scanf("%d",&x); yes=1; i=2; a=sqrt(x); while(yes&&i<=a) { if(x%i==0)yes=0; i=i+1; } printf("%d\n",x); if(yes) printf("YES\n"); else printf("NO\n");}}4、计算π的近似值。公式如下:π/4=1-1/3+1/5-1/7+……,直到最后一项的绝对值小于10-6为止。(书P123)#include"math.h"voidmain(){ floatpi,t,n; intsign=1; pi=0.0;n=1.0;t=1.0; while(fabs(t)>=1e-6) {t=sign/n; pi+=t; n+=2; sign=-sign; } pi=pi*4; printf("pi=%f\n",pi);}5、计算s=1!+2!+……+20!的值并输出。#include"stdio.h"#include"stdio.h"voidmain(){ inti,j; doublem,sum=0; for(i=1;i<=20;i++) { for(j=1,m=1;j<=i;j++) m*=j; sum+=m; } printf("%.0lf\n",sum);6、输入10个整数,统计并输出其中正数、负数和零的个数。#include"stdio.h"voidmain(){ inta,b,c,x,i; a=0; b=0; c=0; printf("请输入十个整数:\n"); scanf("%d",&x); for(i=1;i<=10;i++) { if(x==0) a++; if(x>0) b++; if(x<0) c++; scanf("%d",&x); } printf("零:%d,正数:%d,负数:%d\n",a,b,c);}}五、实验调试记录:1\while(x>=0)后无‘;’!floatx,max,min;float单精度。2、x=k/100; y=(k-x*100)/10; z=(k-x*100-y*10);依次求出该数的百、十、个位:x,y,z.if(k==x*x*x+y*y*y+z*z*z)判断该数是否为水仙花数。3、a=sqrt(x)为开平方语句、sqrt。该语句在int(整型)语句中执行。4、fabs(t)为求实数t的绝对值。1e-6为1乘以1的0(-6)次方。sign=-sign分子交换正负值。5、for(i=1;i<=20;i++) { for(j=1,m=1;j<=i;j++)为循环的嵌套for(j=1,m=1;j<=i;j++)语句为在满足for(i=1;i<=20;i++)语句的前提下执行。6、for(i=1;i<=10;i++) { if(x==0) a++; if(x>0) b++; if(x<0) c++;循环判断语句,i限制循环的次数为10.六、参考答案:(省略)实验五综合实验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、编一程序,对于给定的一个百分制成绩,输出对应A,B,C,D,E表示的的等级成绩。设:90分以上为A,80-89分为B,70-79分为C,60-69分为D,60分以下为E。(书P93)intscore,temp,logic; chargrade; logic=1; while(logic) {printf("InputScore:"); scanf("%d",&score); if((score>=100)||(score==0)) printf("\nError,Inputagain!\n"); else logic=0; printf("\n"); } if(score==100) temp=9; else temp=(score-score%10)/10; switch(temp) {case9:grade='A';break; case8:grade='B';break; case7:grade='C';break; case6:grade='D';break; case5: case4: case3: case2: case1: case0:grade='E'; } printf("Scoreis:%d,thegradeis:%c\n",score,grade);}2、百马百担问题。(实验指导书P121)#include"stdio.h"voidmain(){ intm,n,k; intsum=0; printf("各种驼法如下:\n"); for(m=1;m<=100;m++) for(n=1;n<=100-m;n++) {k=100-m-n; if(m*3+n*2+k/2==100&&k%2==0) { printf("大马%3d匹;中马%3d匹;小马%3d匹.\n",m,n,k); sum++; } }printf("共有%d种驮法.\n",sum);}3、输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。#include"stdio.h"voidmain(){ charc; intletter=0,space=0,digit=0,other=0; printf("请输入一行字符:\n"); while((c=getchar())!='\n') { if(c>='a'&&c<='z'||c>='A'&&c<='Z') letter++; elseif(c='') space++; elseif(c>='0'&&c<='9') digit++; else other++; } printf("letter:%d,space:%d,digit:%d,other:%d\n",letter,space,digit,other);}4、输出如下图案:************************* #include"stdio.h"voidmain(){ intk,k1,k2; for(k=1;k<=4;k++) { for(k1=1;k1<=20-k;k1++)printf(""); for(k2=1;k2<=k*2-1;k2++)printf("*"); printf("\n"); } for(k=3;k>0;k--) { for(k1=1;k1<=20-k;k1++)printf(""); for(k2=1;k2<=2*k-1;k2++)printf("*"); printf("\n"); }}五、实验调试记录:1、switch(temp)嵌套,正确运用。3、while((c=getchar())!='\n')关键语句。获取字符。4、for(k=1;k<=4;k++) { for(k1=1;k1<=20-k;k1++)printf(""); for(k2=1;k2<=k*2-1;k2++)printf("*"); printf("\n"); } for(k=3;k>0;k--) { for(k1=1;k1<=20-k;k1++)printf(""); for(k2=1;k2<=2*k-1;k2++)printf("*");循环的嵌套,打印出预定*。六、参考答案:(实验六函数程序设计(4学时)一、实验方式:一人一机二、实验目的:1、掌握C语言中函数的三要素:函数定义、函数调用和函数说明。2、掌握通过参数在函数间传递数据的方法。3、掌握全局变量、局部变量、动态变量、静态变量的概念和使用方法。三、实验内容:说明:前四题为必做题目,后两题为选做题目。1、从键盘输入三角形的3条边,调用三角形面积函数求出其面积,并输出结果。(实验指导书P130)2、输入整数n,输出高度为n的等边三角形。当n=5时的等边三角形如下:(实验指导书P134)*************************3、输入并运行以下程序,分析运行结果。#include<stdio.h>inta=5;intb=7;voidmain(){inta=4,b=5,c;c=plus(a,b);printf(“a+b=%d\n”,c);}plus(intx,inty){intz;z=x+y;return(z);}4、求500以内的所有亲密数对。若正整数A的所有因子(包括1但不包括自身,下同)之和为B,而B的因子之和为A,则称A和B为一对亲密数对。(实验指导书P136)5、输入并运行以下程序,分析运行结果。#include<stdio.h>intd=1;fun(intp){staticintd=5;d+=p;printf(“%d”,d);return(d);}voidmain(){inta=3;printf(“%d”,fun(a+fun(d)));}6、设计一个函数,输出整数n的所有素数因子。(书P157)四、实验步骤与过程:1、从键盘输入三角形的3条边,调用三角形面积函数求出其面积,并输出结果。(实验指导书P130)#include"math.h"#include"stdio.h"floatarea(floata,floatb,floatc){floats,p,area; p=(a+b+c)/2; s=p*(p-a)*(p-b)*(p-c); area=sqrt(s); return(area); } main() {floatx,y,t,ts; scanf("%f%f%f",&x,&y,&t); if(x>0&&y>0&&t>0&&x+y>t&&x+t>y&&t+y>x) {ts=area(x,y,t); printf("area=%f\n",ts); } else printf("dataerror!\n"); }2、输入整数n,输出高度为n的等边三角形。当n=5时的等边三角形如下:(实验指导书P134)*************************#include"stdio.h"voidtrangle(intn){ inti,j; for(i=0;i<n;i++) { for(j=0;j<=n-i;j++) putchar(''); for(j=0;j<=2*i;j++) putchar('*'); putchar('\n'); }}main() { intn; printf("Pleaseentern:\n"); scanf("%d",&n); printf("\n"); trangle(n); }3、输入并运行以下程序,分析运行结果。#include<stdio.h>inta=5;intb=7;voidmain(){inta=4,b=5,c;c=plus(a,b);printf(“a+b=%d\n”,c);}plus(intx,inty){intz;z=x+y;return(z);}结果a+b=9;inta=5;intb=7;为全局变量,inta=4,b=5,c;为局部变量,而局部变量的优先级比全局变量的优先级高,故只算a=4,b=5,时的a,b值,所以结果a+b=9。4、求500以内的所有亲密数对。若正整数A的所有因子(包括1但不包括自身,下同)之和为B,而B的因子之和为A,则称A和B为一对亲密数对。(实验指导书P136)#include"stdio.h"intfacsum(intm){ intsum=1,f=2; while(f<=m/2) { if(m%f==0)sum+=f; f++; } returnsum;}main(){ intm=3,n,k; while(m<=500) { n=facsum(m); k=facsum(n); if(m==k&&m<=k) printf("%d,%d\n",m,n); m++; }}5、输入并运行以下程序,分析运行结果。#include<stdio.h>intd=1;fun(intp){staticintd=5;d+=p;printf(“%d”,d);return(d);}voidmain(){inta=3;printf(“%d”,fun(a+fun(d)));}6、设计一个函数,输出整数n的所有素数因子。(书P157)#include"stdio.h"intprime(intn){ inti,flag=1;for(i=2;i<=n/2;i++) if(n%i==0) { flag=0; returnflag; } returnflag;}voidfactor(intn){inti;i=2; while(i<=n) {if((n%i==0)&&prime(i)) {printf("%d\n",i); n=n/i; continue; } i++; }}main(){ intnum; printf("Enternum:"); scanf("%d",&num); printf("primrfactoris:\n"); factor(num);}五、实验调试记录:5、结果61515.局部变量掩盖整体变量。6、d:\1002010806宁加彬实验.doc\1002010806--应化-108.do\6-06.c(13):errorC2449:found'{'atfilescope(missingfunctionheader?)d:\1002010806宁加彬实验.doc\1002010806--应化-108.do\6-06.c(24):errorC2059:syntaxerror:'}'Errorexecutingcl.exe.6-06.obj-2error(s),0warning(s)六、参考答案:(省略)实验七数组程序设计(4学时)一、实验方式:一人一机二、实验目的:1、掌握数组的定义、赋值和输入输出的方法。2、学习用数组实现相关的算法(特别是排序算法)。3、掌握C语言中字符数组和字符串处理函数的使用。三、实验内容:说明:前四题为必做题目,后两题为选做题目。1、下列程序的功能是:输入10个整数,按每行3个数输出这些整数,最后输出10个整数的平均值。程序中有几处错误,试找出它们后加以修改,并上机验证修改结果。#include<stdio.h>voidmain(){inti,n=10,a[10];floatavg=0;for(i=0;i<n;i++)scanf(“%d”,&a[i]);for(if(i%3==0)printf(“\n”);printf(“%d=0;i<n;i++){i”,a[i]);}for(i=0;i<n;i++)avg+=a[i];avg=avg/n;printf(“\navg=%f\n”,avg);}2、写一个函数,对输入的10个整数按从小到大的顺序排序(升序,用冒泡排序实现)。(实验指导书P147)3、编写程序,判断某一字符串是不是“回文数”,回文数是从左至右或从右至左读起来都是一样的字符串。(实验指导书P153)4、输入一个3行3列矩阵的所有元素,然后求出主对角线元素之和。5、给定某年某月某日,将其转换成这一年的第几天并输出。(实验指导书P152)6、编写程序,在有序的数列中查找某数,若该数在此数列中,则输出它所在的位置,否则输出nofound。(书P191)四、实验步骤与过程:1、下列程序的功能是:输入10个整数,按每行3个数输出这些整数,最后输出10个整数的平均值。程序中有几处错误,试找出它们后加以修改,并上机验证修改结果。#include<stdio.h>voidmain(){inti,n,a[10],avg;n=10;for(i=0;i<n;i++)scanf(“%d”,&a[i]);for(i=0;i<n;i++){if(i%3==0)printf(“\n”);printf(“%d”,a[i]);}for(i=0;i<n;i++)avg+=a[i];avg=avg/n;printf(“\navg=%f\n”,avg);}2、(2)写一个函数,对输入的10个整数按从小到大的顺序排序(升序,用冒泡排序实现)。(实验指导书P147)#include<stdio.h>voidsortl(ints[],intn){ inti,j; inttemp; for(i=0;i<n-1;i++) for(j=9;j>=i+1;j--) if(s[j]>s[j+1]) { temp=s[j]; s[j]=s[j+1]; s[j+1]=temp; }}voidmain(){ inti,a[10]; printf("请输入十个整数:"); for(i=0;i<10;i++) scanf("%d",&a[i]); sortl(a,10); printf("排序后的输出为:\n");for(i=0;i<10;i++)printf("%d\n",a[i]);}(1)题7.37编写程序,用冒泡法对20个整数排序(按升序排序)。#include"stdio.h"#defineN20voidmain(){intdata[N];inti,j,t; printf("请输入%d个整数:\n",N); for(i=0;i<N;i++) scanf("%d",&data[i]); printf("\n"); for(i=0;i<N;i++) for(j=0;j<N-1;j++) if(data[j]>data[j+1]) {t=data[j];data[j]=data[j+1];data[j+1]=t;}printf("排序后的输出为:\n"); for(i=0;i<N;i++) printf("%d\n",data[i]);}3、编写程序,判断某一字符串是不是“回文数”,回文数是从左至右或从右至左读起来都是一样的字符串。(实验指导书P153)#include"stdio.h"#include"string.h"#defineN40voidmain(){charstr[N],ch='Y';inti; intlen; printf("Inputastring:\n"); scanf("%s",str); len=strlen(str); for(i=0;i<len/2;i++) if(str[i]=str[len-1-i]) { ch='N'; break; } if(ch=='Y') printf("%s是一个回文数\n",str); else printf("%s不是一个回文数\n",str);}4、输入一个3行3列矩阵的所有元素,然后求出主对角线元素之和。#include"stdio.h"voidmain(){ inta[3][3],sum; inti,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+=a[i][j]; printf("sum=%d\n",sum);}5、给定某年某月某日,将其转换成这一年的第几天并输出。(实验指导书P152)#include"stdio.h"intday_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}}; intday_year(intyear,intmonth,intday) {inti,j,s=0; if(year%4==0&&year%100!=0||year%400==0)i=1;elsei=0; for(j=1;j<month;j++) s=s+day_tab[i][j]; return(s+day); } voidmain() {inty,m,d; printf("Inputyear,monthandday:\n"); scanf("%d%d%d",&y,&m,&d); printf("是这年的第%d天\n",day_year(y,m,d)); }6、编写程序,在有序的数列中查找某数,若该数在此数列中,则输出它所在的位置,否则输出nofound。(书P191)#include"stdio.h"#defineN10voidmain(){inta[N];intnum,i; charch='n'; printf("请输入一个数组:\n"); for(i=0;i<N;i++) scanf("%d",&a[i]); printf("输出数组:\n"); for(i=0;i<N;i++) printf("%d",a[i]); printf("\n"); printf("请输入一个数\n"); scanf("%d",&num); printf("开始查找\n"); for(i=0;i<N;i++) if(num==a[i]) {ch='y'; printf("%d在数组的第%d位\n",num,i+1); } if(ch=='n') printf("nofound\n");}五、实验调试记录:1、scanf(“%d”,&a[i]);&a[i]中‘&’连接符。2、7-02(1).cd:\1002010806宁加彬实验.doc\1002010806--应化-108.do\7-02(1).c(10):errorC2143:syntaxerror:missing';'before')'d:\1002010806宁加彬实验.doc\1002010806--应化-108.do\7-02(1).c(11):errorC2143:syntaxerror:missing';'before')'d:\1002010806宁加彬实验.doc\1002010806--应化-108.do\7-02(1).c(11):errorC2143:syntaxerror:missing';'before')'d:\1002010806宁加彬实验.doc\1002010806--应化-108.do\7-02(1).c(13):errorC2065:'dataa':undeclaredidentifierd:\1002010806宁加彬实验.doc\1002010806--应化-108.do\7-02(1).c(13):errorC2109:subscriptrequiresarrayorpointertypeErrorexecutingcl.exe.7-02(1).obj-5error(s),0warning(s)3、7-03.cd:\1002010806宁加彬实验.doc\1002010806--应化-108.do\7-03.c(11):errorC2143:syntaxerror:missing';'before'for'Errorexecutingcl.exe.7-03.obj-1error(s),0warning(s)5\7-05.cd:\1002010806宁加彬实验.doc\1002010806--应化-108.do\7-05.c(6):errorC2449:found'{'atfilescope(missingfunctionheader?)d:\1002010806宁加彬实验.doc\1002010806--应化-108.do\7-05.c(11):errorC2059:syntaxerror:'}'六、参考答案:(省略)实验八指针程序设计(2学时)一、实验方式:一人一机二、实验目的:1、通过实验进一步掌握指针的概念,会定义和使用指针变量。2、能正确使用指向数组和字符串的指针变量。3、熟悉指针作为函数参数的编程特点。三、实验内容:说明:前两题为必做题目,后两题为选做题目。要求用指针方法实现。1指针基础及指针运算。(实验指导书P168)2、输入3个整数,按从小到大的次序输出。(书P234)3、数据交换。实验要求:1)定义两个函数,分别为voidswap1(inta,intb)和voidswap2(int*a,int*b),用于交换a,b的值。2)从主函数中分别输入两个整型变量a、b。3)从主函数中分别调用上述两个交换函数,并打印输出交换后a、b的结果。(实验指导书P169)4、编步骤与过程:写一个程序计算字符串长度的函数,模拟C的<string.h>函数库内的计算字符串长度的函数strlen()。四、实验1指针基础及指针运算。(实验指导书P168)#defineN5#include<stdio.h>#include<malloc.h>intmain(){ int*p,*q,a[N]; inti,tmp; p=a; q=(int*)malloc(N*sizeof(int)); printf("pleaseinputthefirstgroup:"); for(i=0;i<N;i++)scanf("%d",&p[i]); printf("pleaseinputthesecondgroup:"); for(i=0;i<N;i++) scanf("%d",&q[i]);for(i=0;i<N;i++) if(*(p+i)>*(q+i)) {tmp=*(p+i);*(p+i)=*(q+i);*(q+i)=tmp; } printf("result:\n"); for(i=0;i<N;i++)printf("%d",p[i]); printf("\n"); for(i=0;i<N;i++)printf("%d",q[i]); printf("thememoryadressofp,a,qare:%x,%x,%x\n",p,a,q); free(q); return(0);}2、输入3个整数,按从小到大的次序输出。(书P234)#include"stdio.h"voidswap(int*p1,int*p2){ intp; p=*p1;*p1=*p2;*p2=p;}voidmain(){ intn1,n2,n3; int*p1,*p2,*p3; printf("Pleaseinputthereintegerdatas:"); scanf("%d%d%d",&n1,&n2,&n3); p1=&n1;p2=&n2;p3=&n3; if(n1<n2)swap(p1,p2); if(n1<n3)swap(p1,p3); if(n2<n3)swap(p2,p3); printf("Afterswap:"); printf("%d%d%d\n",n1,n2,n3);}3、数据交换。实验要求:1)定义两个函数,分别为voidswap1(inta,intb)和voidswap2(int*a,int*b),用于交换a,b的值。2)从主函数中分别输入两个整型变量a、b。3)从主函数中分别调用上述两个交换函数,并打印输出交换后a、b的结果。(实验指导书P169)#include"stdio.h"voidswap1(intx,inty);voidswap2(int*x,int*y);intmain(){ inta,b; printf("PleaseInputa=:"); scanf("%d",&a); printf("\nb=:"); scanf("%d",&b); swap1(a,b); printf("\nAfterCallswap1:a=%db=%d\n",a,b); swap2(&a,&b); printf("\nAfterCallswap2:a=%db=%d\n",a,b); return0;}voidswap1(intx,inty){ inttemp; temp=x; x=y; y=temp;}voidswap2(int*x,int*y){ inttemp; temp=*x;*x=*y;*y=temp;}4、编步骤与过程:写一个程序计算字符串长度的函数,模拟C的<string.h>函数库内的计算字符串长度的函数strlen()。#include<stdio.h>#include<conio.h>voidmain(){charstr[256]={'\0'};printf("请输入一个字符串:\n");gets(str);intstrlenOwn(constchar*);intlength=strlenOwn(str);printf("输入字符串的长度为:%d",length);getch();}intstrlenOwn(constchar*psz){intlen=0;while(*(psz++))len++;returnlen;}五、实验调试记录:2、p1=&n1;p2=&n2;p3=&n3; if(n1<n2)swap(p1,p2); if(n1<n3)swap(p1,p3); if(n2<n3)swap(p2,p3); printf("Afterswap:");排序,按从大到小顺序。3、temp=*x;*x=*y;*y=temp交换指针。六、参考答案:(省略)实验九综合实验2:函数、数组、指针的综合应用(2学时)一、实验方式:一人一机二、实验目的:1、进一步掌握通过指针引用数组元素的方法。2、综合运用函数、数组、指针的知识,实现复杂程序的编程。3、掌握调试复杂程序的技巧。三、实验内容:说明:前两题为必做题目,后两题为选做题目。要求用指针方法实现。1、数组元素奇偶排列。实验要求:1)定义一个整型一维数组,任意输入数组的元素,其中包含奇数和偶数。2)定义一个函数,实现将数组元素奇数排列在左,偶数排列在右的排列。3)在上述定义的函数中,不允许再增加新的数组。4)从主函数中分别调用上述函数,打印输出结果。(实验指导书P172)2、编写函数lower()模拟标准函数strlwr(),调用形式为lower(char*st),其作用是将字符串st中的大写字母转换成小写。(书P192)3、编写函数,比较两个字符串是否相等。(书P234)4、编写函数reverse()模拟标准函数strrev(),调用形式为reverse(char*st),其作用是颠倒字符串st的顺序,即按与原来相反的顺序排列。(书P192)四、实验步骤与过程:1、数组元素奇偶排列。实验要求:1)定义一个整型一维数组,任意输入数组的元素,其中包含奇数和偶数。2)定义一个函数,实现将数组元素奇数排列在左,偶数排列在右的排列。3)在上述定义的函数中,不允许再增加新的数组。4)从主函数中分别调用上述函数,打印输出结果。(实验指导书P172)#include<stdio.h>#defineN10voidarrsort(inta[],intn);intmain(){ inta[N],i; for(i=0;i<N;i++) scanf("%d",&a[i]); arrsort(a,N); for(i=0;i<N;i++) printf("%d",a[i]);}voidarrsort(inta[],intn){ int*p,*q,temp; p=a; q=a+n-1; while(p<q) { while(*p%2!=0) p++; while(*q%2==0) q--; if(p<q) { temp=*p; *p=*q; *q=temp; } p++; q--; }}2、编写函数lower()模拟标准函数strlwr(),调用形式为lower(char*st),其作用是将字符串st中的大写字母转换成小写。(书P192)#include<stdio.h>#defineN20voidlower(char*st){ inti=0; while(st[i]!='\0') { if(st[i]>='A'&&st[i]<='Z') st[i]+=32; i++; }}voidmain(){ chars[N]; printf("Inputastring:\n"); scanf("%s",s); lower(s); printf("Output:%s\n",s);}3、编写函数,比较两个字符串是否相等。(书P234)#include<stdio.h>#include<string.h>intcompare(char*p,char*q){ inti,l=strlen(q); if(strlen(p)!=strlen(q)) return0; for(i=0;i<1;i++) if(p[i]!=q[i]) return0; return1;}voidmain(){ charstr1[80],str2[80]; printf("输入第一个字符串:\n"); scanf("%s",&str1);printf("输入第二个字符串:\n"); scanf("%s",&str2); if(compare(str1,str2)) printf("两个字符串相等!\n"); else printf("两个字符串不相等!\n");}4、编写函数reverse()模拟标准函数strrev(),调用形式为reverse(char*st),其作用是颠倒字符串st的顺序,即按与原来相反的顺序排列。(书P192)#include"stdio.h"#include"string.h"voidreverse(char*st){ inti=0,n; chart; n=strlen(st); for(;i<n/2;i++) { t=st[i]; st[i]=st[n-i-1]; st[n-i-1]=t; }}voidmain(){ chars[80]; printf("inputastring\n",s); scanf("%s",s); reverse(s); printf("output:%s\n",s);}五、实验调试记录:1、while(*p%2!=0) p++; while(*q%2==0) q--;将原先的if全部换成while,而且第一个判断十奇数,第二个判断为偶数。2.将大写字母改写成小写字母即在大写的字母的基础上加32位使之等于ASCII码中的小写字母。六、参考答案:(省略)实验十综合实验3:结构体、文件程序设计(6学时)一、实验方式:一人一机二、实验目的:1、掌握结构体类型变量的定义和使用。2、掌握结构体类型数组的概念和使用。3、学会使用文件打开、关闭、读、写等文件操作的函数。三、实验内容:说明:前三题为必做题目,后一题为选做题目。1、在选举中进行投票,包含候选人姓名、得票数,假设有多位候选人,用结构体数组统计各候选人的得票数。(实验指导书P180)2、编写一个学生信息排序程序。要求:1)程序运行时可输入n个学生的信息和成绩(n预先定义)。2)学生信息包括:学号、姓名;学生成绩包括:高等数学、物理、计算机。3)给出一个排序选择列表,能够按照上述所列信息(学号、姓名、高等数学、物理、计算机)中的至少一个字段进行排序,并显示其结果。4)使用函数方法定义各个模块。3、将磁盘上一个文本文件的内容复制到另一个文件中。(实验指导书P199)4、从键盘输入一行字符串,将其中的小写字母全部转换成大写字母,输出到一个磁盘文件“test.dat”中保存,然后读
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 跨设备兼容性测试-洞察及研究
- 精神障碍患者日常生活护理讲课件
- 微博营销品牌传播的新途径
- 广告创意与新媒体的结合
- 二手车绿本抵押贷款服务协议样本下载
- 常州劳动合同违约责任与处理
- 旅游目的地策划与开发协议
- 代驾泊车事故责任保险合同范本
- 建筑智能化系统集成解决方案
- 提高设计能力的视觉表达技巧
- 2024年销售返佣协议模板文件
- ASTM-D3359-(附著力测试标准)-中文版
- 农药市场专项整治活动实施方案
- 户外田园早教课程设计
- 儿科危重症护理习题题库含答案
- DL∕T 5138-2014 电力工程数字摄影测量规程
- DL∕T 550-2014 地区电网调度控制系统技术规范
- 2022-2023学年湖北省随州市曾都区人教PEP版五年级下册期末学业质量监测英语试卷
- 钢结构施工合同范本
- 2024年内蒙古锡林郭勒盟事业单位人才引进历年【重点基础提升】模拟试题(共500题)附带答案详解
- 建设工程监理安全资料台帐建筑施工
评论
0/150
提交评论