C语言实验报告.docx
- 文档编号:8989309
- 上传时间:2023-05-16
- 格式:DOCX
- 页数:23
- 大小:108.88KB
C语言实验报告.docx
《C语言实验报告.docx》由会员分享,可在线阅读,更多相关《C语言实验报告.docx(23页珍藏版)》请在冰点文库上搜索。
C语言实验报告
实验一:
11.输入4个整数,要求按由小到大的顺序输出,采用冒泡法。
#include
intmain()
{inti,j,a[4],t;
for(i=0;i<4;i++)
scanf("%d",&a[i]);
for(j=1;j<4;j++)
for(i=0;i<=3-j;i++)
if(a[i]>a[i+1])
{t=a[i+1];a[i+1]=a[i];a[i]=t;}
for(i=0;i<4;i++)
printf("%5d",a[i]);
}
运行结果:
实验二:
输入4个整数,要求按由小到大的顺序输出。
采用函数调用。
#include
{voidsort(intarray[],intn);
inta[4],i;
printf("enterarray:
\n");
for(i=0;i<4;i++)
scanf("%d",&a[i]);
sort(a,4);
printf("Thesortedarray:
\n");
for(i=0;i<4;i++)
printf("%d",a[i]);
printf("\n");
return0;
}
voidsort(intarray[],intn)
{inti,j,t;
for(j=0;j for(i=0;i if(array[i]>array[i+1]) {t=array[i];array[i]=array[i+1];array[i+1]=t;} 运行结果: 实验三: 输入两个正整数m和n,求其最大公约数和最小公倍数。 #include intmain() {intp,r,n,m,temp; printf("请输入两个正整数n,m: "); scanf("%d,%d,",&n,&m); if(n { temp=n; n=m; m=temp; } p=n*m; while(m! =0) { r=n%m; n=m; m=r; } printf("它们的最大公约数为: %d\n",n); printf("它们的最小公倍数为: %d\n",p/n); return0; } 运算结果: 实验四 写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用者两个函数,并输出结果。 maxyueshu(m,n) intm,n; {inti=1,t; for(;i<=m&&i<=n;i++) {if(m%i==0&&n%i==0) t=i; } return(t); } minbeishu(m,n) intm,n; {intj; if(m>=n)j=m; elsej=n; for(;! (j%m==0&&j%n==0);j++); returnj; } main() {inta,b,max,min; printf("entertwonumberis: "); scanf("%d,%d",&a,&b); max=maxyueshu(a,b); min=minbeishu(a,b); printf("max=%d,min=%d\n",max,min); } 运行结果: 实验五: 3用函数实现m*n的整型矩阵对角线元素之和,并用函数调用,用地址传递。 #include intmain() { inti=0,j=0,a[3][3],s1,s2; for(i=0;i<3;i++) for(j=0;j<3;j++) scanf("%d",&a[i][j]); s1=a[0][0]+a[1][1]+a[2][2]; s2=a[0][2]+a[1][1]+a[2][0]; printf("s1=%d,s2=%d\n",s1,s2); } 运行结果: 实验六: 13.编一个程序,将两个字符串连接起来,不要用strcat函数。 #include intmain() {voidconcatenate(charstring1[],charstring2[],charstring[]); chars1[100],s2[100],s[100]; printf("inputstring1: "); scanf("%s",s1); printf("inputstring2: "); scanf("%s",s2); concatenate(s1,s2,s); printf("\nThenewstringis%s\n",s); return0; } voidconcatenate(charstring1[],charstring2[],charstring[]) {inti,j; for(i=0;string1[i]! ='\0';i++) string[i]=string1[i]; for(j=0;string2[j]! ='\0';j++) string[i+j]=string2[j]; string[i+j]='\0'; } 运行结果: 实验七: 求方程a*x*x+b*x+c=0的根,用3个函数分别求当: b*b-4*a*c大于0、等于0、和小于0时的根并输出结果。 从主函数输入a,b,c的值。 #include #include floatx1,x2,disc,p,q; intmain() {voidgreater_than_zero(float,float); voidequal_to_zero(float,float); voidsmaller_than_zero(float,float); floata,b,c; printf("inputa,b,c: "); scanf("%f,%f,%f",&a,&b,&c); printf("equation: %5.2f*x*x+%5.2f*x+%5.2f=0\n",a,b,c); disc=b*b-4*a*c; printf("root: \n"); if(disc>0) {greater_than_zero(a,b); printf("x1=%f\t\tx2=%f\n",x1,x2); } elseif(disc==0) {equal_to_zero(a,b); printf("x1=%f\t\tx2=%f\n",x1,x2); } else {smaller_than_zero(a,b); printf("x1=%f+%fi\tx2=%f-%fi\n",p,q,p,q); } } voidgreater_than_zero(floata,floatb) {x1=(-b+sqrt(disc))/(2*a); x2=(-b-sqrt(disc))/(2*a); } voidequal_to_zero(floata,floatb) {x1=x2=(-b)/(2*a); } voidsmaller_than_zero(floata,floatb) {p=-b/(2*a); q=sqrt(-disc)/(2*a); } 运行结果: 实验八: 14.输入10个学生5门课的成绩,分别用函数实现下列功能: <1>计算每个学生的平均分; <2>计算每门课的平均分; <3>找出所有50个分数中最高的分数所对应的学生和课程; <4>计算平均分方差: #include #defineN10 #defineM5 floatscore[N][M]; floata_stu[N],a_cour[M]; intr,c; intmain() {inti,j; floath; floats_var(void); floathighest(); voidinput_stu(void); voidaver_stu(void); voidaver_cour(void); input_stu(); aver_stu(); aver_cour(); printf("\nNO.cour1cour2cour3cour4cour5aver\n"); for(i=0;i {printf("\nNO%2d",i+1); for(j=0;j printf("%8.2f",score[i][j]); printf("%8.2f\n",a_stu[i]); } printf("\nawerage: "); for(j=0;j printf("%8.2f",a_cour[j]); printf("\n"); h=highest(); printf("highest: %7.2fNO.%2dcourse%2d\n",h,r,c); printf("variance%8.2f\n",s_var()); return0; } voidinput_stu(void) {inti,j; for(i=0;i {printf("\ninputscoreofstudent%2d: \n",i+1); for(j=0;j scanf("%f",&score[i][j]); } } voidaver_stu(void) {inti,j; floats; for(i=0;i {for(j=0,s=0;j s+=score[i][j]; a_stu[i]=s/5; } } voidaver_cour(void) {inti,j; floats; for(j=0;j {s=0; for(i=0;i s+=score[i][j]; a_cour[j]=s/(float)N; } } floathighest() {floathigh; inti,j; high=score[0][0]; for(i=0;i for(j=0;j if(score[i][j]>high) {high=score[i][j]; r=i+1; c=j+1; } return(high); } floats_var(void) {inti; floatsumx,sumxn; sumx=0.0; sumxn=0.0; for(i=0;i {sumx+=a_stu[i]*a_stu[i]; sumxn+=a_stu[i]; } return(sumx/N-(sumxn/N)*(sumxn/N)); } 运行结果: 以上是输入10个学生的5门课的成绩,下面是输出结果: 实验九: 15写几个函数: <1>输入10个职工的姓名和职工号; <2>按职工号由小到大顺序排序,姓名顺序也随之调整; #include #include #defineN10 intmain() {voidinput(int[],charname[][8]); voidsort(int[],charname[][8]); intnum[N],number,flag=1,c; charname[N][8]; input(num,name); sort(num,name); while(flag==1) {printf("\ninputnumbertolookfor: "); scanf("%d",&number); printf("continuetonot(Y/N)? "); getchar(); c=getchar(); if(c=='N'||c=='n') flag=0; } return0; } voidinput(intnum[],charname[N][8]) {inti; for(i=0;i {printf("inputNO.: "); scanf("%d",&num[i]); printf("inputname: "); getchar(); gets(name[i]); } } voidsort(intnum[],charname[N][8]) {inti,j,min,templ; chartemp2[8]; for(i=0;i {min=i; for(j=i;j if(num[min]>num[j])min=j; templ=num[i]; strcpy(temp2,name[i]); num[i]=num[min]; strcpy(name[i],name[min]); num[min]=templ; strcpy(name[min],temp2); } printf("\nresult: \n"); for(i=0;i printf("\n%5d%10s",num[i],name[i]); } 运行结果: 实验十: 16.写一个函数,输入一个十六进制数,输出相应的十进制数。 #include #defineMAX1000 main() {inthtoi(chars[]); intc,i,flag,flag1; chart[MAX]; i=0; flag=0; flag1=1; printf("inputaHEXnumber: "); while((c=getchar())! ='\0'&&i {if(c>='0'&&c<='9'||c>='a'&&c<='f'||c>='A'&&c<='F') {flag=1; t[i++]=c; } elseif(flag) {t[i]='\0'; printf("decimalnumber%d\n",htoi(t)); printf("continueornot? "); c=getchar(); if(c=='N'||c=='n') flag1=0; else {flag=0; i=0; printf("\ninputaHEXnumber: "); } } } } inthtoi(chars[]) {inti,n; n=0; for(i=0;s[i]! ='\0';i++) {if(s[i]>='0'&&s[i]<='9') n=n*16+s[i]-'0'; if(s[i]>='a'&&s[i]<='f') n=n*16+s[i]-'a'+10; if(s[i]>='A'&&s[i]<='F') n=n*16+s[i]-'A'+10; } return(n); } 运行结果: 实验十一: 3.输入10个整数,将其中最小的数与第1个数对换,把最大数与最后一个数对换。 写成三个函数;输入10个数;进行处理;输出10个数。 f(x,n) intx[],n; {int*p0,*p1,i,j,t,y; i=j=x[0];p0=p1=x; for(y=0;y {if(x[y]>i) {i=x[y];p0=&x[y];} elseif(x[y] {j=x[y];p1=&x[y];}} t=*p0;*p0=x[n-1];x[n-1]=t; t=*p1;*p1=x[0];x[0]=t; return; } main() {inta[10],u,*r; for(u=0;u<10;u++) scanf("%d",&a[u]); f(a,10); for(u=0,r=a;u<10;u++,r++) printf("%d",a[u]); printf("\n"); } 运行结果: 实验十二: 16、写一个函数,输入一个十六进制数,输出相应的十进制数。 #include #defineMAX1000 intmain() {inthtoi(chars[]); intc,i,flag,flag1; chart[MAX]; i=0;flag=0;flag1=1; printf("inputaHEXnumber;"); while((c=getchar())! ='\0'&&i {if(c>='0'&&c<='9'||c>='a'&&c<='f'||c>='A'&&c<='F') {flag=1;t[i++]=c;} elseif(flag) {t[i]='\0'; printf("decimalnumber%d\n",htoi(t)); printf("continueornot? "); c=getchar(); if(c=='N'||c=='n') flag1=0; else {flag=0;i=0; printf("\ninputaHEXnumber: "); } } } return0; } inthtoi(chars[]) {inti,n;n=0; for(i=0;s[i]! ='\0';i++) {if(s[i]>='0'&&s[i]<='9') n=n*16+s[i]-'0'; if(s[i]>='a'&&s[i]<='f') n=n*16+s[i]-'a'+10; if(s[i]>='A'&&s[i]<='F') n=n*16+s[i]-'A'+10; } return(n); } 运行结果: 实验十三: 6.写出一函数,求一字符串的长度.在main函数中输入字符串,并输出其长度。 #include intmain() {intlength(char*p); intlen; charstr[20]; printf("inputstring;"); scanf("%s",str); len=length(str); printf("Thelengthofstringis%d.\n",len); return0; } intlength(char*p) {intn; n=0; while(*p! ='\0') {n++;p++;} return(n); } 运行结果; 实验十四: 8.输入一行文字,找出其中大写字母、小写字母、空格、数字以及其他字符各有多少。 #include intmain() {intupper=0,lower=0,digit=0,space=0,other=0,i=0; char*p,s[20]; printf("inputstring: "); while((s[i]=getchar())! ='\n')i++; p=&s[0]; while(*p! ='\n') {if(('A'<=*p)&&(*p<='Z')) ++upper; elseif(('a'<=*p)&&(*p<='z')) ++lower; elseif(*p=='') ++space; elseif((*p<='9')&&(*p>='0')) ++digit; else ++other;p++; } printf("uppercase: %dlowercase: %d",upper,lower); printf("space: %ddigit: %dother;%d\n",space,digit,other); return0; } 运行结果:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 实验 报告