当前位置:文档之家› 实验8字符串类答案

实验8字符串类答案

实验8字符串类答案
实验8字符串类答案

实验八字符串类

【实验目的】

①掌握String类的常用方法

②掌握StringBuffer类的常用方法;

【实验内容】

1.String类的常用方法。

?实验要求:

编写一个Java应用程序,判断两个字符串是否相同,判断字符串的前缀、后缀是否和某个字符串相同,按字典顺序比较两个字符串的大小关系,检索字符串,创建字符串,将数字型字符串转换为数字,将字符串存放到数组中,用字符数组创建字符串。。

?程序运行效果示例:

程序运行效果如下图所示:

?程序模板:

StringExample.java

class StringExample

{ public static void main(String args[])

{ String s1=new String("you are a student"),

s2=new String("how are you");

if(【代码1】s1.equals(s2)) // 使用equals方法判断s1与s2是否相同

{

System.out.println("s1与s2相同");

}

else

{

System.out.println("s1与s2不相同");

}

String s3=new String("22030219851022024");

if(【代码2】s3.startswith(“220302”)) //判断s3的前缀是否是“220302”。

{

System.out.println("吉林省的身份证");

}

String s4=new String("你"),

s5=new String("我");

if(【代码3】https://www.doczj.com/doc/7f12955338.html,pareTo(s5)>0)//按着字典序s4大于s5的表达式。

{

System.out.println("按字典序s4大于s5");

}

else

{

System.out.println("按字典序s4小于s5");

}

int position=0;

String path="c:\\java\\jsp\\A.java";

position=【代码5】https://www.doczj.com/doc/7f12955338.html,stIndexOf(“\\”); //获取path中最后出现目录分隔符号的位置

System.out.println("c:\\java\\jsp\\A.java中最后出现\\的位置:"+position);

String fileName=【代码6】path.substring(12);//获取path中“A.java”子字符串。

System.out.println("c:\\java\\jsp\\A.java中含有的文件名:"+fileName);

String s6=new String("100"), s7=new String("123.678");

int n1=【代码7】Integer.parseInt(s6); //将s6转化成int型数据。

double n2=【代码8】Double.parseDouble(s7);//将s7转化成double 型数据。

double m=n1+n2;

System.out.println(m);

String s8=【代码9】String.valueOf(m);//String调用valueOf(int n)方法将m转化为字符串对象也可以用Double.toString();

position=s8.indexOf(".");

String temp=s8.substring(position+1);

System.out.println("数字"+m+"有"+temp.length()+"位小数") ;

String s9=new String("ABCDEF");

char a[]=【代码10】s8.toCharArray();//将s8存放到数组a中。

for(int i=a.length-1;i>=0;i--)

{

System.out.print(" "+a[i]);

}

}

}

运行结果:

实验后的练习:

1. 程序中的s6改写成

String s6=new String(“1a12b”); 运行时提示怎样的错误?

出现数字格式转换异常

2. 请用数组a的前3个单元创建一个字符串并输出该串。

String s= new String(a,0,2);

System.out.println("用数组a的前3个单元创建一个字符串输出为:"+d);

3. 请给出获取path中“jsp”子字符串的代码。

String filejsp=path.substring(8,11);

System.out.println("c:\\java\\jsp\\A.java中含有的文件名:"+filejsp);

4. 在程序的适当位置增加如下代码,注意输出的结果。

String str1=new String(“ABCABC”),

str2=null,

str3=null,

str4=null;

str2=str1.replaceAll(“A”,”First”);

str3=str2.replaceAll(“B”,”Second”);

str4=str3.replaceAll(“C”,”Third”);

System.out.println(str1);

System.out.println(str2);

System.out.println(str3);

System.out.println(str4);

输出结果:

ABCABC

FirstBCFirstBC

FirstSecondCFirstSecondC

FirstSecondThirdFirstSecondThird

5. 可以使用Long类中的下列static方法得到整数各种进制的字符串表示:

Public static String toBinaryString(long i)

Public static String toOctalString(long i)

Public static String toHexString(long i)

Public static String toString(long i,int p)

其中的toString(long i, int p)返回整数i的p进制表示。请在适当位置添加代码输出12345的二进制、八进制和十六进制表示。

Long I = new Long(12345);

System.out.println(”12345的二进制表示:”+I.toBinaryString(i)); System.out.println(”12345的八进制表示:”+I.toOctalString(i)); System.out.println(”12345的十六进制表示:”+I.toHexString(i));

输出结果:

12345的二进制表示:11000000111001

12345的八进制表示:30071

12345的十六进制表示:3039

System.out.println(number+”的二进制表示+ Long.toString(number,2)); System.out.println(number+”的八进制表示+Long.toString(number,8)); System.out.println(number+”的十六进制示+Long.toString(number,16));

输出结果为 12345的二进制表示11000000111001

12345的八进制表示30071

12345的十六进制示3039

6. 在适当位置添加代码,分别输出数字m的整数部分和小数部分。

String str= String.valueOf(m);

String dec = str.substring(str.indexOf(".")+1);

String inte = str.substring(0,str.indexOf(".")-1);

System.out.println(Integer.parseInt(dec));//输出小数部分

System.out.println(Integer.parseInt(inte));//输出整数部分

2、编写程序实现p127第9题。

import java.util.*;

public class p127_9 {

public static void main(String[] args) {

System.out.println(" 日一二三四五六 ");

Calendar rili=Calendar.getInstance();

rili.set(2005,7,1);

int day=rili.get(Calendar.DAY_OF_WEEK)-1; String a[]=new String[day+31];

for(int i=0;i

{a[i]="**";}

for(int i=day,n=1;i

{if(n<=9)

a[i]=String.valueOf(n)+" ";

else

a[i]=String.valueOf(n);

n++;}

for(int i=0;i

{ if(i%7==0)System.out.println("");

System.out.print(" "+a[i]);

}}}

实验8 指针

实验8 指针 一、实验目的 1. 熟练掌握指针的定义、赋值的方法 2. 掌握间接引用运算符的使用方法 3. 掌握通过指针引用数组元素的方法 4. 掌握使用指针处理字串的方法 二、实验内容 实训1 循环输入学生某门课的成绩,将成绩存储到数组中,统计最高分和获得最高分的学生人数,最后输出统计信息。 1)在VS2013中新建项目,在项目中新建C++源文件,输入下面程序。 #include// 包含输入输出接口文件 using namespace std; // 引用标准命名空间 int main() // 主函数 { const int n = 5; // 使用常变量定义学生人数 int score[n]; // 定义成绩数组,有n个整型元素 int maxScore = 0; // 最高分,并初始化为 int maxStudent = 0; // 得到最高分的学生人数 int i; // 循环变量 int *p = 0; p = score; // p指向score[0] for (i = 0; i < n; i++) // 计数循环 { // 开始循环 cout << "请输入第" << i << "位学生的成绩:"; cin >> p[i]; // 输入第i位学生的成绩,并存储到score[i] if (maxScore < p[i]) // 如果第i位学生的成绩高于原最高分 { maxScore = p[i]; // 将最高分修改为第i位学生的成绩} } // 结束循环 cout << "本班最高分为" << maxScore << endl; cout << "得到最高分的学生序号为:" << endl; for (i = 0; i < n; i++) // 计数循环 { // 循环开始 if (*(p + i) == maxScore) // 如果第i位学生的成绩等于最高分 { maxStudent++; // 得最高分的学生人数增1 cout << i << endl; // 输出该生序号

上机实验8 二维数组&字符数组--参考答案

上机实验八二维数组与字符数组—参考答案 一.目的要求 1.掌握二维数组的基本概念,如何定义二维数组,如何初始化二维数组。 2.掌握二维数组的基本操作:引用数组元素、行(列)求和,行(列)最大最小值,整个数组的输入输出等。 3.掌握与二维数组有关的算法,如找最大最小值(或位置)、矩阵转置等。 4.掌握字符串与字符数组的基本应用方法 5.掌握字符串有关的算法,如字符转换、查询、统计和进制转换等 二.实验内容 【实验题1】程序填空:输入一个4×4矩阵,求出主对角线上的元素之和sum1、副对角线上的元素之和sum2,并输出结果。 提示:每一行只有一个主对角线元素a[i][i](特征:i==j),也仅有一个副对角线元素a[i][n-i-1](特征:i+j==n-1,即j=n-1-i) 源程序: #include void main() { int i,j,sum1=0,sum2=0, a[4][4]; printf("Input a 4*4 matrix:\n"); for(i=0; i<4; i++) //输入矩阵元素 for( j=0; j<4; j++) scanf("%d", &a[i][j]); for(i=0; i<4; i++ ){ //计算sum1和sum2 sum1 +=a[i][i]; sum2 +=a[i][3-i]; } printf("sum1=%d, sum2=%d\n", sum1,sum2); //输出结果 } 运行程序,并输入数据: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 运行结果:sum1= 34, sum2= 34 【实验题2】程序填空:打印杨辉三角形前10行: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 …………………… 算法提示:分析一个10行的杨辉三角,需要一个10×10的二维矩阵a,则: 1)杨辉三角为下三角矩阵,只需要求出第i行(i=0,1,2,…,9)前i+1个元素,即a[i][j]!=0 (j=0…i). 2)每行的第0列元素均为1,即a[i][0]=1; 3)每行的主对角线元素也均为1,即a[i][i]=1; 4)从第2行开始,每行夹在第0列元素与主对角线元素之间的元素a[i][j]( i=2,3,…,9, j=1,..,i-1 ) 等于其左上方元素a[i-1][j-1]与正上方元素a[i-1][j]之和,即a[i][j]=a[i-1][j-1]+a[i-1][j]; 5)输出该矩阵的下三角,即得出杨辉三角的前10行。

实验八 公式、序列及函数的使用

实验八公式、序列及函数的使用 一、实验目的 1.熟练掌握序列填充及公式复制的方法; 2.掌握常用函数的功能及使用方法,并能用它们来解决一些实际问题。 二、实验内容与操作步骤 在Excel环境下完成以下各操作: (一)序列填充及公式的使用 1.在Excel中创建一个空白工作簿 2.利用Excel提供的数据填充功能,在Sheet1工作表中输入以下数据: ⑴在区域A1:A9中从上到下填入:2,4,6,8,10,12,14,16,18 ⑵在区域B1:B9中从上到下填入:1,2,4,8,16,32,64,128,256 ⑶在区域C1:C12中从上到下填入:JAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV,DEC ⑷在区域D1:D7中从上到下填入:星期日,星期一,星期二,星期三,星期四,星期五,星期六 3.在Sheet2工作表中,利用公式计算二次函数ax2+bx+c的值,其中a=2,b=3,c=5,x从-3到4变化,每隔0.5取一个函数值。操作方法写出如下: 4.把工作簿以E81.XLS为文件名存入D:\EX8中。 (二)函数的使用 在Excel环境下打开D:\EX8\E82.XLS文件,依次完成以下各操作后按E83.XLS为文件名存入D:\EX8中。 1、统计函数的使用 ⑴单击“统计函数”工作表;

⑵在区域F3:G8中用“统计函数”计算出各分店的统计值。 操作方法是:先在F3单元及G3单元输入的计算公式,然后选定区域F3:G3后双击其填充柄。其中F3单元的公式为,G3单元的公式为。 ⑶在区域B9:E12用“统计函数”计算出各季度的统计值。 2、条件函数的使用 ⑴单击“条件函数”工作表。 ⑵计算出各学生的平均分; ⑶给定各学生的成绩等级,规则如下:平均分≥90为“A”,80≤平均分<90为“B,70≤平均分<80为“C”,60≤平均分<70为“D”,平均分<60为“E”。以此规则在区域F3:F62用IF函数确定各学生的等级。 ⑷用FREQUENCY函数在区域I2:I5中统计出平均分0~59,60~79,80~99,100各分数段的学生人数。 3、文本函数的使用 ⑴单击“文本函数”工作表; ⑵在区域A2:F32给出的数据清单中,编号的前3位为系别信息,101为数学系,102为物理系,103为化学系,据此在区域B3:B32用函数求出每位教师的系别。其中B3单元使用的公式为。 ⑶已知身份证号的第7至第10位数为出生年份,据此在区域F3:F32用函数求出每位教师的出生年份。其中F3单元使用的公式为。 4、日期函数的使用 ⑴单击“日期函数”工作表; ⑵在区域A2:F32给出的数据清单中,在区域E3:E32用日期函数求出每位职工的工龄。其中E3单元使用的公式为。 ⑶在区域F3:F32用日期函数求出每位职工的工作天数(即自参加工作以来已经过的总天数。其中F3单元使用的公式为。 5、财务函数的使用 使用 PMT 函数完成以下有关的操作: ⑴单击“财务函数”工作表; ⑵某企业向银行贷款5 万元,准备4年还清,假定当前年利率为 4 % ,在 B5 单元 计算每个月应向银行偿还贷款的数额,根据条件在 B2 : B4 补充所需内容。其中单元格B5 使用的公式为。 ⑶假定当前年利率为 5 %,为使 5 年后得到 10 万元的存款,在 D5 单元计算现在开

实验八 指针程序设计(解答)

《指针程序设计》实验解答 1、改错题 (1) include int digits(char *s) { int c=0; while(*s) //s改为*s { if(*s>='0' && *s<='9') //*s>=0 && *s<=9改为*s>='0' && *s<='9' c++; s++; } return c; } void main() { char s[80]; printf("请输入一行字符\n"); gets(s); printf("字符长度是:%d\n",digits(s)); } (2) #include swap(int *p1,int *p2) { int p; //int *p改为int p p=*p1; //*p=*p1改为p=*p1 *p1=*p2; *p2= p; //*p2=*p 改为*p2=*p } void main() { int a,b; scanf("%d%d",&a,&b); printf("a=%d\tb=%d\n",a,b); swap(&a,&b); printf("a=%d\tb=%d\n",a,b); }

(3) #include void move(int *pointer) ; //添加 void main(void) { int a[3][3],*p,i; printf("输入数组元素:\n"); for(i=0;i<3;i++) scanf("%d%d%d",&a[i][0], &a[i][1], &a[i][2]); //scanf("%d%d%d",a[i][0], a[i][1], a[i][2]) p=&a[0][0]; // p=a[0][0]; move(p); printf("转置后的数组为:\n"); for(i=0;i<3;i++) printf("%d %d %d\n",a[i][0], a[i][1], a[i][2]); } void move(int *pointer) { int i,j,t; for(i=0;i<3;i++) for(j=i;j<3;j++) { t=*(pointer+3*i+j); //t=(pointer+3*i+j); *(pointer+3*i+j)=*(pointer+3*j+i); *(pointer+3*j+i)=t; //*(pointer+3*j+i)=*t; } } 2、程序填空 (1) #include int findmax(int *s,int t ) { int i,k=0; for(i=0;i< t ;i++) //1 if( s[i]>s[k]) k=i; // 2 return k ; //3 } void main() { int a[10]={12,23,34,45,56,67,78,89,11,22},k=0,*add; int j; for(j=0;j<10;j++) printf("%4d%4d%10xh\n",j+1,a[j],&a[j]);

c程序设计实验参考答案

《C程序设计上机指导》答案 实验一参考答案 四.1、Hello, world ! Welcome to the C language world! Everyone has been waiting for. 2、a+b=579 579 五.1、b=2; 2、int a; 3、area 六.x=5,y=8, 改为x=5,y=8; 七.写程序 1、编写程序输出用6颗星构成的等边三角形。 main() { printf(" * \n"); printf(" * * \n"); printf("* * *\n"); } 2、编写程序求25和5两个整数的和与差。 main() { int a,b,c,d; a=10; b=20; c=35; d=(a+b+c)/3; printf("%d\n",d); } 实验二参考答案: 一.1、A , 65 B, 66 2、x=1,y=1,z=5 3、a=%d,b=%d 二.1、char a;int b; 2、a,a,a 3、a=865 a,h,m 4、u=2*sqrt(a)+b-10; “%f\n” 三.1、第1行ch1=’a’; 改为char ch1=’a’; 第2行ch2=98; 改为char ch2=98; 2、第7行w=x%y; 改为w=x/y; 3、int u=v=89; 改为int u,v; u=v=89; 4、第3行改为scanf(“%d,%d”,&x,&y); //格式字符串有错。 第5行改为printf("The average is %d:"a); //格式字符串有错。四.写程序 1、编程求111 234 ++ 的和(精确到小数点后两位)。 main( ) { float i; i=1.0/2+1.0/3+1.0/4;

大学生C语言程序设计(第四版 谭洪强)实验8答案

实验八 函 数(二) 参考答案 /*1.(sy8-1.c ) 请编写函数 fun ,其功能是:计算并输出给定数组(长度为 9)中每相邻两个元素之平均值的平方根之和。 例如,给定数组中的 9 个元素依次为 12.0、34.0、4.0、23.0、34.0、45.0、18.0、3.0、11.0,输出应为:s=35.951014。 【解题思路】 在给出的参考程序中,由于函数要求的返回值为双精度型,所以先将变量 avg 、sum 定义为双精度型,初值为 0.0,然后通过 for 循环分别求出相邻两个元素的平均值放入变量 avg 中,再使用求平方根函数sqrt()对各平均值开方求和,最终结果输出到变量 sum 中并返回。 【参考答案】*/ double fun(double x[9]) { int i ; double avg=0.0,sum=0.0; //将变量avg 、sum 定义为双精度型,并给其赋初值为0.0 for (i=0;i< 8;i++) { avg=(x[i]+x[i+1])/2; //通过for 循环分别求出相邻两个元素的平均值放入变量avg 中 sum+=sqrt(avg); //使用求平方根函数sqrt()对各平均值开方求和,最终结果输出到变量 sum } return sum; /*返回计算结果*/ } 2.(sy8-2.c ) 编写函数fun ,实现矩阵(3行3列)的转置(即行列互换)。例如,输入下 面的矩阵:????? ??900800700600500 400300200 100,程序输出: ???? ? ??900600300800500200700400100。 【解题思路】 方阵转置,只需要将左下半三角元素和右上半三角元素对换即可。 【参考答案】 int fun(int array[3][3]) { int i,j,t ; for(i = 0 ; i < 3 ; i++) for(j = 0 ; j < i ; j++) {t=array[i][j]; array[i][j]=arrar[j][i]; array[j][i]=t ; } } 3.(sy8-3.c ) 请编写函数 fun ,函数的功能是:统计一行字符串中单词的个数作为函数值返回。一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间由若干个空格隔开,一行的开始没有空格。 【解题思路】I am a student! 在给出的参考程序中,若判断出当前字符为非空格,而它前面的字符是空格,则单词数累加 1;若当前字符为非空格,而其前面的字符也为非空格,则单词数不累加 1,程序细节可以参考程序的注释部分。 【参考答案1】 int fun( char s[])

实验八实验报告_卓越14_彭佳伟

C语言程序设计实验报告 专业计算机科学与技术班级卓越工程师班 日期2014年12月17日成绩 第八次实验指针实验指导教师李开 学生姓名彭佳伟学号U201414716 实验组别同组人姓名 实验名称指针实验 一、实验目的 (1)熟练掌握指针的说明、赋值、使用。 (2)掌握用指针引用数组的元素,熟悉指向数组的指针的使用。 (3)熟练掌握字符数组与字符串的使用,掌握指针数组及字符指针数组的用法。 (4)掌握指针函数与函数指针的用法。 (5)掌握带有参数的main函数的用法。 二、实验任务 1.源程序改错 下面的源程序中是否存在错误?如果存在,原因是什么?如果存在错误,要求在计算机上对这个源程序进行调试修改,使之能够正确执行。 源程序1 #include int main(void) { float *p; scanf("%f", p); printf("%f\n", *p); return 0; } 2.源程序完善、修改、替换 (1)下面的源程序的功能是:通过函数指针和菜单选择来调用字符串拷贝函数或字符串连接函数。请在程序中的下划线处填写合适的表达式、语句或代码片段来完善该程序。 #include #include int main(void) { char a[80], b[80], c[160], *result = c; int choice, i; do { printf("\t\t1 copy string.\n"); printf("\t\t2 connect string.\n");

printf("\t\t3 exit. \n"); printf("\t\tinput a number(1-3) please! \n"); scanf ("%d", &choice); }while(choice < 1|| choice > 5); switch(choice) { case 1: p = strcpy; break; case 2: p = strcat; break; case 3: goto dowm; } getchar(); printf("input the first string please! \n"); i = 0; printf("input the second string please! \n"); i = 0; result = (a, b); printf("the result is %s\n", result); dowm: ; return 0; } (2)请上机运行第(1)题程序,使之能按下面要求输出结果: 1 copy string. 2 connet string. 3 exit input a number(1-2) please! 2(输入) Input the first string please! the more you learn,(输入) input the second string please! the more you get.(输入) the result is the more you learn, the more you get. 3.跟踪调试源程序 请按下面的要求对所给的源程序进行操作,并回答问题和排除错误。 (1)单步执行源程序。进入strcpy时,watches窗口中s为何值?返回main时,watches 窗口中s为何值? (2)排除源程序中的错误,使程序输出结果为:there is a bote on the lake. 源程序3 #include char *strcpy(char *, char*); int main(void) {

八年级生物实验探究及答案

八年级生物实验探究及答 案 Prepared on 21 November 2021

生物实验探究 班级:姓名: 1.仔细观察蝗虫的胸部和腹部。可以在左右两侧找到排列很整齐的一行小孔,这就是气门。气门与蝗虫体内的气管连通着,气门是气体进入蝗虫身体的门户,依据给的实验材料,设计一个实验,证明气门是蝗虫气体进入的门户。提出问题: 做出假设:。 材料用具:(1)两只活蝗虫;(2)两只试管;(3)清水;(4)玻璃条;(5)细线。实验步骤:(1) (2) ; (3) 实验预期结果: 实验结论:。 讨论:选择两只大小、生活状况相同的蝗虫,目的是 2.设计探究实验 背景知识:蚯蚓生活在潮湿、疏松、富含有机物的土壤中。它的身体由许多体节构成,体表湿润并且有许多粗糙的刚毛。蚯蚓依靠肌肉和刚毛运动。 请你设计一个实验来探究: 蚯蚓在什么样的物体表面爬得快 (1)我提出的问题是: (2)我的假设是: (3)实验方案设计:将个体粗壮的活蚯蚓放在粗糙纸上,观察它的运动;将个体粗壮的活蚯蚓放在玻璃板上,观察它的运动;重复上述实验3-5次。 (4)预测结果:。 (5)得出结论:。 3.某同学想探究土壤湿度对蚯蚓生活的影响,未完成,请你接着做它。 (1)你认为他可在的环境中才能找到试验用的蚯蚓。 (2)按照科学实验的要求,他必须设计对照,才更具有说服力。 在这个实验中是变量,要控制好。 (3)你作出的假设是:。 (4)请你设计一个实验来探究土壤湿度对蚯蚓的影响:(只写出具体操作步骤即可) 。

(5)实施计划。 4.菜青虫是生活在十字花科蔬菜菜叶上的一种深绿色的小肉虫,它是菜粉蝶的幼虫。 十字花科植物的花一般由四片花瓣组成,并且这四片花瓣呈十字形排列,大白菜、卷心菜、油菜等都属于十字花科的蔬菜。 (1)提出问题:; (2)作出假设:; (3)设计实验,完成实验 ◆培养菜青虫:寻找菜青虫卵,找到后将卵隔离饲养 ◆制取汁液: ◆用汁液涂滤纸: ◆观察现象: (4)检验假设,得出结论。 (5)讨论和完善计划 ◆从卵开始进行隔离饲养的目的:。 ◆对菜青虫卵隔离饲养的方法:人工条件下饲养菜青虫,隔离卵并不困难。但要饲养成活,还是有些难度的。 首先,要尽可能为菜青虫创造一个接近自然生存环境的饲养条件,目 的:。其次,饲养的数量也不宜过少,目 的:。 ◆可以选择含特殊挥发性油的植物叶片,如薄荷叶、芹菜叶等。看看菜青虫是否喜欢。叶片最好不要带毛或刺 等,。 ◆实验用的叶片和滤纸等应当一样大:这样做的目的也 是。 ◆滤纸的颜色要和菜叶的一样。选择一样的色彩也是为了。 ◆最好是事先饿饲一段时间,在菜青虫有较高食欲时做这项探究。可以将滤纸和菜叶放在同一水平线上,使菜青虫离滤纸和菜叶同样距离(距离不要太远)。放开菜青虫,看看它会取食什么东西。 ◆对照实验要在同样的时间和地点来做:这 样。 5.一个群体中的动物个体向其他个体发出某种信息,接受信息的个体产生某种行为反应,这种现象叫做通讯。 (1)提出问题: (2)作出假设: (3)设计实验,完成实验。 在设计实验时,在离蚁穴较远的地方放的一些食物中,应既有肉食又有植食。因为蚂蚁的种类很多,食性也不尽相同,有的为肉食性,有的为植食性,有的则为杂食性。在饲养蚂蚁时也需注意它的食性,蚂蚁生长繁殖的适宜温度

实验七 指针

实验七指针(1) 一、实验目的 1.掌握指针变量的定义与引用 2.掌握指针与变量、指针与数组的关系 3.掌握用数组指针作为函数参数的方法。 4.熟悉TC集成环境的调试指针程序的方法 二、实验内容 以下均用指针方法编程: 1. 调试下列程序,使之具有如下功能:用指针法输入12个数,然后按每行4个数输出。写出调试过程。 main() { int j,k,a[12],*p; for(j=0;j<12;j++) scanf("%d",p++); for(j=0;j<12;j++) { printf("%d",*p++); if(j%4 == 0) printf("\n"); } } 调试此程序时将a设置为一个"watch",数组a所有元素的值在一行显示出来。调试时注意指针变量指向哪个目标变量。 2. 在主函数中任意输入10个数存入一个数组,然后按照从小到大的顺序输出这10个数,要求数组中元素按照输入时的顺序不能改变位置。 三、实验要求 1.复习指针的定义与使用方法。 2.编写程序,运行程序并记录运行结果。 3.将源程序、目标文件、可执行文件和实验报告存在软盘上。 实验八指针(2) 一、实验目的 1.掌握C语言中函数指针的使用方法。 2.掌握C语言中指针数组的使用方法。 3.熟悉TC集成环境的调试指针程序的方法 二、实验内容 1.调试下列程序,使之具有如下功能:任意输入2个数,调用两个函数分别求: ⑴ 2个数的和, ⑵ 2个数交换值。 要求用函数指针调用这两个函数,结果在主函数中输出。 main() { int a,b,c,(*p)(); scanf("%d,%d",&a,&b);

实验8部分答案

SQL数据查询语句: 1: (选择表中的若干列) 求全体学生的学号、姓名、性别和年龄。 2: (不选择重复行) 求选修了课程的学生学号。 3: (选择表中的所有列) 求全体学生的详细信息。 4: (使用表达式) 求全体学生的学号、姓名和出生年份。 5: (使用列的别名) 求学生的学号和出生年份,显示时使用别名“学号”和“出生年份”。 6: (比较大小条件) 求年龄大于19岁的学生的姓名和年龄。 7: (比较大小条件) 求注册B1班或注册B2班年龄大于18岁的学生的姓名、班级号和年龄。 8: (确定范围条件) 求年龄在19岁与22岁(含20岁和22岁)之间的学生的学号和年龄。 9: (确定范围条件) 求年龄不在19岁与22岁之间的学生的学号和年龄。 10:(确定集合条件) 求在下列各班的学生信息:注册B1班、注册B2班。 11:(确定集合条件) 求不是注册B1班、注册B2班的学生信息。 12:(匹配查询) 求姓名是以“李”打头的学生。 13:(匹配查询) 求姓名中含有“志”的学生。

14:(匹配查询) 求姓名长度至少是三个汉字且倒数第三个汉字必须是“马”的学生。 15:(匹配查询) 求选修课程JC001或JC003,成绩在80至90之间,学号为2007xxx的学生的学号、课程号和成绩。 16:(涉及空值查询) 求缺少学习成绩的学生的学号和课程号。 17:(控制行的显示顺序) 求选修JC003课程或JC004课程的学生 的学号、课程号和分数。 18:(组函数) 求学生总人数。 19:(组函数) 求选修了课程的学生人数。 20:(组函数) 求注册B1班学生的平均年龄。 21:(组函数) 求选修了课程JC001的最高、最低与平均成绩以及 课程的名称。 22:(分组查询) 求各门课程的平均成绩与总成绩。 23:(分组查询) 求各班级的人数和平均年龄。 24:(分组查询) 输入以下查询语句并执行,观察出现的其结果并 分析其原因。 SELECT SNAME,SDEPT,COUNT(*)FROM STUDENT WHERE SDEPT=’CS’GROUP BY SDEPT; 25:(分组查询) 分析以下语句为什么会出现错误。并给出正确的 查询语句。

Python 实验8 函数1

实验8 函数(一)实验目的: 1、理解自定义函数过程的定义与调用方法; 2、掌握自定义函数的定义与调用方法; 3、理解函数中的参数的作用; 实验内容: 1、编写一函数Fabonacci(n),其中参数n代表第n 次的迭代。While循环 def fib(n): if n==1 or n==2: return 1 a=1 b=1 i=2 while True: c=a+b a=b b=c i+=1 #第i次迭代,也就就是第i个数 if i==n: return c break def main(): n=input("Enter a number of generation:") print fib(n) main() 或者用for循环 def fib(n): a=1 b=1 c=0 if n==1 or n==2: return 1 else: for i in range(3,n+1): c=a+b a=b b=c return c def main(): n=input("enter n:") print fib(n) main() 2、编写一函数Prime(n),对于已知正整数n,判断该数就是否为素数,如果就是素数,返回True,否则返回 False。 def prime(n): if n<2: return False a=0 for i in range(1,n+1): if n%i==0: a+=1 if a>2: return False else: return True def main(): n=input("Enter a number:") print prime(n) main() Or: def prime(n): if n<2: return False if n==2: return True for i in range(2,n): if n%i==0: return False return True def main(): n=input("Enter a number:") print prime(n) main()

实验报告8

实验八:指针及其应用 班级: 学生姓名:李林 学号:20141060101 一、实验目的 1、掌握指针的概念 2、掌握指针变量的定义和基本使用方法 3、掌握使用指针操作数组元素的方法 4、掌握使用指针操作字符串的方法 二、知识要点 1、变量的直接访问和间接访问的概念 2、指针和指针变量的概念 3、简单变量的指针及指向简单变量的指针变量的定义、赋值及使用 4、数组的指针及指向数组的指针变量的定义、赋值及使用 5、字符串的指针及指向字符串的指针变量的定义、赋值及使用 三、实验预习(要求做实验前完成) 1、写出一个C语句,使得指针变量u指向变量x: 2、写出一个C语句,输出“指针变量p指向的整型变量”的值: 3、把“指针变量u所指向的变量”的值变为40,其语句是: 4、定义三个变量,其中x1是整型变量;y1、y2是指向整数的指针变量: 5、若有语句:char t[20]= “abcdefgh”,*p;则使p指向字符串的第一个 字符的语句是: 四、实验内容(以下题目要求使用指针方法完成) 1、已知一个整数数组x[4],它的各元素值分别为3、11、8和22。使用指针表 示法编程序,求该数组各元素之积。#include #include int main() { int x[4]={3,11,8,22};

int *p=&x,ji=1,i; for(i=0;i<4;i++) { ji=ji*(*p); p++; } printf("%d\n",ji); return 0; } 2、编写程序,输入10个整数至一数组,将其中最小的数与第一个数对调,把 最大的数与最后一个数对调。(要求输出对调前后的数组)#include #include void ha(int *p,int n) { int i; for(i=0; i

实验八溶液表面张力测定问答题答案(学习资料)

实验八溶液表面张力测定问答题答案 1、实验时,为什么毛细管口应处于刚好接触溶液表面的位置? 如插入一定深度将对实验带来什么影响? 答案:减少测量?P max 误差,因为?P max 是气泡内外的压力差,在气泡形成的过程中,由于表面张力的作用,凹液面产生一个指向液面外的附加压力△P , K =ΔP r γ=ΔP 2 m ax m ax ,如果插入一定深度,P 外还要考虑插入这段深度的静压力,使得?P max 的绝对值变大,表面张力也变大。 2、最大气泡法测定表面张力时为什么要读最大压力差? 答案:最大气泡法测定表面张力时要读最大压力差。因为随着气泡的形成,曲率半径逐渐由大变小又变大,当曲率半径等于毛细管半径时,气泡呈半球形,气泡曲率半径最小,△P 最大。 这时的表面张力为: K =ΔP r γ=ΔP 2 m ax m ax 式中的K 为仪器常数,可用已知表面张力的标准物质测得。 ?P max 由压力计读出。 3、实验中为什么要测定水的?P m ax ? 答案:当曲率半径等于毛细管半径时的表面张力为: K =ΔP r γ=ΔP 2 m ax m ax 式中的K 为仪器常数,可用已知表面张力的标准物质测得,这种标准物质就是水。 4、对测量所用毛细管有什么要求? 答案:毛细管一定要清洗干净,管口平齐。 5、在毛细管口所形成的气泡什么时候其半径最小? 答案:测量时?P m ax 最大 6、如何用镜象法从σ—C 等温线上作不同浓度的切线求T c γ??? ????或Z ? 如图所示,经过切点a 作平行于横坐标的直线,交纵坐标

于b 点。用镜象法求作切线。 以Z 表示切线和平行线在纵坐标上截距间的距离,显然Z 的长度等于 T c c γ??? ????, 即 T Z c c γ???=- ???? 7、答案:表面张力为什么必须在恒温槽中进行测定? 答案:因为表面张力与温度有关,温度升高,表面张力下降。 8、如果气泡逸出的很快,或几个气泡一齐出,对实验结果有何影响? 答案:如果气泡逸出的很快,或几个气泡一齐出,即气泡形成时间太短,则吸附平衡就来不及在气泡表面建立起来,测得的表面张力也不能反映该浓度之真正的表面张力值。 9、根据什么来控制滴液漏斗的放液速度?对本实验有何影响? 答案:要求气泡从毛细管缓慢逸出,通过控制滴液漏斗的放液速度调节逸出气泡每分钟10个左右。若形成时间太短,则吸附平衡就来不及在气泡表面建立起来,测得的表面张力也不能反映该浓度之真正的表面张力值。 10、测定正丁醇溶液的表面张力时,浓度为什么要按低到高的顺序依次测定? 答案:溶液的表面张力与浓度有关,浓度按低到高的顺序依次测定,可减少由测量瓶清洗不够干净引起的误差。 11、温度变化对表面张力有何影响,为什么? 答案:温度升高,表面张力下降。表面张力与温度有关, 12、测定时如何读取微压力计的压差? 答案:测量时读取微压计上的最大压力。 13、对同一试样进行测定时,每次脱出气泡一个或连串两个所读结果是否相同,为什么? 答案:不同;每次脱出一个气泡结果才准确。如果气泡逸出的很快,或几个气泡一齐出,即气泡形成时间太短,则吸附平衡就来不及在气泡表面建立起来,测得的表面张力也不能反映该浓度之真正的表面张力值。

《C语言程序设计》(江宝钏著)实验八答案

江宝钏实验八 3.一般编程题 1.用指针法统计10个数中正数、负数与零的个数,并分别求正数的总与,负数的总与。#include void main() { int a[10]; int i,*p,sum1,sum2,c1,c2,c3; printf("输入10个整数:"); for(i=0;i<10;i++) scanf("%d",&a[i]); c1=c2=c3=0;sum1=sum2=0; for(p=a;p<(a+10);p++) { if(*p<0){ sum1+=*p;c1++;} if(*p==0){ c2++;} if(*p>0) {sum2+=*p;c3++;} } printf("正数,负数的与:%d %d\n",sum2,sum1); printf("正数、零、负数的个数:%d %d %d \n",c3,c2,c1); }

4.较难编程题 1.输入一行字符,开始用一个指针指向这行字符的开头,并依次向后移,分别统计出其中英 文字母、空格、数字与其它字符的个数。 #include #include #define N 100 void main() { char *p; char str[N]; int c1,c2,c3,c4,i; printf("input a string:"); gets(str); i=strlen(str); c1=c2=c3=c4=0; for(p=str;p='a'&&*p<='z'||*p>='A'&&*p<='Z') c1++;

实验8机考环境测试题及答案

实验8机考环境测试题: 1、用循环结构编程计算下列算式的值 sum=2+4+6+8+10+… +100 要求: **输入格式为:无输入提示信息和输入数据 **输出格式为:"sum=%d\n" 2、编程计算2×3阶矩阵A和3×2阶矩阵B之积C。 矩阵相乘的基本方法是:矩阵A的第i行的所有元素同矩阵B第j列的元素对应相乘,并把相乘的结果相加,最终得到的值就是矩阵C的第i行第j列的值。要求: (1)从键盘分别输入矩阵A和B,输出乘积矩阵C (2) **输入提示信息为:输入矩阵A之前提示:"Input 2*3 matrix a:\n" 输入矩阵B之前提示:"Input 3*2 matrix b:\n" **输入矩阵中每个值的格式为:"%d" **输出格式为:输出矩阵C之前提示:"Results:\n" 输出矩阵C中每个值的格式:"%6d" 输出矩阵C各行结束时换行 例如: Input 2*3 matrix a: 1 2 3 0 1 2 Input 3*2 matrix b: 1 -2 2 3 1 3 Results: 8 13 4 9 参考答案: #include

#define ROW 2 #define COL 3 void main() { int a[ROW][COL], b[COL][ROW], c[ROW][ROW], i, j,k; printf("Input 2*3 matrix a:\n"); for (i=0; i

实验八 函数含答案

实验八函数 【目的与要求】 1.掌握C语言函数的定义方法、函数的声明及函数的调用方法。 2.了解主调函数和被调函数之间的参数传递方式。 【上机内容】 【一般示例】 【例1】将打印18个"*"组成星形线定义为一个返回值和形参列表都为空的函数,通过主函数调用它。 #include void Star(void) //画星形线。函数没有返回值,形参列表也为空 { int i; for(i=1;i<=18;i++) printf("*"); //18个"*"组成星形线 printf("\n"); return ; //返回值类型为void,return后不带表达式,此句可省略 } int main() { Star( ); //单独的函数调用语句,实参表为空,但必须保留括号 printf("I love C language!\n"); Star( ); return 0; } 【例2】调用prime 函数以每行5个素数的格式输出100到200之间的所有素数。

#include #include int prime(int m) //判断素数函数定义 { int i,k,f=1 ; //函数内定义3个变量 if (m==1) //形参若为1 f=0 ; //形参若为1,非素数 k=(int)sqrt(m); for (i=2; i<=k;i++) if (m%i==0) //m被某除数整除 f=0 ; //则不是素数 return f ; //用return语句返回 } //函数体结束 int main( ) { int i,count=0; for (i=101;i<200;i=i+2) //用i作为循环控制变量,从101开始,步长为2 if (prime(i)) //对每一个i,调用prime函数判断它是否为素数 { printf("%5d",i); //如果是素数,输出该素数i count++ ; //素数个数加1 if (count%5==0 ) //每输出5个素数换一行 printf("\n"); }

实验08-1参考答案

实验八指针程序设计 班级:学号:姓名:评分: 一.【实验目的】 1、理解指针、地址和数组间的关系。 2、掌握通过指针操作数组元素的方法。 3、掌握数组名作为函数参数的编程方式。 4、进一步掌握C程序的调试方法和技巧。 二.【实验内容和步骤】 1、程序调试题 A.目标:进一步学习掌握程序调试的方法和技巧。 B.内容:有n个整数,使各数顺序往后循环移动m个位置(m void mov(int *, int, int); int main() { int m, n, i, a[80], *p; printf("Input n, m:"); scanf("%d%d",&n,&m); for(p=a,i=0;i0;j--) x[j]=x[j-1]; /* 调试时设置断点 */ x[0]=k; } } ②运行结果:(提示:通过屏幕截图,贴粘程序运行界面)。

实验8_参考答案

实验8指针与引用(2) 请将自己报告部分,文字和程序代码,加粗 完成下面实验内容和实验要求。 自测题 1.编写函数实现字符串函数strcmp()的功能。 要求:使用指针操作完成题目 ⑴程序代码如下,请补充完整,使程序能运行且运行正确。 #include #include using namespace std; int My_strcmp(char *str1, char *str2) //声明两个字符指针变量str1和str2 { while (*str1==*str2&&*str1!='\0'&&*str2!='\0') // 当对应字符相等且两个字符串未结束时循环,注意*str1和*str2之间是“==”不是“=”,并且两个字符串都要判断是否结束循环{ str1++; str2++;// 将str2指针指向下一个字符 } return (*str1-*str2); /*返回字符串比较结果,根据主函数中r的分支判断确定应该返回的结果*/不要写成str1-str2,这样变成指针值相减,没有意义,另外写成*str1>*str2?1:-1也是可以的 } int main() { char s1[50], s2[50]; cout << "please input the first string : "; cin >> s1; cout << "please input the second string : "; cin >> s2; int r; r = My_strcmp(s1, s2); // 函数调用返回值赋值给r if (r>0) cout << s1 << " is larger!" << endl; else if (r<0)

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