C2实验报告 2.docx

上传人:b****4 文档编号:5650027 上传时间:2023-05-08 格式:DOCX 页数:50 大小:517.54KB
下载 相关 举报
C2实验报告 2.docx_第1页
第1页 / 共50页
C2实验报告 2.docx_第2页
第2页 / 共50页
C2实验报告 2.docx_第3页
第3页 / 共50页
C2实验报告 2.docx_第4页
第4页 / 共50页
C2实验报告 2.docx_第5页
第5页 / 共50页
C2实验报告 2.docx_第6页
第6页 / 共50页
C2实验报告 2.docx_第7页
第7页 / 共50页
C2实验报告 2.docx_第8页
第8页 / 共50页
C2实验报告 2.docx_第9页
第9页 / 共50页
C2实验报告 2.docx_第10页
第10页 / 共50页
C2实验报告 2.docx_第11页
第11页 / 共50页
C2实验报告 2.docx_第12页
第12页 / 共50页
C2实验报告 2.docx_第13页
第13页 / 共50页
C2实验报告 2.docx_第14页
第14页 / 共50页
C2实验报告 2.docx_第15页
第15页 / 共50页
C2实验报告 2.docx_第16页
第16页 / 共50页
C2实验报告 2.docx_第17页
第17页 / 共50页
C2实验报告 2.docx_第18页
第18页 / 共50页
C2实验报告 2.docx_第19页
第19页 / 共50页
C2实验报告 2.docx_第20页
第20页 / 共50页
亲,该文档总共50页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

C2实验报告 2.docx

《C2实验报告 2.docx》由会员分享,可在线阅读,更多相关《C2实验报告 2.docx(50页珍藏版)》请在冰点文库上搜索。

C2实验报告 2.docx

C2实验报告2

《C程序设计2》实验报告格式

实验名称

1、实验目的(自己组织)

2、实验内容

(1)

(2)

(3)

3、实验报告要求

(1)程序(可写在实验内容处);

(2)程序运行结果及分析;

(3)实验总结;

(4)学期结束,将所有实验内容完善后,以文件形式提交(文件名格式:

学号_姓名.RAR)。

《C程序设计2》实验内容

实验一:

函数

1、定义函数返回两个数中的最大数,在主函数中通过调用该函数求三个数中较大的数并输出。

#include

intmain()

{

floatf(floatx,floaty);

floata,b,c,max;

printf("putthreedigits:

");

scanf("%f%f%f",&a,&b,&c);

max=f(a,b);

max=f(c,max);

printf("%f%f%fmax=%f",a,b,c,max);

getch();

}

floatf(floatx,floaty)

{

floatm;

m=x;

if(x

returnm;

}

分析:

两次调用函数就可以了。

2、编写一个判断一个整数是否为素数的函数,并求出在2000以内的所有素数。

#include

intmain()

{

intf(intx);

inti,j=0;

for(i=2;i<2000;i++)

{

if(f(i)==1)

{

printf("%d",i);

j++;

if(j%5==0)printf("\n");

}

}

return0;

}

intf(intx)

{

intm;

for(m=2;m

if(x%m==0)break;

if(m>=x)return1;

elsereturn0;

}

3、求方程ax2+bx+c=0的根,用三个函数分别求b2-4ac大于0、等于0和小于0的根,并输出结果。

从主函数输入a、b、c的值。

#include

#include

#include

intmain()

{

voidjisuan1(floatm,floata,floatb,floatc);

voidjisuan2(floatm,floata,floatb,floatc);

voidjisuan3(floatm,floata,floatb,floatc);

floata,b,c,m;

printf("请输入一元二次方程组的a,b,c:

");

scanf("%f%f%f",&a,&b,&c);

printf("\n");

m=b*b-4*a*c;

if(a==0)

printf("不是一元二次方程组!

");

elseif(m>0)jisuan1(m,a,b,c);

elseif(m==0)jisuan2(m,a,b,c);

elseif(m<0)jisuan3(m,a,b,c);

getch();

}

voidjisuan1(floatm,floata,floatb,floatc)

{

floatm1,m2,x1,x2;

m1=-b/(2*a);

m2=sqrt(m)/(2*a);

x1=m1+m2;

x2=m1-m2;

printf("该方程的根为:

\n");

printf("x1=%.2fx2=%.2f",x1,x2);

}

voidjisuan2(floatm,floata,floatb,floatc)

{

floatm1,x1,x2;

m1=-b/(2*a);

printf("该方程的根为:

\n");

printf("x1=x2=%.2f",m1);

}

voidjisuan3(floatm,floata,floatb,floatc)

{

floatm1,m2,x1,x2;

m1=-b/(2*a);

m2=sqrt(-m)/(2*a);

printf("该方程的根为:

\n");

printf("x1=%.2f+%.2fix2=%.2f-%.2fi",m1,m2,m1,m2);

}

4、定义一个函数replace(),其中包含三个形参:

两个是字符型,一个是字符串型。

该函数返回一个整数。

函数的功能是在字符串中查找第一个字符,如果找到,用第二个字符替换该字符,并将替换的次数作为返回值。

编写主函数调用该函数。

#include

#include

intmain()

{

intreplace(char*s,charc1,charc2);

chars[100],ch1,ch2;

intcount;

printf("请输入一个字符串:

\n");

gets(s);

printf("\n请输入两个字符:

\n");

scanf("%c%c",&ch1,&ch2);

count=replace(s,ch1,ch2);

printf("变化后的字符串为:

");

puts(s);

printf("\n字符变化的次数为:

%d",count);

getch();

}

intreplace(char*s,charc1,charc2)

{

inti,count=0;

for(i=0;s[i]!

='\0';i++)

{

if(s[i]==c1)

{

s[i]=c2;

count++;

}

}

returncount;

}

实验二:

数组

(一)

1、由键盘对10个数组元素初始化,求它们的平均值并输出。

#include

intmain()

{

floata[10],s=0;

inti;

for(i=0;i<10;i++)

scanf("%f",&a[i]);

for(i=0;i<10;i++)

{

printf("%.2f",a[i]);

s+=a[i];

}

printf("\ntheaverageis%.2f",1.0*s/10);

getch();

}

2、输入一个十进制整数,输出与其相等的二进制形式。

将二进制保存在一个数组中,然后按相反的顺序输出。

#include

intmain()

{

intx,a[100],i,j;

printf("putadigit:

");

scanf("%d",&x);

for(i=0;x!

=0;i++)

{

a[i]=x%2;

x=x/2;

}

i--;

for(j=0;j<=i;j++)

printf("%d",a[j]);

getch();

}

2、编程对10个数组元素的排序。

#include

intmain()

{

floata[10],j,t,i,m;

for(i=0;i<10;i++)

scanf("%f",&a[i]);

for(i=0;i<10;i++)

printf("%.2f",a[i]);

printf("\n");

for(i=0;i<9;i++)

{

m=i;

for(j=m+1;j<10;j++)

if(a[m]>a[j])m=j;

t=a[i];a[i]=a[m];a[m]=t;

}

for(i=0;i<10;i++)

if(i!

=9)

printf("%.2f<=",a[i]);

else

printf("%.2f",a[i]);

getch();

}

实验三:

数组

(二)

1、由键盘对4×4的二维数组初始化,计算其两条对角线元素之和并输出。

#include

#include

intmain()

{

inta[4][4],i,j,s1,s2;

printf("put16number:

");

for(i=0;i<4;i++)

for(j=0;j<4;j++)

scanf("%d",&a[i][j]);

for(i=0;i<4;i++)

{

for(j=0;j<4;j++)

printf("%d",a[i][j]);

printf("\n");

}

s1=s2=0;

for(i=0;i<4;i++)

for(j=0;j<4;j++)

if(i==j)s1+=a[i][j];

elseif(i+j==3)s2+=a[i][j];

printf("s1=%ds2=%d",s1,s2);

getch();

}

2、通过二维数组实现杨辉三角的前10行并输出。

杨辉三角形式请参考教材P153。

#include

intmain()

{

inta[10][10],i,j;

for(i=0;i<10;i++)

for(j=0;j<10;j++)

a[i][j]=1;

for(i=2;i<10;i++)

for(j=1;j

a[i][j]=a[i-1][j-1]+a[i-1][j];

for(i=0;i<10;i++)

{

for(j=0;j<=i;j++)

printf("%3d",a[i][j]);

printf("\n");

}

getch();

}

3、将M×N的矩阵转置成N×M的矩阵并输出。

#include

#include

intmain()

{

inta[100][100],i,j,m,n;

printf("输入m,n:

");

scanf("%d%d",&m,&n);

for(i=0;i

for(j=0;j

scanf("%d",&a[i][j]);

printf("bofore:

\n");

for(i=0;i

{

for(j=0;j

printf("%d",a[i][j]);

printf("\n");

}

printf("after:

\n");

for(i=0;i

{

for(j=0;j

printf("%d",a[j][i]);

printf("\n");

}

getch();

}

实验四:

指针

(一)

注:

实验四~实验六的所有程序都使用指针方法操作

1、编写求字符串串长的函数(strlen),并在主函数中调用。

#include

#include

intmain()

{

intstrlen(char*s);

chars[100];

printf("输入一个字符串:

\n");

gets(s);

printf("这个字符串的长度为:

%d",strlen(s));

getch();

}

intstrlen(char*s)

{

inti;

for(i=0;s[i]!

='\0';i++);

returni;

}

2、编写连接两字符串的函数(strcat),并在主函数中调用。

#include

#include

main()

{

voidstrcat(char*s1,char*s2);

charsm1[100],sm2[100];

printf("请输入一个字符串:

\n");

gets(sm1);

printf("请输入一个字符串:

\n");

gets(sm2);

strcat(sm1,sm2);

printf("处理后的字符串为:

%s",sm1);

getch();

}

voidstrcat(char*s1,char*s2)

{

inti,j=0;

for(i=0;s1[i]!

='\0';i++);

while(s2[j]!

='\0')

{

s1[i]=s2[j];

i++;

j++;

}

}

3、sort()对一维整数数组的内容进行排序;编写函数in_data()读入一组整数;编写函数out_data输出整数数组的内容;在主函数中调用这些函数,输入一组整数,输出排序前和排序后的情况。

#include

#include

ints[100];

intn;

main()

{

voidint_data();//输入

voidout_data();//输出

voidsort(int*s);//排序

int_data();

sort(s);

out_data();

getch();

}

voidint_data()

{

inti;

printf("输入一个数:

");

scanf("%d",&n);

printf("\n输入%d个数:

",n);

for(i=0;i

scanf("%d",&s[i]);

}

voidout_data()

{

inti;

for(i=0;i

printf("%d",s[i]);

}

voidsort(int*s)

{

inti,j,t;

for(i=1;i

for(j=0;j

if(s[j]>s[j+1])

{

t=s[j];

s[j]=s[j+1];

s[j+1]=t;

}

}

实验五:

指针

(二)

1、编写函数 reverse(*s),实现对字符串S的倒排,编写主函数对其进行调用。

#include

#include

#include

intmain()

{

voidreverse(char*s);

charsh[100];

printf("输入一个字符串:

");

gets(sh);

reverse(sh);

printf("输出一个字符串:

");

puts(sh);

getch();

}

voidreverse(char*s)

{

inti,j;

charch;

j=strlen(s);

for(i=0,j=j-1;i

{

ch=s[i];

s[i]=s[j];

s[j]=ch;

}

}

2、编写函数strcmp(*s1,*s2),实现对两字符串的比较,编写主函数对其进行调用。

#include

#include

#include

intmain()

{

intstrcmp(char*s1,char*s2);

charsm1[100],sm2[100];

intcount;

printf("输入一个字符串:

");

gets(sm1);

printf("输入一个字符串:

");

gets(sm2);

count=strcmp(sm1,sm2);

if(count==1)printf("sm1>sm2");

elseif(count==0)printf("sm1=sm2");

elseprintf("sm1

getch();

}

intstrcmp(char*s1,char*s2)

{

intl1,l2,min,i;

l1=strlen(s1);

l2=strlen(s2);

min=l1>l2?

l2:

l1;

for(i=0;i

if(s1[i]==s2[i])continue;

elsebreak;

if(min-1==i)

{

if(l1>l2)return1;

elseif(l1==l2)return0;

elsereturn-1;

}

else

{

if(s1[i]>s2[i])return1;

elseif(s1[i]==s2[i])return0;

elsereturn-1;

}

}

3、有一字符串,包含n个字符,写一函数,将此字符串中从第m个字符开始的全部字符复制成为另一个字符串。

#include

#include

#include

intmain()

{

voidcopy(char*s,intm);

intn,m,i;

chars[100];

printf("请输入n的值:

");

scanf("%d",&n);

printf("请输入一个字符串:

");

for(i=0;i

scanf("%c",&s[i]);

s[i]='\0';

printf("请输入M的值:

");

scanf("%d",&m);

copy(s,m);

printf("%s",s);

getch();

}

voidcopy(char*s,intm)

{

strcpy(s,s+m);

}

实验六:

指针(三)

1、有一个班4个学生5门课程。

(1)求第一门课程的平均分;

(2)找出有2门以上课程不及格的学生,输出他们的学号和全部课程成绩及平均成绩;(3)找出平均成绩在90分以上的学生。

分别编3个函数实现以上要求。

#include

voidaverage(floatstu[4][5],floatav[4])

{

inti,j;

for(i=0;i<4;i++)

av[i]=0;

for(i=0;i<4;i++)

{

for(j=0;j<5;j++)

av[i]+=stu[i][j];

av[i]=1.0*av[i]/5;

}

}

voidfirstsubject(floatstu[4][5])

{

floats=0;

inti;

for(i=0;i<4;i++)

s+=stu[i][0];

printf("\n这些学生第一门课的平均分是:

%.2f\n",1.0*s/4);

}

voidsearch(floatstu[4][5],longnum[4])

{

intcount[4],i,j;

floatav[4];

average(stu,av);

for(i=0;i<4;i++)

count[i]=0;

for(i=0;i<4;i++)

for(j=0;j<5;j++)

if(stu[i][j]<60)count[i]++;

printf("输出两门课以上不及格学生的信息:

\n");

for(i=0;i<4;i++)

{

if(count[i]>2)

{

printf("学号5门课的成绩平均成绩\n");

printf("%ld",num[i]);

for(j=0;j<5;j++)

{

printf("%.2f",stu[i][j]);

}

printf("%.2f\n",av[i]);

}

}

}

voidzhaochu(floatstu[4][5],longnum[4])

{

floatav[4];

inti;

average(stu,av);

printf("平均成绩在90以上的学生信息:

\n");

for(i=0;i<4;i++)

{

if(av[i]>=90)

{

printf("学号:

%ld\n",num[i]);

printf("平均成绩:

%.2f\n",av[i]);

}

}

}

main()

{

floatstu[4][5];

longnum[4];

inti,j;

printf("输入4位学生的信息:

\n");

for(i=0;i<4;i++)

{

printf("输入第%d位学生的信息:

\n",i+1);

printf("学号:

");

scanf("%ld",&num[i]);

printf("\n");

for(j=0;j<5;j++)

{

printf("输入该学生第%d门课的成绩:

",j+1);

scanf("%f",&stu[i][j]);

}

}

firstsubject(stu);

search(stu,num);

zhaochu(stu,num);

}

2、编写一个程序,输入月份,输出该月的英文月名。

例如,输入“3”,则输出“March”,要求用指针数组实现。

#include

voidmain()

{

char*month[]=

{

"January",

"Febuary",

"March",

"April",

"May",

"June",

"July",

"August"

"September",

"Octomber",

"December",

"November"

};

intx;

printf("请用数字输入月份:

");

scanf("%d",&x);

printf("%s\n",month[x-1]);

}

实验七:

结构体

(一)

1、用结构体表示日期,编写程序计算伦敦奥运会的倒计时的天数并输出(2012年8月15日)。

#include

struct

{

intyear;

intmonth;

intday;

}date;

intbanduan(intyear)

{

return((year%4==0&&year%100!

=0)||(year%400==0));

}

main()

{

inti,j,s=0;

inttap[2][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31},{0,31,29,31,30,31,30,31

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 城乡园林规划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2