1. main()
, *p=&a[3], *q=p+2
printf("%d\n", *p + *q)
}
执行结果是 10 。
2. 下面程序段的执行结果是( 9.5 )。
#define PT 5.5
#define S(x) PT*x*x
main( )
{ int a=1,b=2
printf(“%4.1f\n”,S(a+b))
}
3. main()
{ int a=0,i
for(i=0i<5i++)
{ switch(i)
{ case 0:
case 3:a+=2
case 1:
case 2:a+=3
default:a+=5
}
printf("%d\n",a)
}
执行结果是 41 。
4. main( )
printf(“%d\n”,strlen(p[4]))
}
执行结果是 2 。
5. main()
{ int i=0,x=0
for ()
{ if(i==3||i==5) continue
if (i==6) break
i++s+=i
}
printf("%d\n",s) }
执行结果是 8。
6. main()
{ char a='a',b
printf("%c,",++a)
printf("%c\n",b=a++)
}
程序运行后的输出结果是b , b
7. int f()
{ static int i=0
Int s=1
s+=i
i++
return s
}
main()
{ int i,a=0
for(i=0i<5i++) a+=f()
printf("%d\n",a)
}
程序运行后的输出结果是 15
8. int d=1l
fun (int p)
{ int d=5
d+=p++
printf("%d,",d)}
main()
{int a=3
fun(a)
d+=a++
printf("%d\n",d)}
输出结果为:___8, 4_
9. main()
{int x=3,y=6,a=0
while(x++!=(y-=1))
{a+=1
if(y<x) break
}
printf(“x=%d,y=%d,a=%d\n”,x,y,a)}
输出结果为:___5, 4, 1 _____
10. int fun(int x,int y,int *cp,int *dp)
main()
{int a, b, c, d
a=30 b=50
fun(a,b,&c,&d)
printf("%d,%d\n", c, d)
}
输出结果是_80, -20_____。
二、完善程序
1、以下函数的功能是计算s=1+1/2!+1/3!+……+1/n!,请填空。
double fun(int n)
{double s=0.0,fac
int i
fac=1.0
for(i=1i<=ni++)
{fac= fac*i
s=s+1/fac
}
return s
}
2、顺序输出50——100之间的素数。
#include”stdio.h”
#include”math.h”
main()
{int j=0,n,k,i,flag
for( n=51n<100n=n+2)
{k=sqrt((double)n)i=2flag=0
while( i<=k )&&(flag==0))
{if(n%i==0)flag=1
i=i+1}
if ( flag==0 )
}
}
3 以下程序从终端读入数据到数组中,统计其中正数的个数,并计算它们之和。
请填空。
main()
{ int i,a[20],sum,count
__ int sum=0,count=o___
for(i=0i<20i++) scanf("%d", _&a[i]_ ___ )
for(i=0i<20i++)
{ if(a>0)
{ count++
sum+= _a[i] ____
}
}
printf("sum=%d,count=%d\n",sum,count)
}
4. 以下isprime函数的功能是判断形参a是否为素数,是素数,函数返回1,否则返回0,请填空
int isprime(int a)
{ int i
for(i=2i<=a/2i++)
if(a%i==0) _return 0_ ___
_return 1 ___
}
5通过函数求f(x)的累加和,其中f(x)=x2+1
main()
{
printf("The sum=%d\n",SunFun(10))
}
SunFun(int n)
{
int x,s=0
for(x=0x<=nx++) s+=F(__x______)
return s
}
F( int x)
6. 以下程序的功能是:输出100以内(不含100)能被3整除且个位数为6的所有整数,请填空。
main()
{ int i,j
for(i=0__i<=9__i++)
{ j=i*10+6
if(_j%3!=0____) continue
printf(“%d ”,j)
}
}
7.下面的程序是对一维数组的10个元素中的前5个元素与后5个元素对换,即a(0) 与a(9)互换,a(1)与a(8)互换,…, 填空将程序补充完整。
#include "stdio.h"
void main()
{ int a[10], i,t
printf("Input the data:\n")
for(i=0i<10i++)
scanf("%d",&a[i])
for(i=0_____i<=4____i++)
for(i=0i<10i++)
printf("%6d",a[i])
}
三、编程题
1. 编程实现从键盘上输入10个整数,排序(从小到大)后输出。
#include<stdio.h>
void main()
{
int a[11]
int i,j,temp
printf("please in put ten numbers:\n")
for(i=0i<10i++)
scanf("%d",&a[i])
for(i=0i<10i++)
for(j=0j<9-ij++)
if(a[j]>a[j+1])
{
temp=a[j]
a[j]=a[j+1]
a[j+1]=temp
}
printf("结果是:\n")
for(i=0i<10i++)
printf("%3d",a[i])
printf("\n")
}
2. 编制一个C程序,求 (即求1+1/2!+1/3!+…+1/20!)
#include<stdio.h>
void main()
{
int n,i,j
float sum=0,l=1.0
scanf("%d",&n)
for( i=1i<=20i++)
{
l=1.0
for( j=1j<=ij++)
{
l=l*j
}
sum+=1.0/l
}
printf("%f",sum)
}
3. 编写函数判断数n是否是素数,在主函数中调用该函数输出200到300之间的所有素数.
(1)。#include<stdio.h>
#include<math.h>
int isprime(int n)
{
int w,k,i
k=sqrt(n),w=1
for(i=2i<sqrt(n)&&w==1i++)
if(n%i==0) w=0
return w
}
void main()
{
int n,i
for(n=200,i=0n<=300n++)
{
if(isprime(n))
{
printf("%4d",n)
i++
if(i%10==0)
printf("\n")
}
}
}
(2)#include<stdio.h>
#include<math.h>
int prime(int n)
{
int m,i=2,t
t=(int)sqrt(n)
for(i<=ti++)
if(n%i==0)/
{
m=0
break
}
if(i>t)
m=1
else continue
return m
}
void main()
{
int n
int i
printf("请输入你要判断的数!\n")
scanf("%d",&n)
if(prime(n))
printf("是素数!\n")
else
printf("不是素数!\n")
printf("输出200-300之间的素数:\n")
for(i=200i<=300i++)
{
if(prime(i))/*利用已经写好的函数判断i是否是素数!如果函数返回1证明是素数则输出!否则(即运行到else)continue;*/
printf("%-4d",i)
else continue
}
printf("\n")
}
4. 从键盘输入两个正整数,求其最大公约数并输出结果。(要求主函数实现数据输入、输出以及调用;另外再写一个函数求最大公约数,并用主函数调用)。
#include<stdio.h>
int f(int a,int b)
{
int y
y=a%b
return(y)
}
int g(int num1,int num2)
{
int h,a
h=num1*num2/a
return(h)
}
void main()
{
int num1,num2,a,b,temp
printf("please input two number:\n")
scanf("%d%d",&num1,&num2)
if(num1>num2)
{
temp=num1num1=num2num2=temp
}
a=num1b=num2
while(b!=0)
printf("最大公约数:%d\n",a)
printf("最小公倍数:%d\n",g(num1,num2))
}
你在哪个考场,祝你明天好运!
××大学计算机工程学院实验报告课程名称:数据结构 班级:xxxx 实验成绩:
指导老师:××× 姓名:xxx
实验项目名称:复数四则运算 学号:2005810112 上机实践日期:
实验项目编号:实验一组号: 上机实践时间:学时
一. 目的(本次试验所涉及并要求掌握的知识点)
熟悉抽象数据类型的表示和实现方法。抽象数据类型需借助固有数据类型来表示和实现,及利用高级程序设计语言中已存在的数据类型来说明新的结构,用已经实现的操作来组合新的操作,具体实现细节则依赖于所用的语言的功能。通过本次实习还可以帮助读者复习高级语言的使用方法。
二.实验内容与设计思想(设计思路 主要数据结构 主要代码结构。主要代码段分析 电路图)
1.问题描述
设计一个可进行复数运算的演示程序
2.基本要求
实现下列六种基本运算:1)由输入的实部和虚部生成一个复数;2)两个复数求和;3)两个复数求差;4)两个复数的求积;5)从已知复数中分离出实部;6)从已知复数中分离出虚部。运算结果以相应的复数或实数的表示形式显示。
3.程序代码
#include
typedef struct Complex
{
float shi
float xu
}Complex
void CreatComplex(Complex &c,float a,float b)
{
c.shi=a
c.xu=b
}
void AddComplex(Complex &sum,Complex c1,Complex c2)
{
sum.shi=c1.shi+c2.shi
sum.xu=c1.xu+c2.xu
}
void ChaComplex(Complex &cha,Complex c1,Complex c2)
{
cha.shi=c1.shi-c2.shi
cha.xu=c1.xu-c2.xu
}
void JiComplex(Complex &ji,Complex c1,Complex c2)
{
ji.shi=c1.shi*c2.shi-c1.xu*c2.xu
ji.xu=c1.shi*c2.xu+c1.xu*c2.shi
}
void Print(Complex c)
{
if(c.shi==0.0)
printf("%5.2f\n",c.shi)
else
printf("%5.2f+i%5.2f\n",c.shi,c.xu)
if(c.xu==0.0)
printf("%i5.2f\n",c.xu)
}
void Print_shi(Complex c)
{
printf("该复数的实部是:%5.2f\n",c.shi)
}
void Print_xu(Complex c)
{
printf("该复数的虚部是:i%5.2f\n",c.xu)
}
void main()
{
float a,b,c,d
int i,j
Complex c1,c2,sum,cha,ji
printf("请分别输入两个复数的实部和虚部:\n")
scanf("%f%f%f%f",&a,&b,&c,&d)
CreatComplex(c1,a,b)
Print(c1)
Print_shi(c1)
Print_xu(c1)
CreatComplex(c2,c,d)
Print(c2)
Print_shi(c2)
Print_xu(c2)
printf("1.求和,\t2.求差,\t3.求积\t,4.退出\n")
for(j=0j++)
{
scanf("%d",&i)
switch(i)
{
case 1:
AddComplex(sum,c1,c2)
Print(sum)
Print_shi(sum)
Print_xu(sum)
break
case 2:
ChaComplex(cha,c1,c2)
Print(cha)
Print_shi(cha)
Print_xu(cha)
break
case 3:
JiComplex(ji,c1,c2)
Print(ji)
Print_shi(ji)
Print_xu(ji)
break
case 4:
return
}
}
}
三.实验使用环境(本实验所使用的平台和相关的软件)
Microsoft Visual C++ 6.0
四. 实验步骤和调试过程(实验步骤 测试数据设计 测试结果分析)
1.测试数据设计
测试数据: 1)0,0;0,0
2)3.1,0;4.22,8.9
3)-1.33,2.34;0.1,-6.5
4)0,9.7;-2.1,-9.7
5)7.7,-8;-7.7,0
测试结果: 1)0
2)7.32+i8.9
3)-1.23-i4.16
4)-2.1
5)-i8
2测试结果:
图略
五. 实验小结(实验过程中遇到的问题及解决过程.实验体会和收获)
1. 通过学习以前C语言课程中的函数思想,可以重新熟悉函数在编程中的设置方法,熟悉函数中参数的设置和传递过程.
2. 通过多个函数出现在同一个程序中的实现,便于熟悉全局变量和局部变量在程序中的不同作用域的问题.
六.附录(参考文献和相关资料)
[1]严蔚敏,吴伟民编著:《数据结构(C语言版)》,北京:清华大学出版社,1997
[2]严蔚敏,吴伟民,米宁编著:《数据结构题集(C语言版)》,北京:清华大学出版社
小组交流】 小组1:A试管始终有气泡产生(期间仅3分钟),是二氧化碳气体B试管没气泡产生。C试管迅速产生气泡,又迅速停止。 是二氧化碳气体D试管迅速产生气泡,又迅速停止。 是二氧化碳气体制二氧化碳气体应选石灰石和稀盐酸。小组2:B试管开始有少量气泡产生后停止产生气泡。是二氧化碳气体制二氧化碳气体应选石灰石和稀盐酸。【教师归纳】各组观察实验都非常细致。制二氧化碳气体应选石灰石和稀盐酸。【教师板书】CaCO3+2HCl = CaCl2+H2O+CO2↑CaCO3+H2SO4 = CaSO4↓+H2O+CO2↑Na2CO3+2HCl = 2NaCl+H2O+CO2↑Na2CO3+H2SO4 = Na2SO4+H2O+CO2↑【教师讲解】硫酸钙微溶于水,阻碍反应进行。碳酸钠与稀盐酸、稀硫酸反应生成二氧化碳的速率太快,难收集气体,碳酸钙与稀盐酸生成二氧化碳的速率适中,因此实验室选择它们做为制取二氧化碳气体的药品。【点评】用教材教,而不是教教材,巧妙地设计创新实验,提高学生学习兴趣,完整分析制取二氧化碳选择药品的课题。这是本节精华之处。【创设问题】二氧化碳密度比空气大,又溶于水。请选择制二氧化碳的发生装置和收集装置。【师生交流】讨论中选择制取二氧化碳气体的发生装置和收集装置。【点评】处理上好似过渡,又有点明下面实验关键作用。【小组实验】自己动手制一瓶二氧化碳,且注意验满。(其中5、6组无火柴,但有澄清石灰水和玻璃棒)【师生交流】各小组验满的方法:小组2:将燃烧的火柴放在瓶口上方。燃烧的火柴熄灭证明二氧化碳已满。小组6:将有玻璃棒澄清石灰水在瓶口上方。澄清石灰水变浑浊二氧化碳已满。【点评】实验方案不是唯一的,要从实际出发,启迪发散思维。【教师讲解】同学们所用方法都正确,这是二氧化碳的性质,下面我们加以分析。【教师板书】CO2物理性质:【多媒体展示】液态CO2灭火;固态CO2是干冰,能人工降雨;〖故事〗死狗洞。学生填表气体H2O2CH4CO2空气相对分子质量29与空气密度比较 (向上、向下)排空气法 【教师归纳】理论上证明二氧化碳比空气密度大,下面用实验加以验证。【学生实验】二氧化碳密度比空气大可用下面二个方案加以验证CO2A:将收集满二氧化碳的集气瓶倾倒入已平衡的天平的烧杯中,观察是否平衡。【学生小组实验】现象不明显,但有时发现天平稍微向倾入二氧化碳的一端倾斜。【教师讲解】室温下每22.4升CO2质量为44克,每22.4升空气质量为29克。我们用的烧杯体积为20毫升,倒入CO2前后质量相差不大。而托盘天平能称准到0.1克。若操作中有CO2损失,现象就不明显。要求做实验细心认真科学严谨。CO2B:在烧杯中放两支高低不同燃烧的蜡烛。将收集满二氧化碳的集气瓶倾倒入烧杯,观察现象。学生小组1、2、5、6:蜡烛从低到高依次熄灭,说明二氧化碳密度比空气大,既不燃烧又不支持燃烧,有灭火作用。学生小组3:蜡烛都不熄灭。学生小组4:高处蜡烛先熄灭。低处蜡烛后熄灭。 【教师讲解】 学生小组3做出蜡烛都不熄灭的现象可能是在倾倒过程中蜡烛燃烧形成的热气流阻止二氧化碳的倒入烧杯。学生小组4做出高处蜡烛先熄灭,低处蜡烛后熄灭。可能是二氧化碳倒入过程中,二氧化碳恰好倒入到高处蜡烛的火焰上,因此出现高处蜡烛先熄灭。CO2为了防止小组3、4现象不明显,应对此实验做进一步的改进使二氧化碳顺利地倒入烧杯底部。可增加一种仪器―――漏斗。如图所示。【教师讲解】漏斗能使二氧化碳倒入到烧杯底部且避免倒入蜡烛的火焰上。【点评】教师能改进实验,使实验效果明显清晰。根据实际从出发,分析实验的成功和失败。从而培养学生严谨认真的科学态度。【教师板书】二氧化碳化学性质CO2CO2干燥石蕊试纸CO2湿润石蕊试纸石蕊试液【教师讲解】二氧化碳溶于水,可制做汽水。这一点同学们都知道。下面我们用实验加以验证二氧化碳溶于水。【创新实验】分别将二氧化碳通入三支试管中,A试管中放入干燥的蓝色石蕊试纸。B试管中放入湿润的蓝色石蕊试纸。C试管中放入蓝色石蕊试液。观察现象。 现象:A干燥的蓝色石蕊试纸不变色,仍为蓝色。B湿润的蓝色石蕊试纸变红色。C蓝色石蕊试液变红色。【教师讲解】二氧化碳不能使石蕊变红色。但二氧化碳溶于水后生成碳酸碳酸能使石蕊变红色。CO2 + H2O = H2CO3 H2CO3受热易分解生成水和二氧化碳气体。请同学们给变红色的液体加热,观察现象。【教师讲解】加热后液体又变为蓝色。原因是 H2CO3 CO2↑+ H2O【点评】本实验分析是二氧化碳还是碳酸使石蕊试液变红色的难点问题。设计实验简单新颖。【创设问题】二氧化碳能使澄清石灰水变浑浊也是同学们都知道的,下面请同学们自己选择实验,请先说明原理后做实验加以验证。【学生分析】A组:向涂有澄清石灰水的玻璃片上吹气,观察现象。因为呼出的气体中含有CO2B组:向有澄清石灰水的试管中通入CO2,观察现象。C组:向充满CO2的饮料瓶中加入澄清石灰水,迅速拧紧瓶塞,振荡,观察现象。D组:将充满CO2的试管倒扣在盛有澄清石灰水的烧杯中,观察现象。(教师与学生交流后,学生开始实验)。【教师板书】教师板书:Ca(OH)2 + CO2 = CaCO3↓ + H2O【教师讲解】A组、B组澄清石灰水都变浑浊,C组澄清石灰水变浑浊且饮料瓶变瘪。D组试管中气体体积减少,且试管内澄清石灰水变浑浊。【点评】学生熟知的内容,老师不要讲,而是启发学生如何去用,形成自己的特色。开发自己的发明创造。学生交流时又使每个学生大开眼阶,别有洞天。【多媒体课件】多媒体展示巩固练习:1、加热固体碳酸氢钠生成碳酸钠固体、水和CO22NaHCO3 Na2CO3 + CO2↑+ H2O 请选择下列仪器制取CO2 2、长期盛澄清石灰水的试剂瓶壁上有一层白色物质,它是如何生成的?如何选择合适的药品除去?【点评】两个习题真是画龙点晴,考察本节重点、难点的掌握情况。【创新作业】1、 利用家庭厨房中的食盐、纯碱、白醋和酱油,制一饮料瓶二氧化碳。【点评】从生活实际出发,说明化学就在我们身边,生活中处处都有化学,让学生感到学有所得,激发学习化学的浓厚兴趣 。2、二氧化碳比空气密度大,理论上有①收集满的二氧化碳气球下沉。②两端有纸筒的杠杆已平衡,将收集满的二氧化碳倾入其中一纸筒,杠杆不再平衡。③将收集满的二氧化碳倾入有高低不同的蜡烛的烧杯中,低处蜡烛先熄灭。请你用实验证实其中可行的实验。【点评】理论与事实存在一定的距离,引导学生综合运用所学知识,解决实际问题。加深对知识理解和掌握,培养学生分析问题和解决问题的能力。第一种方法证明二氧化碳比空气密度大,理由不足,因为气球本身也有质量。充满空气的气球也是下沉的。第二种方法,第三种方法现象较明显。3、烧水的水壶水垢是怎样形成的,主要成份是什么?如何除水垢?可利用物理方法和化学方法。【点评】从课本获得知识解决生活中实际问题,物理方法和化学方法比较形成学科渗透,培养学生综合处理问题能力。家庭中常用热胀冷缩知识除去水垢,学生可能选择用稀盐酸,实际上用稀盐酸不科学,而用食醋除去水垢。【综评】本节课教师已融入到学生探究活动中,重视“过程教学”,这正是课程改革的精髓。FLASH课件制作精美,动画逼真,体现教师深厚编程功底。实验改进新颖高效,媒体运用得当。理论与实验相结合。