当前位置:文档之家› c语言实验八

c语言实验八

c语言实验八
c语言实验八

常熟理工学院

《C语言程序设计》实验指导与报告书

______学年第____ 学期

专业: ___________________________________________ 学号: ___________________________________________ 姓名: ___________________________________________ 实验地点:___________________________________________ 指导教师:___________________________________________

计算机科学与工程学院

2014

实验10 指针程序设计(1)

10.1 实验目的

1.理解指针的概念,掌握指针变量的定义、初始化与使用方法。

2.掌握通过指针访问一维数组的编程方法。

3.掌握指针变量作为函数的形参时,参数传递的方法及特点。

4.掌握指针指向字符串的程序设计方法。

10.2 示例程序

【实验10.1】在以下程序中,主函数main()调用了3个函数swap1()、swap2()和swap3(),还定义了变量a和b,程序设计的目的是要求通过函数调用,交换main()中变量a和b的值。请分析在swap1()、swap2()和swap3()这3个函数中,哪个函数可以实现这样的功能。

程序代码:

# include

/* swap1的形参为变量x,y,函数的功能为交换变量的值*/

void swap1 (int x, int y)

{ int t;

t= x;

x = y;

y = t;

}

/* swap2的形参为指针变量px,py,函数的功能为交换指针所指向的变量的值*/

void swap2 (int *px, int *py)

{ int t;

t = *px;

*px = *py;

*py = t;

}

/* swap3的形参为指针变量px,py,函数的功能为交换指针所指向的变量*/

void swap3 (int *px, int *py)

{ int *pt;

pt =px;

px = py;

py = pt;

}

int main (void)

{ int a = 1, b = 2;

int *pa = &a, *pb = &b;

swap1 (a, b); /* 使用变量a,b调用函数swap1() */

printf ("After calling swap1: a=%d b=%d\n", a, b);

a = 1;

b = 2;

swap2(pa, pb); /* 使用指针pa,pb调用函数swap2() */

printf ("After calling swap2: a=%d b=%d\n", a, b);

a = 1;

b = 2;

swap3(pa, pb); /* 使用指针pa,pb调用swap3() */

printf ("After calling swap3: a=%d b=%d\n", a, b);

return 0;

}

说明:

1.运行该程序,分析运行结果。

2.函数swap1使用的是变量调用,也就是值调用,参数的传递是从实参变量到形参变量的单方向值的传递,形参值的改变不会影响到实参值的改变。调用结束变量a、b的值不会改变。

3.函数swap2使用的形参是指针变量,形实结合时,指针pa指向a,pb指向b,即指针pa与变量a指向同一单元,指针pb与变量b指向同一单元。当函数中交换了两个指针变量pa与pb所指向变量的值时,实参a与b的值同时改变。

4.函数swap3使用的形参也是指针变量,形实结合与swap2相同,所不同的是,函数中交换的是两个指针变量pa与pb的指向,即指针变量pa指向变量b,指针变量pb指向变量a,而实参变量a与b的值没有改变。

【实验10.2】本实验给出通过指针引用数组元素的各种方法。

方法一:通过下标引用数组元素

#include

int main()

{ int i,a[10];

printf("Please enter 10 integer numbers:");

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

scanf("%d",&a[i]); /* 通过下标引用数组元素*/

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

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

printf("\n");

return 0;

}

方法二:通过数组名引用数组元素

#include

#include /* 引入头文件*/

int main()

{ int i, a[10];

srand(time(0)); /* 改变随机数发生器的种子*/

printf("The passing random numbers endows with a value for several:\n");

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

*(a+i)=rand()%90+10; /* 随机生成2位的数字赋给数组元素*/ for(i=0; i<10; i++)

printf("a[%d]=%d\n",i,*(a+i));

printf("\n");

return 0;

}

方法三:通过指针代替数组名引用数组元素

#include

int main()

{ int i,a[10],*p;

p=a;

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

p[i]=i; /* 变量i的值赋给数组元素*/

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

printf("a[%d]=%d\n",i,p[i]);

printf("\n");

return 0;

}

方法四:通过指针变量引用数组元素

#include

int main()

{ int i,a[10],*p;

p=a;

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

*(p+i)=i;

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

printf("a[%d]=%d\n",i,*(p+i));

printf("\n");

return 0;

}

说明:

1.以上4个例子说明,使用指针指向数组以后,可以灵活、方便地对数组元素进行处理。事实上系统就是将数组转换为指针进行处理的。

2.如果有一个数组a,则a[i]和*(a+i)无条件等价;若有指针p指向a,则p[i]和*(p+i)也是无条件等价的,并且都可以对数组a的元素进行处理。要熟记访问数组元素的几种等价形式。

10.3 阅读程序

【实验10.3】以下程序通过指针变量p指向数组a的不同位置时,输出当前指针所指的元素。要求在注释中写出输出结果及含义。

程序代码:

#include

int main()

{ int i, a[5]={10,11,12,13,14},*p=a;

p++;

printf("%d\n",*p); /* */

p=a;

printf("%d\n",*p++); /* */

p=a;

printf("%d\n",*(p++)); /* */

p=a;

printf("%d\n",*(++p)); /* */

p=a+2;

printf("%d\n",*(p--)); /* */

p=&a[2];

printf("%d\n",*(--p)); /* */

p=a;

printf("%d\n",++(*p)); /* */

return 0;

}

10.4 完善程序

【实验10.4】下面程序的功能是:调用merge函数,实现将指针s所指的字符串的反序和正序连接后形成一个新的字符串并存放在原处。如字符串为“1234”,执行函数后,字符串为“12344321”。请完善程序。

程序代码:

#include

#include

int main()

{ char str[100];

________; /* 声明要调用的函数*/

printf("Please enter a string:");

gets(str);

________; /* 调用函数*/

printf("Inverted and connecting after:");

puts(str);

return 0;

}

void merge(char *s)

{ char *p,*q,n;

n= ________; /* n为指针s指向的串的长度*/

for(p=s+n-1,q=s+n;p>=s;p--,q++)

*q=*p; /* 反序存放*/

*q='\0';

}

说明:

1.函数的形参为字符指针,调用时指针s指向字符串首地址。

2.函数中定义了指针p和q,循环开始时指针p指向串的最后一个字符,指针q指向最后一个字符后的地址,每循环一次,反序取出串的字符并依次存放到新的位置,直到处理

完所有字符。最后在新字符串的尾部放入字符串结束符'\0'。

10.5 改错程序

【实验10.5】本程序的功能是:使用指针输出数组a的10个元素。请改正程序中的错误,并调试。

注意:改错时不允许增加及删除语句,只允许修改或移动语句的位置。

【含有错误的程序代码】

#include

int main()

{ int i,a[10],*p=a;

printf("Please enter 10 integer numbers:");

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

scanf("%d",p++);

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

printf("%3d",*p);

printf("\n");

return 0;

}

【实验10.6】本程序的功能是:对a数组中的元素进行降序排列,存放到b数组中,要求不能改变a数组中元素的值。算法如下:

(1)每次循环,从a数组中找到一个最大值,并存放到b数组中。

(2)c数组中各元素的值为a数组中同下标元素是否存入b数组的标记,初始值为0。

(3)每次循环,将与已存入b数组的最大值对应的c数组元素赋值为1,下次不参加比较。

注意:改错时不允许增加及删除语句,只允许修改或移动语句的位置。

【含有错误的程序代码】

#include

int main()

{ int i,n,m,a[10]={12,5,13,25,21,46,34,37,19,2},b[10],c[10]={0};

printf("Before sorting:\n");

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

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

printf("\n");

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

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

if(*(c+i)==0)

break;

m=i;

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

if(*(c+i)==0||*(a+m)<*(a+i))

m=i;

*(b+m)=*(a+n);

*(c+m)=1;

}

printf("After sorting:\n");

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

printf("%4d",*(b+i));

printf("\n");

return 0;

}

10.6 自己练习

1.编写程序,对输入的一行小写字母进行加密处理。加密方法为:每一字母用其ASCII 码加1的字母替换,字母z用a替换。要求替换过程用函数过程实现,函数的头部为void encrypt(char *s)。

2.编写程序将整型数组a的元素按相反顺序存放。要求按相反顺序存放用函数过程实现,函数的头部为void invert(int *x,int n)。

C语言程序设计实验8

一、实验目的 1、掌握定义函数的方法; 2、掌握函数实参与形参的对应关系以及“值传递”的方式; 3、掌握函数的嵌套调用和递归调用的方法; 4、掌握全局变量、局部变量、动态变量、静态变量的概念和使用方法; 5、了解数组元素、数组名作函数参数。 二、实验内容(程序清单及运行结果) 1.上机调试下面的程序,记录系统给出的出错信息,并指出出错原因。 void main() { int x,y; printf("%d\n",sum(x+y)); int sum(a,b); { int a,b; return(a+b); } } 错误原因:没有输入x,y的值,没有定义函数a b. 更改: #include void main() { int x,y; scanf("%d%d",&x,&y); printf("%d\n",sum(x,y)); } int sum(int a,int b)

{ return (a+b); } 2.已有变量定义和函数语句“int a=1,b=-5,c;c=fun(a,b);”,fun函数的作用是计算两个数之差的绝对值,并将差值返回给调用函数,请编写fun函数,并调试。 fun (int x,int y) { } #include int fun(int x ,int y) { int tmp; tmp=x-y; if(tmp>=0) return tmp; else return -tmp; } void main() { int a=1,b=-5; printf("%d与%d差的绝对值为:%d\n",a,b,fun(a,b)); }

西南交大c实验报告

实验__8__实验报告 教学班级:_26_ 学生学号:_201_ 学生姓名:_ _ 实验日期:__5.26___ 实验地点:_________(机房) 指导教师签名:__________ 实验成绩:___________ 一、实验目的 1.掌握对数值型一维数组的使用方法; 2.掌握对数组的插入、删除、修改、排序和查找等常用算法。 二、实验任务 1. 设有一批学生的程序设计课程的考试成绩(学生人数最多为N=100人,数据如下: (提示:可以建立三个一维数组来存放学生的数据,其中:学号为一个long类型的数组studentID,姓名为一个string类型的数组name,成绩为一个int类型的数组grade)(1)由键盘获取学生人数n,要求学生人数n的取值范围11到N-2; (2)由键盘获取学生的相关数据; (3)用选择排序法将学生的数据按学号进行升序排列并输出排序后的学生数据; 2. 在任务1的基础上,在学生数据中,完成以下任务: (1)键盘输入一个学生的学号,用折半查找法查找是否有该学生,若有该学生则输出该学生的所有信息,按如下格式输出: 学号程序设计成绩 2015112324 张思德72 若没有该学生,则输出“查无此人”的信息。 (2)插入一个新学生的数据,要求插入后学生的数据任按学号升序排列。 ⒊在任务1的基础上,在学生数据中,完成以下任务: ⑴用选择排序法将学生数据按学生程序设计课程成绩降序排列。 ⑵键盘输入一个学生的学号和程序设计课程的新成绩,在学生数据中查找是否有该学生,若有该学生则用键盘输入的新成绩替换该学生的原成绩,否则输出“查无此人”的信息。 三、实验结果(源程序+ 注释)

c语言实验报告 ()

丽水学院计算机实验报告

丽水学院计算机实验报告 一、实验目的 1.熟悉Visual C++和C-Free等集成环境,掌握运行一个C程序的基本步骤,包括编辑、编译、连接和运行。 2.掌握算术表达式和赋值表达式的使用。 3.掌握基本输入、输出函数的使用。 4.能够编程实现简单的数据处理。 二、实验环境 硬件:Pentium以上的计算机。 软件:Windows XP操作系统、Visual C++和C-Free等集成环境。 三、实验内容和结果 1.编程题1 在屏幕上显示一个短句“What is a computer?” 思考: (1)如何在屏幕上显示你自己的学号,姓名和班级? (2)如何在屏幕上显示数字、英文字母和汉字等信息?例如:“你在机房吗?” 编程题1源程序: #include<> void main() { printf("What is a computer?\n");

} 程序运行结果: What is a computer? 思考题(1): #include<> void main() { printf(",小王,班级\n"); } 思考题(2): #include<> void main() { printf("英文字母abcdefgABCDEFG\n"); printf("汉字:哇哈哈啊哈和\n"); } 2.编程题2 在屏幕上显示下列图形。 * * * * * * * * * *

思考:如何在屏幕上显示下列图形? A A A A 编程题2源程序: #include<> void main() { int i,j; for(j=1;j<5;j++) { for(i=5;i>j;i--) printf("*"); printf("\n"); } } 程序运行结果: * * * * * * * * * * 思考题:

C语言实验

C语言上机指导指导教师:李辉李晓丽 东北电力大学 电气工程学院 2006年3月

实验2数据类型、运算符和表达式 1.实验目的 掌握C语言数据类型,熟悉如何定义一个整形、字符型和实型的变量,以及对他们赋值的方法。 掌握不同的类型数据之间赋值的规律。 学会使用C的有关算术运算符,以及包含这些运算符的表达式,特别是自加(++)和自减(--)运算符的使用。 进一步熟悉C程序的编辑、编译、连接和运行的过程。 2.实验内容和步骤 (2).在此基础上增加一个语句: printf(“%d%d\n”,c1,c2); 再运行,并分析结果。 (3).再将第2行改为: int c1,c2; 再使之运行,并观察结果。 (4).再将第3、4行改为: c1 = a; /* 不用单撇号*/ c2 = b; 再使之运行,分析其运行结果。

(5).再将第3、4行改为: c1 = ”a”; /* 用双撇号*/ c2 = ”b”; 再使之运行,分析其运行结果。 (6).再将第3、4行改为: c1 = 300; /* 用大于255的整数*/ c2 = 400; 再使之运行,分析其运行结果。 输入并运行教材第3章习题3.6给出的程序 (1).将一个负整数赋给一个无符号的变量,会得到什麽结果。画出它们在内存中的表示形式。 (2).将一个大于32765的长整数赋给整形变量,会得到什麽结果。画出它们在内存中的表示形式。 (3).将一个长整数赋给无符号的变量,会得到什麽结果(分别考虑该长整数的值大于或等于65535 以及小于65535 的情况)。画出它们在内存中的表示形式。 同学们可以改变程序中各变量的值,以便比较。例如:a = 65580, b = -40000, e = 65535, f = 65580。 输入习题3.10

C语言实验报告参考答案(原)

C语言实验报告参考答案 实验一熟悉C语言程序开发环境及数据描述 四、程序清单 1.编写程序实现在屏幕上显示以下结果: The dress is long The shoes are big The trousers are black 答案: #include<> main() { p rintf("The dress is long\n"); p rintf("The shoes are big\n"); p rintf("The trousers are black\n"); } 2.编写程序: (1) a=150,b=20,c=45,编写求a/b、a/c(商)和a%b、a%c(余数)的程序。 (2)a=160,b=46,c=18,d=170, 编写求(a+b)/(b-c)*(c-d)的程序。 答案: (1) #include<> main() { i nt a,b,c,x,y; a=150; b=20; c=45; x=a/b; y=a/c; p rintf("a/b的商=%d\n",x); p rintf("a/c的商=%d\n",y); x=a%b; y=a%c; p rintf("a/b的余数=%d\n",x); p rintf("a/c的余数=%d\n",y); }

(2) #include<> main() { i nt a,b,c,d; f loat x; a=160; b=46; c=18; d=170; x=(a+b)/(b-c)*(c-d); p rintf("(a+b)/(b-c)*(c-d)=%f\n",x); } 3. 设变量a的值为0,b的值为-10,编写程序:当a>b时,将b赋给c;当a<=b时,将0赋给c。(提示:用条件运算符) 答案: #include<> main() { i nt a,b,c; a=0; b=-10; c= (a>b) b:a; p rintf("c = %d\n",c); } 五、调试和测试结果 1.编译、连接无错,运行后屏幕上显示以下结果: The dress is long The shoes are big The trousers are black 2、(1) 编译、连接无错,运行后屏幕上显示以下结果: a/b的商=7 a/c的商=3

c语言上机实验实验八

实验八 (2018-12-12~2018-12-17) 一、实验名称: 结构体 二、实验目的: (1)掌握结构体类型的定义和使用; (2)掌握结构体类型变量的概念和使用; (3)掌握链表的概念,初步学会对链表进行操作; (4)进一步熟悉Visual C++6.0开发环境下调试程序的基本步骤。 三、实验项目(必做题) 本次实验要求同学们事先在纸介质上编好解决下面问题的源程序,然后才允许进实验室上机调试。 (1)利用顺序表实现“先进后出”的堆栈 提示:定义结构体struct来定义堆栈;采用动态数组实现顺序表;定义函数实现堆栈中元素的压入和弹出,保证“先进后出”的实现 // 结构体Stack struct Stack{ int * List; // 用来存储元素的顺序表 int curNumber; // 用来存储当前元素的总个数 }; void iniStack(Stack * A); // 初始化堆栈 void clearStack(Stack * A); //清空堆栈 void push(Stack * A, ELEMENT obj); //将元素obj压入堆栈的栈顶 void pop(Stack * A); //将当前栈顶的元素弹出栈。要求:栈不为空 ELEMENT get_top(Stack * A); //返回当前栈顶的元素值。要求:栈不为空 int is_empty(Stack * A); //判断当前堆栈是否为空,空返回1,非空返回0 void display(Stack * A); //自顶向下显示堆栈中的元素 测试实例: 向堆栈中压入:1 2 3 4 弹出次序应为:4 3 2 1

C语言实验报告

《C语言程序设计实训1》报告 设计题目:基于数组的学生信息管理系统学院名称:信息科学技术学院

专业:计算机科学与技术 班级: 姓名:学号 指导教师: 提交日期: 2014年12月22日 一、实验内容 编写并调试程序,实现学校各专业班级学生信息的管理。10个学生的信息存储在文件中。在头文件中定义学生信息的结构体类型,包括: 学号、姓名、专业、班级、3门成绩;和符号常量N(学生数)。(同一班 级的学生可以属于不同的专业,同一专业的学生可以属于不同的班级)

二、实验要求 (1)main函数:以菜单形式将各项功能提供给用户,根据用户的选择, 调用相应的函数。 STU student[N]; 函数 #include "" void main() { int i,n,id,num,m,sub,corse;将从文件中读取10个人的信\n"); printf("\n2.您将从文件中随机读取第n(0<=n<=9)个学生的信息\n") printf("\n3.您将根据某一班级某一专业总分超过多少进行查找\n"); printf("\n4.您将求某一课程分数最高的学生序号的下标\n"); printf("\n5.您将对平均成绩由低到高进行简单选择排序法\n ");

printf("\n6.您将对某一个班的平均成绩由低到高进行起泡排序法\n"); printf("\n7.您将对某门专业的学生的某门课程成绩由低到高进行直接插入排序法\n"); printf("\n8.您将把学生信息存入文件\n"); scanf("%d",&id); getchar(); switch(id){ case 1: { printf("\n从文件中读取信息\n"); Input(students,sizeof(students)/sizeof(STU));Sort_select 函数 #include "" void Sort_select(STU * p) { int i,j,k; float sum,ave[N],t; STU tem; for(i=0;i

c语言实验报告实验八

数学与软件科学学院实验报告 学期:__2011_ 至_2012 第_ 1__ 学期 20 11 年 11 月 10 日 课程名称:_C语言程序设计专业:__ 会计学 2008 级_ 8 班 实验编号: 08 实验项目:指针指导教师:王开端 姓名:陈银钗学号: 2008080513 实验成绩:___ 一、实验目的: (1) 掌握C语言环境下指针的声明、定义和使用方法; (2) 掌握指针和变量以及指针和数组的关系; (3) 掌握指针、数组之间的关系; (4) 掌握指针、函数之间的关系。 二、实验内容: 1.熟悉指针的基本使用方法。 (1) 请仔细分析以下程序段,并上机测试运行结果,对测试结果进行分析说明。 1) 程序段一: main() { int i=3,j=6,k=9; printf(“i=%d j=%d k=%d\n”,*(&i),j,k); } 2) 程序段二: main() { int a,*p; float b,*q; p=&a; q=&b; scanf(“%d,%f”, p, q); *p=a*(*q); printf(“a is %d, p is %d and *p is %d\n”, a, p,*p); printf(“b is %f, q is %d and *q is %d\n”, a, q,*q); printf(“p+1=%d q+1=%d\n”,p+1,q+1); } 3) 程序段三: main() { int a,*p,**q,***r;

p=&a;q=&p;r=&q; printf(“Pl ease input a::\n”); scanf(“%d”,**r); printf(The results are :”); printf(“a’ value is %d,%d,%d,%d\n”,a,*p,**q,***r); printf(“a,p,q,r’s value is %d,%d,%d,%d\n”,a,p,q,r); } (2) 设计一个C程序,以测试以下表达式的运算顺序。 2. 想使指针变量pt1指向变量a和b中的大者,pt2指向其小者,以下程序能否实现此目的?为什么?如果不行,请给出实现的方法。 swap(int *pt1,int *pt2) { int *p; p=p1;p1=p2;p2=p; } main() { int a,b; int *pt1,*pt2; scanf(“%d,%d”,&a,&b); pt1=&a;pt2=&b; if (a%d\n”,i+1,execute(a,b,function[i])); } execute(int x,int y,int *func()) {return ((*fun)(x,y));} fun1(int x,int y) {return (x+y);}

c语言实验报告

C语言实验报告 说明 1,所有程序均用VC6.0编译运行,文件名命名为姓名+日期,因为实验存在补做,所以并不是按照日期先后排列的。 2,为了使截图清晰,手动将运行窗口由“黑底白字”改为了“白底黑字”。 实验2 数据类型、运算符和表达式 一、实验目的: (1)掌握C语言数据类型,熟悉如何定义一个整型、字符型、实型变量、以及对它们赋值的方法。 (2)学会使用C的有关算术运算符,以及包含这些运算符的表达式,特别是自加(++)和自减(――)运算符的使用。 (3)掌握C语言的输入和输出函数的使用 (4)进一步熟悉C程序的编辑、编译、连接和运行的过程。 三、程序调试与问题解决: (1)输人并运行下面的程序 #include void main() { char c1,c2; c1='a'; c2='b'; printf("%c %c\n",c1,c2); } ○1运行此程序。 ○2在上面printf语句的下面再增加一个printf语句。

printf("%d %d\n",c1,c2); 再运行,并分析结果。 输出结果如图,编译成功,无错误。 ○3将第3行改为 int c1,c2; 再运行,并分析结果。 ○4再将第4、5行改为 c1=a; c2=b; 再运行,并分析结果。 a,b没有定义,编译报错。 ○5再将第4、5行改为 c1=‘’a‘’; c2=‘’b‘’; 再运行,并分析结果。 ○6再将第4、5行改为 c1=300; c2=400; 再运行,并分析结果。 以字符型输出时,输出的将是300,400对应的字符。 (2)输人并运行教材第3章习题3. 6给出的程序 #include main () { char c1='a',c2='b',c3='c',c4='\101',c5='\116';

西南交大物理实验期末试题题库误差理论

西南交大物理实验期末试题题库误差理论 TTA standardization office【TTA 5AB- TTAK 08- TTA 2C】

z 绪论试 题 误差理论_01 出题:物理实验中心 下列测量结果正确的表示为(B ) A) t =(±) s B) v =(±) m C) v = k m ± m s D) l = m m 误差理论_02 出题:物理实验中心 用误差限 mm 的钢尺测量钢丝长度,10次的测量数据为:(单位: mm )、、、、、、、、、。钢丝的测量结果为(D) A) l = m B) l = m C) l = m m D) l = m 误差理论_03 出题:物理实验中心 函数关系N =3xy ,其中直接测量量x 、y 的不确定度用x u 、y u 表示,其最佳估值用x 、y 表示。则物理量N 的测量结果为(A)。 B) 3N x y =?,N u = C) 3 1n i i i x y N n =?=∑,N u = D) 3N x y =?,N u =

误差理论_04 出题:物理实验中心 下列测量结果正确的表示为(D ) A) 重力加速度g =± B) v =±s C) E =± mV D) I =± mA 误差理论_05 出题:物理实验中心 用误差限的钢直尺测量钢丝长度,11次的测量数据为:(单位:mm ) 、、、、、、、、、、。钢丝的测量结果为(D) A) l = m B) l = m C) l = m m D) l = m 误差理论_06 出题:物理实验中心 函数关系2 =xy N z ,其中直接测量量x 、y 的不确定度用x u 、y u 、z u 表示,其最佳估值用x 、y 、z 表示。则物理量N 的测量结果为(A) A) 2x y N z ?= ,N u =B) 2x y N z ?= ,N u =C) 21i i n i i x y z N n =?=∑, N u = D) 2x y N z ?=, N u =误差理论_07 出题:物理实验中心 以下关于最后结果表达式=x x u ±的叙述中错误的是(A) A) 它说明物理量x 的真值一定包含在~x u x u -+中 B) 它说明物理量x 的真值包含在~x u x u -+中的概率为%

C语言实验报告

实验一进制转换一、实验要求 采用模块化程序设计完成进制转换。由键盘输入一个十进制正整数,然后将该数转换成指定的进制数(二、八、十六) 形式输出。指定的进制由用户输入。 二、实验目的 1、熟悉C 环境的安装、使用。 2、承上启下,复习《C 程序设计》等基础课程的知识。 3、掌握C 语言编程的方法。 三、预备知识 1、VC6.0的安装与使用。 2、C 程序设计基础知识。 四、实验内容 采用模块化程序设计完成进制转换。

五、程序框图 六、程序清单 1. 编写主函数:输入需转换的数与转换的进制 2. 编写子函数 (1)函数转换为除16进制以外的进制转换算数编程,使用while 循环实现计算进制 的转换,并输出转换后的数字; (2)函数转换为16进制,用while 函数实现16进制转换的计算并输出16进制转换后的数据; 3. 编写数组,关于16进制的一系列字符 4. 编写主函数加入do while 使函数可以循环。

七、实验步骤 #include char num[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}; void fun(int n, int m) { int i=-1, a[100]; if(m!=16) { while(n) { a[i++]=n%m; n=n/m; } while(i!=-1) printf("%d",a[--i]); printf("\n");

} else { while(n) { a[++i]=num[n%16]; n/=16; } while(i!=-1) printf("%c",a[i--]); printf("\n"); } } int main() { int a, c;

西南交大C++实验13.doc

实验 13 实验报告 教学班级:________ 学生学号:__________ 学生姓名:__________ 实验日期:_______ 实验地点:指导教师签名:__________ 实验成绩:___________ 一、实验目的 1.理解变量作用域,掌握局部变量和全局变量的使用方法; 2.掌握函数调用过程中的参数传递方法。 3.理解递推的概念,掌握递归函数的基本使用方法; 二、实验任务 1.求数组元素和值。 1) 主函数定义整型数组a[10],数组元素值a[j]=2*j+1,输出a数组; 2) 编一子函数,将主函数传递来的数组元素值改变为其前面所有数组 元素的和值(包括该数组元素自身值),子函数头要求为sum(int a[],int n),n用于传递数组的大小; 3) 主函数中输出改变后的a数组。 2.求自然数对。 1)编写一子函数,判断两个自然数x,y是否是自然数对(所谓自然数对 是指两个自然数的和与差都是平方数,如:17-8=9,17+8=25); 2)调用子函数在01) 编程要求: 1)主函数功能:从键盘输入n值,通过调用子函数计算数列的第n项并输出。2)子函数功能:使用递归法,计算数列2,6,14,30,…… ,的第n项。

C语言实验报告(八)

2016-2017学年第二学期 2016级专业:学号:姓名:……………………………………………………………………………………………… 一、实验题目:结构体和共用体 二、实验目的:(略) 三、实验内容 1.程序验证: 启动vc语言环境,输入并执行以下程序。 源代码:运行结果: #include struct stu { int num; char name[10]; char sex; int age; int score[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}}}; {003, "Alice",'W',22,{79,78,96,97}}}; {003, "Alice",'W',22,{79,78,96,97}}}; void main( ) { int i,j,number; printf("Input student’s number\n"); scanf("%d",&number); for(i=0;i<3;i++) if(number= =students[i].num) b reak; 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"); }

西南交大铁路通信信号实验报告

通信信号课程实验报告(联锁实验) 实验名称:6502电气联锁和微机联锁实验 班级:交运2012-05班姓名:武晓程学号:20121969 实验日期:2014.5.9 实验地点:53011 一.实验目的 1.认识6502电气集中联锁设备控制台 2.运用6502电气集中联锁设备办理列车进路和调车进路,取消办理的进路。 3.认识微机联锁软件及其操作 4.运用微机联锁系统办理列车和调车进路,取消办理的进路 5.思考不同的联锁设备在办理、取消进路时的差异。分析和比较两种系统的异同。 6.加深对电气集中联锁系统和微机联锁系统的理解,回答思考问题。 二.实验设备 1.6502电气集中联锁控制台1台 2.微机联锁设备1套 三.实验原理(给出两种联锁系统的原理) 电气集中联锁:采用电磁继电器,以逻辑电路实现联锁,全站的信号机和道岔可由一个信号楼集中控制。为了建立一条进路,值班人员可在控制台上按下一条进路的始端按钮和终端按钮。不论进路上有多少组道岔,只要在进路范围内无车占用,又没有安排敌对进路,就可将进路中所有道岔转换到规定位置,并将进路锁住;在控制台的轨道表示盘上,所选出的进路从始端到终端呈现一条白色光带,即表示进路已被选出并已经锁闭。防护这条进路的信号机也同时自动开放。在表示盘上轨道模型旁,这条进路始端处的信号复示器亮一绿灯,表示防护此进路的信号机已经开放。当列车驶入该进路后,信号机自动关闭,信号复示器的绿灯改亮红灯,白色光带随着列车的前进,一段一段地由白色变为红色,表示列车在占用该区段,然后又由红色变为灭灯状态,表示列车已出清该区段,并且该区段已经解锁。这时,又可利用该区段内的道岔建立新的进路。 微机联锁:计算机联锁是用微型机算计的软硬件和其他一些电子、继电器件组成的,具有故障-安全性能的实时控制系统。其安全可靠、处理速度快,与继电集中联锁相比具有十分明显的技术经济优势。无论在安全性、可靠性、经济性等方面都是继电集中联锁无法比拟的,而且设计、施工、维修和使用大为方便,是一套全新的系统设备。微机联锁控制系统是实现以进路控制为主要内容的联锁功能控制系统,它主要以色灯信号机、动力转辙机和轨道电路作为三大室外设备,并以电子设备实现联锁功能对轨道区段状态、信号状态和道岔状态进行监测,并对信号机和道岔实施控制的系统。 四.实验过程及心得体会 在5311教室,通过6502电气集中联锁控制台和计算机模拟接车、发车、调车,加强了对课堂学习的理论知识的理解,加深了对车站联锁设备的印象和感触。相比6502电气集中联锁,微机联锁有这更多的优势。

c语言实验(1~8)

C程序设计课程实验项目目录 *实验项目类型:演示性、验证性、综合性、设计性实验。 *此表由学生按顺序填写。

本科实验报告专用纸 课程名称C语言程序设计成绩评定 实验项目名称C语言程序初步指导教师 实验项目编号实验1 实验项目类型验证实验地点 学生姓名学号 学院信息科学技术学院系计算机系专业计算机科学与技术实验时间年月日午~月日午温度℃湿度 一、实验目的 a)熟悉C语言环境,掌握运行一个C语言程序的过程。 b)掌握C语言程序的结构和书写格式。 c)通过运行简单的C程序,初步了解C源程序的特点。 二、实验内容和要求 实验内容: 1.编写一个C程序,输出以下信息: ***************************** Very good! ****************************** 2.编写一个C程序,输入a、b、c 3个值,输出其中最大者。 实验要求: 1.记下在调试过程中所发现的错误、系统给出的出错信息和对策。分析讨论 对策成功或失败的原因; 2.总结C程序的结构和书写规则。 3.总结运行一个C程序的步骤。 三、主要仪器设备 仪器:计算机 实验环境:Windows 2000或Windows XP + Visual C++6.0或Turbo C 2.0 四、实验原理

程序一、 程序二、 程序一、 #include int main() { printf("*******************\n"); printf(" Very good!\n");

printf("*******************\n"); return 0; } 程序二、 #include int main() { int a,b,c,t; printf("Please enter a,b,c:"); scanf("%d%d%d",&a,&b,&c); if(a>b) {t=a;a=b;b=t;} if(b>c) {t=b;b=c;c=t;} printf("max=%d\n",c); return 0; } 六、实验步骤与调试 1.调试过程以键入空格的形式使“Very good!”居中;试验时应该用“\n”使光标跳到下 一行。 2.源程序的编写需要有头文件、主调函数这两个主体部分。 3.运行一个C程序的步骤:编译—连接—运行

西南交大DSP实验报告

FFT实验报告 1.首先启动CCS,打开实验工程文件,对其中主程序文件按要求进行补充、编译并装载程序。 FFT点数为256点,时域信号为60Hz和180Hz情况下,按要求作图,三个图的参数设置分别为:

图形结果为 A、时域信号波形为: B、对应谱: C、FFT输出结果

2. 修改代码为时域信号为60Hz和160Hz两个信号相乘,重复上面作图步骤。结果为: A、时域信号波形为: B、对应谱: C、FFT输出结果:

分析:在修改代码后,频谱的两个峰值发生了变化,其中第一个峰值仍保持在60Hz处,而第二个峰值则由180Hz转移到了160Hz处。由此可见,频谱是刚好对应了时域相乘的两个信号的频率。 3. 在实验代码基础上修改代码为1024点FFT,进行程序的编译、运行和对应结果的查看代码主要有如下所示几处修改: (1) #define Sample_Numb 1024 // FFT点数 #define Sample_Numb 1024 (2) void fft(float datar[Sample_Numb],float datai[Sample_Numb]) { int x0,x1,x2,x3,x4,x5,x6,x7,x8,x9,xx; int i,j,k,b,p,L; float TR,TI,temp; for(i=0;i0) { b=b*2;i--; } for(j=0;j<=b-1;j++) { p=1;i=10-L; while(i>0) { p=p*2;i--;} p=p*j; for(k=j;k<1024;k=k+2*b) {

C语言实验报告(八)

华北水院高级语言程序设计(C语言)实验报告(八) 2014--2015学年第二学期 2014级164班专业:通信工程学号:201416405 姓名:王超……………………………………………………………………………………………… 一、实验题目:文件 二、实验目的:(略) 三、实验内容 1. 程序验证 用记事本编辑文本文件file1.txt。分析一下程序的功能及结果,并验证。 #include #include void main( ) { FILE *in,*out; if((in=fopen("file1.txt","r"))= =NULL) { printf("Can’t open this file.\n"); exit(0); } if((out=fopen("file2.txt","w"))= =NULL) { printf("Can’t open this file.\n "); exit(0); } while(!feof(in)) fputc(fgetc(in),out); fclose(in); fclose(out); } 程序功能:将一个磁盘文件中的数据复制到另外一个文件中去。 程序输出结果:

华北水院高级语言程序设计(C语言)实验报告(八) 2014--2015学年第二学期 2014级164班专业:通信工程学号:201416405 姓名:王超 ………………………………………………………………………………………………2.程序设计 编程有5个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学号, 姓名,三门课成绩),计算出总成绩,将原有的数据和计算出的总分数存放在磁盘文 件stu.txt中。 源代码: #include #include #define N 5 struct student { int num; char name[20]; int math; int english; int physics; int total; };struct student st[N],t; void main()

(最新版)西南交通大学c++实验报告

计算机程序设计基础 (C++) 实 验 报 告 信息学院计算机教育中心 二零一二年三月

实验__1__实验报告 教学班级:_______ 学生学号:_ __ 学生姓名:__ _ 实验日期:_____2011/3/14______ 实验地点:___7204______(机房) 指导教师签名:_strlen(a)__ 实验成绩:___________ 一、实验目的 1.熟悉Visual studio 6.0集成开发环境; 2.学习新建和打开控制台应用程序的方法; 3.通过运行示例程序了解程序开发过程; 二、实验任务 1.新建源程序文件,编辑以下程序,编译,链接,得出运行结果,并保存程序:#include using namespace std; void main( ) { cout<<'a'< using namespace std; int main()

{ float num1,num2,sum; cout << "Enter first number: "; cin >> num1; cout << "Enter second number: "; cin >> num2; sum=num1+num2; cout << "The sum is " << sum << endl; return 0; } 三、实验结果 2.

C语言实验报告

《程序设计基础》实验报告

提示:设 int x=298; 再定义两个变量存放分(m)、秒(s)值; 则:m=x/60;s=x%60; 请编一个程序,上机调试并运行。 实验过程及结果记录: 1. #include"stdafx.h" #define K 0.7 int main() { float a, b; printf_s("please input cost price of TV:"); scanf_s("%f", &a); b = a*K; printf_s("the current price of TV:"); printf_s("%f", b); return 0; 2. #include "stdafx.h" int main() { int a, b, c, d, e, f; printf_s("please input three figures:"); scanf_s("%d", &a); b = a / 100; c = a % 100; d = c / 10; e = c % 10; f = e * 100 + d * 10 + b; printf_s("the new three figures:"); printf_s("%d", f); return 0;

} 3. #include "stdafx.h" int main() { float a, b, c, d, e; printf_s("please input scores:\n"); scanf_s("%f%f%f", &a, &b, &c); d = a + b + c; e = (a + b + c) / 3; printf_s("the total scores:"); printf_s("%5.1f\n", d); printf_s("the average scores:"); printf_s("%4.1f\n", e); return 0; } 4. #include "stdafx.h" int main() {

西南交大大学计算机基础实验报告

大学计算机基础 实 验 报 告 教学班级:_______ 学号:__________ 姓名:___________ 课程教师:______________ 实验辅导教师:_____________ 西南交通大学 2011年9月

实验一微机基本操作与上网冲浪 教学班级:_______ 学号:__________ 姓名:___________ 实验日期:___________ 实验地点:_________(机房) 指导教师签名:__________ 实验成绩:___________ 一、实验目的 1.掌握计算机系统的启动与关闭; 2.掌握常用输入设备、输出设备、存储设备的用法。 3.掌握搜索引擎的使用; 4.掌握下载与解压缩的方法; 5.掌握软件安装的方法。 二、实验任务 1.启动与关闭计算机。 2.利用“键盘盲打练习”软件进行键盘的指法练习。 3.硬盘信息查询。 4.利用搜索引擎搜索成都商报,阅读当日报纸新闻。 5.利用下载工具FlashGet在网上下载“NetAnts”软件压缩包,利用压缩工具winRar解压缩该包,并安装该软件。 三、实验检查内容 [ ] 1.能否热启动计算机 [ ] 2.能否下载打字软件(辅导老师可协助将软件下载到教师机上,学生通过网上邻居获取) [ ] 3.能否安装打字软件 [ ] 4.打字速度/分钟 [ ] 5.查看C区总容量 [ ] 6.查看磁盘整理程序对C区的分析报告,看是否需要整理[ ] 7.写出当日成都商报的头版头条标题 [ ] 8.是否将NetAnts软件安装在D区

实验二文件资源的管理与操作 教学班级:_______ 学号:__________ 姓名:___________ 实验日期:___________ 实验地点:_________(机房) 指导教师签名:__________ 实验成绩:___________ 一、实验目的 1.掌握文件的复制、移动、删除; 2.掌握文件的重命名、属性的设置; 3.掌握文件的查找; 4.掌握文件夹选项操作。 二、实验任务 1.查找文件“notepad.exe”,在D盘上以自己的学号为名建立一个新的文件夹,在此文件夹内建一名为“记事本”的文件夹,将文件“notepad.exe”复制到“记事本”文件夹下面,属性修改为“只读”,然后在桌面上创建“notepad.exe”文件的快捷方式。 2.显示“我的文档”文件夹下所有文件的扩展名。 三、实验检查内容 [ ] 1.是否在D区建立以自己学号为名的文件夹 [ ] 2.是否在学号文件夹中创建名为“记事本”的文件夹 [ ] 3.是否将“notepad.exe”文件复制到“记事本”文件夹中[ ] 4.“notepad.exe”文件的属性是否修改为“只读” [ ] 5.是否在桌面上创建“notepad.exe”文件的快捷方式 [ ] 6.是否显示文件的扩展名

相关主题
文本预览
相关文档 最新文档