C语言实验报告Word下载.docx

上传人:b****6 文档编号:19907456 上传时间:2023-01-12 格式:DOCX 页数:33 大小:31.70KB
下载 相关 举报
C语言实验报告Word下载.docx_第1页
第1页 / 共33页
C语言实验报告Word下载.docx_第2页
第2页 / 共33页
C语言实验报告Word下载.docx_第3页
第3页 / 共33页
C语言实验报告Word下载.docx_第4页
第4页 / 共33页
C语言实验报告Word下载.docx_第5页
第5页 / 共33页
点击查看更多>>
下载资源
资源描述

C语言实验报告Word下载.docx

《C语言实验报告Word下载.docx》由会员分享,可在线阅读,更多相关《C语言实验报告Word下载.docx(33页珍藏版)》请在冰豆网上搜索。

C语言实验报告Word下载.docx

【思考题】若将第四行改为:

intc1,c2;

再使之运行,输出结果一样吗?

为什么?

答:

一样,因为定义char型时已经包含了int型,且后面赋值为整形,就和赋c1,c2为int型一样。

(二)程序填空:

输入一个十进制整数,输出与之相应的八进制数与十六进制数。

例如:

输入31,输出37(八进制)和1F(十六进制)。

源程序如下:

{

longn;

输入一个十进制整数:

"

%d"

n);

对应的八进制整数是%o\n"

n);

对应的十六进制整数是%x\n"

return0;

运行程序,输入1234567,显示结果如何?

输出“4553207和12d687”

3.实验程序清单及运行结果

1.要将"

China"

译成密码,译码规律是:

用原来字母后面的第4个字母代替原来的字母.例如,字母"

A"

后面第4个字母是"

E"

."

代替"

因此,"

应译为"

Glmre"

请编一程序,用赋初值的方法使cl、c2、c3、c4、c5五个变量的值分别为,’C’、’h’、’i’、’n’、’a’,经过运算,使c1、c2、c3、c4、c5分别变为’G’、’l’、’m’、’r’、’e’,并输出。

charc1,c2,c3,c4,c5;

c1='

C'

;

c2='

h'

c3='

i'

c4='

n'

c5='

a'

%c%c%c%c%c\n"

c1+4,c2+4,c3+4,c4+4,c5+4);

2.设圆半径r,圆柱高h

求圆周长C1、圆面积Sa、圆球表面积Sb、圆球体积Va、圆柱体积Vb。

用scanf输入数据,输出计算结果,输出时要求文字说明,取小数点后两位数字。

请编程序。

PI=3.14

#definePI3.14

floatr,h,C1,Sa,Sb,Va,Vb;

%f%f"

r,&

h);

C1=2*PI*r;

Sa=PI*r*r;

Sb=4*PI*r*r;

Va=(4.0/3)*PI*r*r*r;

Vb=Sa*h;

C1=%.2f\nSa=%.2f\nSb=%.2f\nVa=%.2f\nVb=%.2f\n"

C1,Sa,Sb,Va,Vb);

3.输入一个华氏温度,要求输出摄氏温度。

公式为c=5(F-32)/9输出要求有文字说明,取位2小数。

floatc,F;

%f"

F);

c=5.0*(F-32)/9;

c=%.2f\n"

c);

实验三选择结构程序设计

1)了解C语言表示逻辑量的方法(以0代表“假”,以非0代表“真”)。

2)学会正确使用关系运算符、逻辑运算符和相关表达式。

3)熟练掌握if语句和switch语句。

4)结合程序掌握一些简单的的算法。

5)学习调试程序。

2.程序填空

请将下列源程序填写完整。

程序说明:

输入实数x,计算并输出下列分段函数f(x)的值,结果保留2位小数。

math.h>

intmain()

{doublex,y;

printf("

Inputx:

scanf(“%lf”,&

x);

if(x<

-1)y=x+1;

elseif(x<

1)y=exp(x);

elsey=sqrt(x*x+1);

f(%.2f)=%.2f\n"

x,y);

运行程序,输入-2,显示结果是:

-1

输入0.5,显示结果是:

1.65

输入3,显示结果是:

3.16

1.有一个函数

  /x   (x<

1)

y={ 2x-1 (1<

=x<

10)

  \3x-11 (x>

=10)

写一段程序,输入x,输出y

intx,y;

%d"

x);

if(x<

if(x<

1)y=x;

elsey=2*x-1;

elsey=3*x-11;

y);

2.给出一百分制成绩,要求输出成绩等级‘A’、‘B’、‘C’、‘D’、‘E’。

90分以上为A

80-89分为B

70-79分为C

60-69分为D

59分及以下为E

intt;

t);

if(90<

=t&

&

t<

=100)printf("

A\n"

elseif(80<

=89)printf("

B\n"

elseif(70<

=79)printf("

C\n"

elseif(60<

=69)printf("

D\n"

elseif(0<

=59)printf("

E\n"

3.给出一个不多于5位的非负整数,要求

1、求出它是几位数

2、分别输出每一位数字

3、按逆序输出各位数字,例如原数为321,应输出123

intn,a,b,c,d,e;

a=n%10,b=n/10%10,c=n/100%10,d=n/1000%10,e=n/10000%10;

if(n>

=0&

n<

=9)printf("

1\n%d\n%d\n"

a,a);

=10&

=99)printf("

2\n%d%d\n%d%d\n"

b,a,a,b);

=100&

=999)printf("

3\n%d%d%d\n%d%d%d\n"

c,b,a,a,b,c);

=1000&

=9999)printf("

4\n%d%d%d%d\n%d%d%d%d\n"

d,c,b,a,a,b,c,d);

=10000&

=99999)printf("

5\n%d%d%d%d%d\n%d%d%d%d%d\n"

e,d,c,b,a,a,b,c,d,e);

4.企业发放的奖金根据利润提成。

利润低于或等于100000元的,奖金可提10%;

利润高于100000元,低于200000元(100000<

I≤200000)时,低于100000元的部分按10%提成,高于100000元的部分,可提成7.5%;

200000<

I≤400000时,低于200000元部分仍按上述办法提成,(下同),高于200000元的部分按5%提成;

400000<

I≤600000元时,高于400000元的部分按3%提成;

600000<

I≤1000000时,高于600000元的部分按1.5%提成;

I>

1000000时,超过1000000元的部分按1%提成。

从键盘输入当月利润I,求应发奖金总数

inti,y;

i);

if(i<

=100000)y=i*1/10;

elseif(i<

=200000)y=10000+(i-100000)*75/1000;

=400000)y=10000+7500+(i-200000)*5/100;

=600000)y=27500+(i-400000)*3/100;

=1000000)y=33500+(i-600000)*15/1000;

elsey=39500+(i-1000000)*1/100;

实验四循环结构程序设计

1)熟悉掌握用while语句、do-while语句和for语句实现循环的方法。

2)掌握循环次数不确定的解题技巧,掌握多项式求和问题的解题技巧。

3)掌握多重循环的编程技巧。

4)掌握在程序设计中用穷举法、迭代法、递推法求解问题的编程技巧。

5)进一步学习调试程序。

输出菲波那契数列的前20项,要求每行输出10项。

{inti,x1,x2,x;

x1=x2=1;

%6d%6d"

x1,x2);

/*输出前2项*/

for(i=3;

i<

=20;

i++)

{x=x1+x2;

%6d"

x);

if(i%10==0)printf("

/*每行输出10项*/

x1=x2;

x2=x;

}

1.输入两个正整数m和n,求其最大公约数和最小公倍数。

intm,n,a,b,c;

%d%d"

m,&

for(a=n;

a--)

if(n%a==0&

m%a==0)break;

for(b=m;

b++)

if(b%n==0&

b%m==0)break;

printf("

%d%d\n"

a,b);

2.输入一行字符,分别统计出其中英文字母、数字、空格和其他字符的个数。

charc;

inta=0,b=0,d=0,e=0;

while((c=getchar())!

='

\n'

{

if(c>

c<

z'

||c>

A'

Z'

a++;

elseif(c=='

'

b++;

elseif(c>

0'

9'

d++;

elsee++;

%d%d%d%d"

a,d,b,e);

3.Sn=2+22+222+2222+22222+22...2222(最后一项n个2)

inta,b,c,d,s,n;

a=2;

b=1;

c=d=s=0;

while(b<

n)

c=c+a;

a=10*a;

d=a+c;

s=s+d;

b++;

s+2);

4.求Sn=1!

+2!

+3!

+4!

+5!

+…+n!

之值,其中n是一个数字。

inta,b,s,n;

a=b=1,s=0;

while(a<

b=b*(a+1);

s=s+b;

a++;

s+1);

实验五数组

1)掌握一维数组和二维数组的定义、赋值和输入输出的方法。

2)掌握字符数组和字符串函数的使用。

3)掌握与数组有关的算法(特别是排序算法)。

(一)程序填空:

输入一个整数n(1≤n≤10),再输入n个整数,将它们按升序排列后输出。

选择排序基本思想:

(1)由于n最大是10,需要定义一个长度为10的整型数组a;

(2)整个排序只需要确定前n-1个元素(a[0]~a[n-2]),最后一个元素a[n-1]无需另外处理;

(3)在确定a[i](i=0,1,…,n-2)时,先将a[i]本身看成最小,即令k=i,并将a[k]与后面的元素a[j](j=i+1,i+2,…,n-1)一一比较,如果a[j]<

a[k],则更新k的值:

k=j。

找出对应于下标i的最小元素a[k]后,交换a[i]与a[k]。

inti,j,k,n,temp,a[10];

Inputn(1~10):

while(scanf("

n),n<

=1||n>

=10);

//输入正确的n:

1≤n≤10

Input%dnumbers:

n);

for(i=0;

n;

i++)

scanf("

a[i]);

//输入n个整型元素

//选择法排序

n-1;

{

k=i;

//设a[i]为剩余部分的最小元素

for(j=i+1;

j<

n;

j++)

if(a[j]<

a[k])k=j;

//Line12

temp=a[i];

a[i]=a[k];

a[k]=temp;

//a[i]a[k]

%d"

a[i]);

//输出排序后的数组

【思考题】运行程序,输入n:

5,输入5个整数:

23-9140-3,显示结果是什么?

答:

Inputn(1~10):

5

Input5numbers:

23-9140-3

-9-301423

请按任意键继续...

如果是按从大到小的降序排列,语句行Line12应怎么修改?

应该为if(a[j]<

(修改上面的程序,从在线评测系统中提交调试好的程序,题号1032。

输入5个整数,将这5个数按逆时针顺序转动一次后再输出,如输入12345,逆时针转动一次后,输出23451。

提示:

设存放整数的数组为a。

要实现数组逆时针转动,只要先将首元素a[0]“搬”至一个变量t中;

然后从第1个元素到最后1个元素,依次向前移一位,即a[i-1]=a[i](i=1,…,4);

最后将存放在t中的首元素放入最后的元素。

inti,t,a[5];

Input5integers:

5;

&

a[i]);

t=a[0];

for(i=1;

5;

i++)

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

a[4]=t;

Afterrotation:

i<

i++)

%5d"

a[i]);

return0;

1.用筛法求之N内的素数。

{intn,N,k,i;

N);

for(n=2;

=N;

n=n+1)

{k=sqrt(n);

for(i=2;

=k;

i++)

if(n%i==0)break;

if(i>

=k+1)

n);

2.用选择法对10个整数从小到大排序。

inta[10];

inti,j,t;

10;

scanf("

for(j=0;

j<

9;

j++)

for(i=0;

9-j;

if(a[i]>

a[i+1])

{t=a[i];

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

a[i+1]=t;

for(i=0;

printf("

%d\n"

return0;

3.输入10个数字,然后逆序输出。

inta[10],i;

for(i=9;

i>

=0;

i--)

4.写一个判断素数的函数,在主函数输入一个正整数,输出是否是素数的消息。

{intn,i,k;

k=sqrt(n);

if(n==1)printf("

notprime\n"

else

{for(i=2;

=k+1)printf("

prime\n"

elseprintf("

实验六函数

1)掌握定义函数的方法。

2)掌握函数实参与形参的对应关系以及“值传递”的方式。

3)掌握函数的嵌套调用和递归调用的方法。

4)掌握全局变量和局部变量、动态变量和静态变量的概念和使用方法。

5)学习对多文件程序的编译和运行。

验证哥德巴赫猜想——任何一个大于6的偶数均可表示为两个素数之和。

6=3+3,8=3+5,10=5+5,…,18=7+11。

要求将6-100之间的偶数均表示为素数之和,一行输出5组。

intprime(intn);

intmain()

{inta,b,k;

for(k=6;

k<

=100;

k=k+2)//逐个处理6~100之间的偶数k

{for(a=2;

a<

k;

a++)//针对偶数k,寻找第一个素数加数项a

{b=k-a;

if(prime(a)&

prime(b))break;

//如果a,b同为素数,跳出内层循环

}//内层循环

printf("

%d=%d+%d"

k,a,b);

//输出k=a+b

if(k%5==0)printf("

//每行输出5组,注意第一行只有3组

}//外层循环

//自定义函数prime(n),判断整数n是否是素数,是则返回1,不是则返回0

intprime(intn)

{inti;

for(i=2;

i<

=n;

if(n%i==0)break;

if(i==n)return1;

//n是素数,返回1

elsereturn0;

//n不是素数,返回0

1.写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果两个整数由键盘输入。

intgcd(intx,inty);

intlcm(intx,inty);

inta,b;

b);

gcd(a,b),lcm(a,b));

intgcd(intx,inty)

if(y>

x){t=x;

x=y;

y=t;

while(t)

t=x%y;

x=y;

y=t;

returnx;

intlcm(intx,inty)

returnx*

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

当前位置:首页 > 解决方案 > 学习计划

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

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