计算机C语言实验报告含答案.docx

上传人:b****6 文档编号:8846719 上传时间:2023-02-02 格式:DOCX 页数:14 大小:19.86KB
下载 相关 举报
计算机C语言实验报告含答案.docx_第1页
第1页 / 共14页
计算机C语言实验报告含答案.docx_第2页
第2页 / 共14页
计算机C语言实验报告含答案.docx_第3页
第3页 / 共14页
计算机C语言实验报告含答案.docx_第4页
第4页 / 共14页
计算机C语言实验报告含答案.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

计算机C语言实验报告含答案.docx

《计算机C语言实验报告含答案.docx》由会员分享,可在线阅读,更多相关《计算机C语言实验报告含答案.docx(14页珍藏版)》请在冰豆网上搜索。

计算机C语言实验报告含答案.docx

计算机C语言实验报告含答案

高级语言程序设计(C语言)实验报告。

………………………………………………………………………………………………

一、实验题目:

语句与顺序结构控制

程序设计

1)编写程序,已知圆半径radius=1.25,求圆周长和面积。

源代码:

运行结果:

#included=7.853981

#definePI3.1415926s=4.908735

voidmain()

{

floatr=1.25,d,s;

d=2.0*PI*r;

s=PI*r*r;

printf("d=%f\n",d);

printf("s=%f\n",s);

}

 

2)编写程序完成大写字母的小写转换。

源代码:

运行结果:

#include请输入一个大写字母:

H

voidmain()Hh

{

charch1,ch2;

printf("请输入一个大写字母:

");

ch1=getchar();

ch2=ch1+32;

printf("%c%c\n",ch1,ch2);

}

 

3)任意从键盘输入一个三位整数,要求正确分离出它的个位、十位和百位数,并分别在屏幕上显示。

源代码:

运行结果:

#include请输入一个整数:

123

voidmain()b=1,s=2,g=3

{

inta,g,s,b;

printf("请输入一个整数:

");

scanf("%d",&a);

b=a/100;

s=(a%100)/10;

g=a%10;

printf("b=%d,s=%d,g=%d\n",b,s,g);

}

二、实验题目:

选择结构程序设计

程序设计

1)设变量a、b、c分别存放从键盘输入的3个整数。

编写程序,按从大到小的顺序排列这3个整数,使a成为最大的,c成为最小的,并且按序输出这3个整数。

源代码:

运行结果:

#includepleaseinputa,b,c:

4,6,10

voidmain()10,6,4

{

inta,b,c,t;

printf("pleaseinputa,b,c:

");

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

if(a

if(a

if(b

printf("%d%d%d\n",a,b,c);

}

2)输入某学生的考试成绩等级A、B、C、D,要求按照等级输出对应的分数段。

A级对应分数段为80~100,B级对应分数段70~79,C级对应分数段60~69,D级对应分数段为60分以下。

源代码:

运行结果:

#include请输入成绩等级B

voidmain()B---70~79

{

charc;

printf("请输入成绩等级");

c=getchar();

switch(c)

{

case'A':

printf("%c---80~100\n",c);break;

case'B':

printf("%c---70~79\n",c);break;

case'C':

printf("%c---60~69\n",c);break;

case'D':

printf("%c---60分以下\n",c);break;

default:

printf("输入错误\n");

}

}

三、实验题目:

循环结构程序设计

程序设计

1)找出100-900之间的无暇素数。

所谓无暇素数是指本身为素数,且其逆序数也是素数的数。

例如:

113是一个素数,311也是一个素数,113就是无暇素数。

源代码:

运行结果:

#include101107113131149

voidmain()151157167179181

{191199311313337

inti,j,flag1,flag2,g,s,b,r,count;347353359373383

count=0;389701709727733

for(i=100;i<=900;i++)739743751757761

{769787797

b=i/100;

s=(i%100)/10;

g=i%10;

r=g*100+s*10+b;

flag1=flag2=1;

for(j=2;j

if(i%j==0)flag1=0;

for(j=2;j

if(r%j==0)flag2=0;

if(flag1&&flag2)

{count++;

printf("%5d",i);

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

}

}

}

2)编程:

用迭代法求某数a的平方根。

平方根的迭代公式如下:

xn+1=(xn+a/xn)/2;设x0=a/2;

当迭代相邻两项差的绝对值小于10-5时,迭代结束。

源代码:

运行结果:

#include请输入一个实数:

4

#include2.000000,2.000000

voidmain()

{

doublea,x1,x2,d;

printf("请输入一个实数:

");

scanf("%lf",&a);

x1=a/2.0;

do

{

x2=(x1+a/x1)/2.0;

d=fabs(x1-x2);

x1=x2;

}

while(d>=1.0E-5);

printf("%f,%f\n",x2,sqrt(a));

}

四、实验题目:

数组

程序设计

1)完全数(Perfectnumber),又称完美数或完备数,是一些特殊的自然数。

它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。

编程找出1000以内的所有完全数,并输出使该数成为完全数的因子。

(例如6=1+2+3。

按照6,itsfactorsare1,2,3格式输出)。

源代码:

运行结果:

#include6,itsfactsare123

voidmain()28,itsfactsare124714

{496,itsfactsare1248163162124248

inti,j,count,sum,f[1000];

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

{

count=0;sum=0;

for(j=1;j

if(i%j==0)

{

f[count]=j;

sum=sum+f[count];

count++;

}

if(i==sum)

{

printf("%d,itsfactsare",i);

for(j=0;j

printf("\n");

}

}

}

2)从键盘输入字符串a和字符串b,并在a串中的最小元素(不含结束符)后面插入字符串b。

源代码:

运行结果:

#includedfghj

#includeqwerty

#defineN80dqwertyfghj

voidmain()

{

chara[N],b[N],c[N];

intmin,i,j,n;

gets(a);

gets(b);

min=0;

for(i=1;a[i]!

='\0';i++)

if(a[i]

n=strlen(b);

for(j=0,i=min+1;a[i]!

='\0';i++)

c[j++]=a[i];c[j]='\0';a[min+1]='\0';

strcat(a,b);

strcat(a,c);

puts(a);

}

五、实验题目:

函数

程序设计

1)编程实现求两个正整数的最大公约数,要求计算最大公约数用函数

fun(inta,intb)实现。

源代码:

运行结果:

#include请输入两个整数:

126

inthcf(intm,intn)/*求最大公约数的函数*/a=6

{intt,r;

if(n>m)

{t=n;n=m;m=t;}

while((r=m%n)!

=0)

{m=n;n=r;}

return(n);

}

voidmain()

{

intm,n,a;

printf("请输入两个整数:

");

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

a=hcf(m,n);

printf("a=%d\n",a);

}

2)编程实现打印出2~n之间的所有素数,要求判断素数过程用自定义函数实现。

源代码:

运行结果:

#includeinputn:

20

intisprime(intn)235711131719

{inti;

for(i=2;i

if(n%i==0)

return0;

return1;

}

voidmain()

{inti,n;

printf("inputn:

");

scanf("%d",&n);

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

if(isprime(i))

printf("%d",i);

}

3)编写函数fun(intt),它的功能是:

求斐波那契数列中大于t的最小的一个数,结果由函数返回。

其中斐波那契数列f(n)的定义为:

f

(1)=1,f

(2)=1

f(n)=f(n-1)+f(n-2)(n>2)

例如:

当t=1000时,函数值为:

1597。

源代码:

运行结果:

#includeInputnplease:

1000

intfun(intt)n=1000,f=1597

{intf1,f2,f;

f1=f2=1;

f=f1+f2;

while(f<=t)

{f1=f2;

f2=f;

f=f1+f2;

}

returnf;

}

voidmain()

{intn;

printf("Inputnplease:

");

scanf("%d",&n);

printf("n=%d,f=%d\n",n,fun(n));

}

六、实验题目:

指针

程序设计

1)分别求出数组中所有3的倍数之和以及5的倍数之和。

形参n给了数组中数据的个数,利用指针three返回3的倍数之和,利用指针five返回5的倍数之和。

例如:

数组中的值依次为:

1,5,9,2,3,15,11,6,10;则利用指针three返回3的倍数之和33;利用指针five返回5的倍数之和30。

请在下面空白处完善这一函数的功能,并且调试运行出结果。

源代码:

运行结果:

#includeTheoriginaldatais:

#defineN20159231511610

voidfun(int*a,intn,int*three,int*five)3的倍数之和:

33

{inti;5的倍数之和:

30

*three=*five=0;

for(i=0;i

{if(a[i]%3==0)*three+=a[i];

if(a[i]%5==0)*five+=a[i];

}

}

voidmain()

{

inta[N]={1,5,9,2,3,15,11,6,10},i,n=9,three,five;

printf("Theoriginaldatais:

\n");

for(i=0;i

printf("%5d",*(a+i));

printf("\n\n");

fun(a,n,&three,&five);

printf("3的倍数之和:

%d\n",three);

printf("5的倍数之和:

%d\n",five);

}

2)从键盘输入一个字符串,实现利用字符指针将字符串的字符顺序逆置并输出。

(例如输入abcdef,输出fedcba)。

请编写相应的程序代码,并调试运行出正确结果。

源代码:

运行结果:

#include请输入一个字符串:

#includeabcdefg

voidreverse(char*p,intn)gfedcba

{

char*q,t;

for(q=p+n-1;p

{t=*p;*p=*q;*q=t;}

}

voidmain()

{

chars[80];

intn;

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

\n");

gets(s);

n=strlen(s);

reverse(s,n);

puts(s);

}

七、实验题目:

结构体和共用体

程序验证:

启动vc语言环境,输入并执行个运行结果:

#includeInputstudent’snumber

structstu003

{name=Alice

intnum;sex=W

charname[10];age=22

charsex;79789697

intage;

intscore[4];

}

students[]={{001,"David",'M',25,{80,78,92,94}},

{002,"Lily",'W',23,{90,84,89,95}},

{003,"Alice",'W',22,{79,78,96,97}},

voidmain()

{

inti,j,number;

printf("Inputstudent’snumber\n");

scanf("%d",&number);

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

if(number==students[i].num)break;

printf("name=%s\nsex=%c\nage=%d\n",students[i].name,students[i].sex,students[i].age);

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

printf("%d",students[i].score[j]);

printf("\n");

}

程序设计:

某单位进行选举,有5位候选人:

李宁、王新、赵广、陈奇、六六。

编写一个统计每人得票数的程序。

要求每一个人的信息使用一个结构体表示,5个人的信息使用结构体数组。

源代码:

运行结果:

#include请输入总票数3

#include李宁

structperson王新

{赵广

charname[18];李宁,1

intcount;王新,1

}leader[5]={{"李宁",0},{"王新",0},{"赵广",0},{"陈奇",0},{"六六",0}};赵广,1

voidmain()陈奇,0

{六六,0

inti,j,k;

charleader_name[18];

printf("请输入总票数");

scanf("%d",&k);

for(i=1;i<=k;i++)

{

scanf("%s",leader_name);

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

if(strcmp(leader_name,leader[j].name)==0)

leader[j].count++;

}

printf("\n");

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

printf("%5s,%d\n",leader[i].name,leader[i].count);

}

八、实验题目:

文件

1.程序验证

用记事本编辑文本文件file1.txt。

分析一下程序的功能及结果,并验证。

#include

#include

voidmain()

{

FILE*in,*out;

if((in=fopen("file1.txt","r"))==NULL)

{

printf("Can’topenthisfile.\n");

exit(0);

}

if((out=fopen("file2.txt","w"))==NULL)

{printf("Can’topenthisfile.\n");

exit(0);

}

while(!

feof(in))

fputc(fgetc(in),out);

fclose(in);

fclose(out);

}

程序功能:

把文件file1.txt中的内容复制到文件file2.txt中。

程序输出结果:

(源文件file1.txt的内容为“wwww”)_出现文件file2.txt_且内容为“wwww”。

2.程序设计

编程:

有5个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学号,姓名,三门课成绩),计算出总成绩,将原有的数据和计算出的总分数存放在磁盘文件stu.txt中。

源代码:

运行结果:

#include"stdio.h"请输入第1位同学的学号001

#include"stdlib.h"请输入第1位同学的姓名q

voidmain()请输入第1位同学的分数607080

{请输入第2位同学的学号002

structstudent请输入第2位同学的姓名w

{intnum;请输入第2位同学的分数708090

charname[20];请输入第3位同学的学号003

floatscore[3];请输入第3位同学的姓名e

floatsum;请输入第3位同学的分数8090100

}stu[5];请输入第4位同学的学号004

inti,j;请输入第4位同学的姓名r

FILE*fp;请输入第4位同学的分数908070

if((fp=fopen("stu.txt","w"))==NULL)请输入第5位同学的学号005

{printf("can'topenthisfile");请输入第5位同学的姓名t

exit(0);请输入第5位同学的分数808090

}

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

{printf("请输入第%d位同学的学号",i+1);

scanf("%d",&stu[i].num);

printf("请输入第%d位同学的姓名",i+1);

scanf("%s",&stu[i].name);

printf("请输入第%d位同学的分数",i+1);

stu[i].sum=0;

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

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

stu[i].sum+=stu[i].score[j];

}

}

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

fprintf(fp,"%d\t%s\t%f\t%f\t%f\t%f\n",stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].sum);

}

stu.txt的内容:

1q60.00000070.00000080.000000210.000000

2w70.00000080.00000090.000000240.000000

3e80.00000090.000000100.000000270.000000

4r90.00000080.00000070.000000240.000000

5t80.00000080.00000090.000000250.000000

 

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

当前位置:首页 > 解决方案 > 其它

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1