C语言实验五_数组

C语言实验五_数组
C语言实验五_数组

实验(实训)报告

项目名称实验五数组

所属课程名称 C 语言程序设计

项目类型验证性

实验(实训)日期2011/11.16/11.23/11.30

班级10统计2

学号100112100236

姓名裴晓晓

指导教师刘亚楠

浙江财经学院教务处制

一、实验(实训)概述:

【实验目的】

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

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

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

【实验要求】

1.选择合适的数据类型表达应用要求;

2.正确运用循环结构处理数组问题;

3.输入和输出格式清晰,有提示信息。能对输入数据进行基本的合理性判断。

【基本原理】

见第五章课件和课本内容

【实施环境】(使用的材料、设备、软件)

Visual C++ 6.0

二、实验(实训)内容:

第1题

【项目内容】

完成课后第3题。求一个3×3矩阵对角线元素之和。

【方案设计】

提示:请在此粘贴你的完整程序。□

#include

using namespace std;

int main()

{int a[3][3];

int i,j,sum;

sum=0;

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

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

{cin>>a[i][j];

if(i==j)

sum=sum+a[i][j];

}

cout<<"sum="<

return 0;

}【实验(实训)过程】(步骤、记录、数据、程序等)

【结论】(结果、分析)

提示:

请记录该程序的运行过程:输入输出。比如:

123 456↙(↙表示输入,如果没有输入,则没有这一行)

a+b=579 (输出)

并尽可能对程序的执行结果进行分析。□

4 5

5 6

2 34 7

23 5 66

sum=104

第2题

【项目内容】

完成课后第4题。

提示:自定义数组a的大小和内容。插入一个数number到已排好的数组中,可以有以下两种方法:(1)先从数组前面开始比较number和数组元素a[i]的大小,直到找到待插入的正确位置(即a[i-1]

【方案设计】

提示:请在此粘贴你的完整程序。□

#include

using namespace std;

int main()

{int a[11]={2,5,8,17,28,39,58,89,100,298},n,i,j;

cout<<"a[i]="<

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

cout<

cout<

cout<<"n="<

cin>>n;

if(n>a[9])

a[10]=n;

else

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

{if(n

{for (j=9;j>=i;j--)

a[j+1]=a[j];

a[i]=n;

break;}}}

cout<<"the new order:"<

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

cout<

cout<

return 0;

}

【实验(实训)过程】(步骤、记录、数据、程序等)

【结论】(结果、分析)

提示:

请记录该程序的运行过程:输入输出。比如:

123 456↙(↙表示输入,如果没有输入,则没有这一行)

a+b=579 (输出)

并尽可能对程序的执行结果进行分析。□

a[i]=

2 5 8 17 28 39 58 89 100 298

n=

56

the new order:

2 5 8 17 28 39 56 58 89 100 298

第3题

【项目内容】

完成课后第5题。

提示:注意程序的通用性,即考虑数组元素个数为奇数或偶数两种情况下,都可以实现。

【方案设计】

提示:请在此粘贴你的完整程序。□

#include

using namespace std;

int main()

{const int n=6;

int m,i,j,a[n];

cout<<"the origial array:";

cout<

for(i=0;i

cin>>a[i];

cout<

for(i=0;i

for(j=7;j>n/2;j--)

if(i+j==n-1)

{m=a[i];a[i]=a[j];a[j]=m;}

cout<

for(i=0;i

cout<

cout<

return 0;

}

【实验(实训)过程】(步骤、记录、数据、程序等)

提示:请如实记录你在实验过程中出现的错误(如发现错误无法解决,请举手)。□

回答:

【结论】(结果、分析)

提示:

请记录该程序的运行过程:输入输出。比如:

123 456↙(↙表示输入,如果没有输入,则没有这一行)

a+b=579 (输出)

并尽可能对程序的执行结果进行分析。□

the origial array:

14 8 9 78 4 2

the sorted array:

2 4 9 78 8 14

第4题

【项目内容】

完成课后第6题。

提示:杨辉三角形是(a+b)n展开后各项的系数。例如:

(a+b)0展开后为 1 系数为1

(a+b)1展开后为a+b 系数为1,1

(a+b)2展开后为a2+2ab+b2系数为1,2,1

(a+b)3展开后为a3+3a2b+3ab2+b3系数为1,3,3,1

(a+b)4展开后为a4+4a3b+6a2b2+4ab3+b4系数为1,4,6,4,1

以上就是杨辉三角形的前5行。第n行的系数个数为n,各行的系数有以下规律:

(1) 各行第一个数都是1。

(2) 各行最后一个数都是1。

(3) 从第三行起,除上面指出的第一个数和最后一个数外,其余各数是上一行中的同列

和前一列两个数之和。

算法如下:

(1) 使二维数组a第1列和对角线元素的值为1。

(2) 数组其它各元素的值为a[i][j]=a[i-1][j-1]+a[i-1][j]。

(3) 输出数组各元素的值。

【方案设计】

提示:请在此粘贴你的完整程序。□

#include

#include

using namespace std;

int main()

{int i,j,a[11][11];

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

{

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

if(j==1)

a[i][j]=1;

else

if(j==i)

a[i][j]=1;

else

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

}

cout<<"杨辉三角:"<

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

{for(j=1;j<=i;j++)

cout<

cout<<('\n')<

return 0;

}

【实验(实训)过程】(步骤、记录、数据、程序等)

提示:请如实记录你在实验过程中出现的错误(如发现错误无法解决,请举手)。□回答:

【结论】(结果、分析)

提示:

请记录该程序的运行过程:输入输出。比如:

123 456↙(↙表示输入,如果没有输入,则没有这一行)

a+b=579 (输出)

并尽可能对程序的执行结果进行分析。□

杨辉三角:

1

1 1

1 2 1

1 3 3 1

1 4 6 4 1

1 5 10 10 5 1

1 6 15 20 15 6 1

1 7 21 35 35 21 7 1

1 8 28 56 70 56 28 8 1

1 9 36 84 126 126 84 36 9 1

Press any key to continue

第5题

【项目内容】

完成课后第8题。

提示:假定有n个不同的整数n>=1,且它们已经排序并且存放在数组list中,即list[0]<=list[1]<=……<=list[n-1]。要求判定某个整数searchnum是否在数组list中,如果在数组中,则返回下标i,使list[i]=searchnum。如果不在数组list中,就返回-1。如果此数组已经被排序,则可以采用如下折半查找法(binary search)来查找。

设两个变量left和right分别表示被查找表的左边界和右边界,初始化时,left=0,right=n-1。令middle=(left+right)/2为list的中间位置。如果将list[middle]与searchnum进行比较,则会出现下列三种情况:

(1)searchnum

(2)searchnum=list[middle]。此时,返回middle。

(3)searchmun>list[middle]。此时,如果searchnum在数组中,则其一定在middle+1到n-1之间,因此,把查找左边界left设定为middle+1。

如果没有找到searchnum,且数组中还有没检查过的数,那么就重新计算middle 值,并继续查找。

【方案设计】

提示:请在此粘贴你的完整程序。□

【实验(实训)过程】(步骤、记录、数据、程序等)

提示:请如实记录你在实验过程中出现的错误(如发现错误无法解决,请举手)。□回答:

【结论】(结果、分析)

提示:

请记录该程序的运行过程:输入输出。比如:

123 456↙(↙表示输入,如果没有输入,则没有这一行)

a+b=579 (输出)

并尽可能对程序的执行结果进行分析。□

第6题

【项目内容】

完成课后第10题。

【方案设计】

提示:请在此粘贴你的完整程序。□

#include

using namespace std;

int main()

{int i,j,upper,lower,digit,space,other;

char text[3][80];

upper=lower=digit=space=other=0;

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

{cout<<"please input line "<

gets(text[i]);

for (j=0;j<80 && text[i][j]!='\0';j++)

{if (text[i][j]>='A'&& text[i][j]<='Z')

upper++;

else if (text[i][j]>='a' && text[i][j]<='z')

lower++;

else if (text[i][j]>='0' && text[i][j]<='9')

digit++;

else if (text[i][j]==' ')

space++;

else

other++;

}

}

cout<<"upper case:"<

cout<<"lower case:"<

cout<<"digit :"<

cout<<"space :"<

cout<<"other :"<

return 0;

}

【实验(实训)过程】(步骤、记录、数据、程序等)

提示:请如实记录你在实验过程中出现的错误(如发现错误无法解决,请举手)。□

回答:

【结论】(结果、分析)

提示:

请记录该程序的运行过程:输入输出。比如:

123 456↙(↙表示输入,如果没有输入,则没有这一行)

a+b=579 (输出)

并尽可能对程序的执行结果进行分析。

please input line 1

7899009hjunbgtrfvcde vcxzsd45678juyhb,./;'[]][-=0987654321 ASDEWQZXCVBGHY T

please input line 2

RVHUIOL,./;[?><:"{}+_)(*uimnjk987654321!@~#$%^&*(IUYT`~rty78uhbg567890-=[p;.,lk0

please input line 3

tyuiio bhgt5 er456 m,k.l;po0 890iujhtrdxcvbgtyhb ADRGGVGHYHJUJU

upper case:40

lower case:73

digit :48

space :30

other :49

第7题

【项目内容】

完成课后第11题。

【方案设计】

提示:请在此粘贴你的完整程序。□

(1)用字符数组方法。

using namespace std;

void main()

{

char diamond[5][13]={{'*',' ','*',' ','*',' ','*',' ','*'},

{' ','*',' ','*',' ','*',' ','*',' ','*'},

{' ',' ','*',' ','*',' ','*',' ','*',' ','*'},

{' ',' ',' ','*',' ','*',' ','*',' ','*',' ','*'},

{' ',' ',' ',' ','*',' ','*',' ','*',' ','*',' ','*'}};

int i,j;

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

{for(j=0;j<13;j++)

cout<

cout<

}

}

(2)用string方法。

【实验(实训)过程】(步骤、记录、数据、程序等)

提示:请如实记录你在实验过程中出现的错误(如发现错误无法解决,请举手)。□回答:

【结论】(结果、分析)

提示:

请记录该程序的运行过程:输入输出。比如:

123 456↙(↙表示输入,如果没有输入,则没有这一行)

a+b=579 (输出)

并尽可能对程序的执行结果进行分析。□第8题

【项目内容】

完成课后第12题。

提示:可以定义一个数组ch,在其中存放电文。如果字母ch[i]是大写字母,则它是26个字母中的第(ch[i]-64)个大写字母(因为大写字母’A’的ASCII码为65,而它是字母表中第1(65-64)个),按密码规定应将其转换为字母表中第26-(ch[i]-64)+1= 91-ch[i]个字母,该字母的ASCII码为(91- ch[i])+64=155- ch[i]。

小写字母情况与此类似,但小写字母’a’的ASCII码为97,因此处理小写字母的公式应为(26-(ch[i]-96)+1)+96= 219-ch[i]。

由于此密码的规律是对称转换,即第1个字母转换为最后1个字母,最后1个字母转换为第1个字母,因此从原文译为密码和从密码译为原文都是同一个公式。

【方案设计】

提示:请在此粘贴你的完整程序。□

【实验(实训)过程】(步骤、记录、数据、程序等)

提示:请如实记录你在实验过程中出现的错误(如发现错误无法解决,请举手)。□

回答:

【结论】(结果、分析)

提示:

请记录该程序的运行过程:输入输出。比如:

123 456↙(↙表示输入,如果没有输入,则没有这一行)

a+b=579 (输出)

并尽可能对程序的执行结果进行分析。

第9题

【项目内容】

完成课后第13题。

【方案设计】

提示:请在此粘贴你的完整程序。□

(1)用字符数组,不用strcat函数。

(2)用标准库中的strcat函数。

#include

using namespace std;

int main()

{

char str1[]="Welcome to ";

char str2[]="Zhejiang";

strcat(str1,str2);

cout<

return 0;

}

(3)用string方法定义字符串变量。

#include

#include

using namespace std;

int main()

{string string1="Welcome to ";

string string2="Zhejiang";

string1=string1+string2;

cout<

return 0;

}

【实验(实训)过程】(步骤、记录、数据、程序等)

提示:请如实记录你在实验过程中出现的错误(如发现错误无法解决,请举手)。□回答:

【结论】(结果、分析)

提示:

请记录该程序的运行过程:输入输出。比如:

123 456↙(↙表示输入,如果没有输入,则没有这一行)

a+b=579 (输出)

并尽可能对程序的执行结果进行分析。

Welcome to Zhejiang

第10题

【项目内容】

完成课后第14题。

【方案设计】

提示:请在此粘贴你的完整程序。□

【实验(实训)过程】(步骤、记录、数据、程序等)

提示:请如实记录你在实验过程中出现的错误(如发现错误无法解决,请举手)。□回答:

【结论】(结果、分析)

提示:

请记录该程序的运行过程:输入输出。比如:

123 456↙(↙表示输入,如果没有输入,则没有这一行)

a+b=579 (输出)

并尽可能对程序的执行结果进行分析。

第11题

【项目内容】

完成课后第15题。

【方案设计】

提示:请在此粘贴你的完整程序。□

【实验(实训)过程】(步骤、记录、数据、程序等)

提示:请如实记录你在实验过程中出现的错误(如发现错误无法解决,请举手)。□回答:

【结论】(结果、分析)

提示:

请记录该程序的运行过程:输入输出。比如:

123 456↙(↙表示输入,如果没有输入,则没有这一行)

a+b=579 (输出)

并尽可能对程序的执行结果进行分析。

第12题

【项目内容】

完成课后第16题。

【方案设计】

提示:请在此粘贴你的完整程序。□

(1)用字符数组方法。

(2)用string方法。

【实验(实训)过程】(步骤、记录、数据、程序等)

提示:请如实记录你在实验过程中出现的错误(如发现错误无法解决,请举手)。□

回答:

【结论】(结果、分析)

提示:

请记录该程序的运行过程:输入输出。比如:

123 456↙(↙表示输入,如果没有输入,则没有这一行)

a+b=579 (输出)

并尽可能对程序的执行结果进行分析。

第13题

【项目内容】

完成课后第17题。

【方案设计】

提示:请在此粘贴你的完整程序。□

【实验(实训)过程】(步骤、记录、数据、程序等)

提示:请如实记录你在实验过程中出现的错误(如发现错误无法解决,请举手)。□回答:

【结论】(结果、分析)

提示:

请记录该程序的运行过程:输入输出。比如:

123 456↙(↙表示输入,如果没有输入,则没有这一行)

a+b=579 (输出)

并尽可能对程序的执行结果进行分析。

三、指导教师评语及成绩:

评语:

成绩:指导教师签名:

批阅日期:

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

C语言实验报告参考答案 实验一熟悉C语言程序开发环境及数据描述 四、程序清单 1.编写程序实现在屏幕上显示以下结果: The dress is long The shoes are big The trousers are black 答案: #include<> main() { printf("The dress is long\n"); printf("The shoes are big\n"); printf("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() { int a,b,c,x,y;

a=150; b=20; c=45; x=a/b; y=a/c; printf("a/b的商=%d\n",x); printf("a/c的商=%d\n",y); x=a%b; y=a%c; printf("a/b的余数=%d\n",x); printf("a/c的余数=%d\n",y); } (2) #include<> main() { int a,b,c,d; float x; a=160; b=46; c=18; d=170; x=(a+b)/(b-c)*(c-d);

printf("(a+b)/(b-c)*(c-d)=%f\n",x); } 3. 设变量a的值为0,b的值为-10,编写程序:当a>b时,将b赋给c;当a<=b时,将0赋给c。(提示:用条件运算符) 答案: #include<> main() { int a,b,c; a=0; b=-10; c= (a>b) b:a; printf("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语言实验报告(五-数组2)

华北水院高级语言程序设计(C语言)实验报告(五) 2015--2016学年第二学期 2015级专业:学号:姓名:……………………………………………………………………………………………… 一、实验题目:数组(2) 二、实验目的:(略) 三、实验内容 1.有一个数值从小到大排好顺序的数组,要求从键盘输入一个数,将该数插入数组后,数组中的数仍按从小到大有序。例如,数组中原来的顺序为{1,5,11,16,18,21},从键盘输入一个数15,将其插入到该数组后,数组中数的顺序为{1,5,11,15,16,18,21} 源代码:运行结果: #include #include void main () {int a[20]; int i,t,j=0; printf("请输入数字组"); for (t=0;t<6;t++) {scanf("%d",a[t]);}; printf("请输入插入数字"); scanf("%d",&i); for (t=0;i

#include #include void main () {int xh[20]; int cj[20]; int i,j,k,m,sum=0; double b; printf("请输入学号"); for (i=0;i<10;i++) scanf("%d",&xh[i]); printf("请输入学号的成绩"); for (i=0;i<10;i++) scanf ("%d",&cj[i]); for (i=0;i<9;i++) {k=i; for (j=i+1;j<10;j++) {if (cj[k]

C语言程序设计实验报告(数组)

C语言程序设计实验报告(数组) 1实验目的 (1)熟练掌握一维数组,二维数组的定义,初始化和输入、输出方法; (2)熟练掌握字符数组和字符串函数的使用; (3)掌握与数组有关的常用算法(查找、排序等)。 2实验内容 编写函数catStr(char str1[],char str2[])用于进行两个字符串的连接,编写函数lenStr(char str[])用于统计一个字符串的长度,并在主函数中调用。 要求: 1、不允许用strcat()和strlen()字符处理库函数; 2、在主函数以直接初始化的方式输入两个字符串str1和str2.调用函数 strlen()计算并返回两个字符串的长度; 3、调用函数catstr()连接两个字符串(将str2连接在str1后面); 4、调用函数lenstr()计算并返回连接后字符串的长度; 5、在主函数中输入两个原始的字符串及几个字符串的长度,以及处理后字 符串及其长度。

3算法描述流程图

4源程序 #include #include void catStr(char str1[],char str2[]) { int i,j; for (i=0;str1[i]!='\0';i++); for(j=0;str2[j]!='\0';j++) str1[i+j]=str2[j]; str1[i+j]='\0'; } lenStr(char m[] ) {int i;

for (i=0;m[i]!='\0';i++); printf("%d",i); } void main() {char s1[50]="forever",s2[50]="more"; printf("s1=%s,s2=%s",s1,s2); printf("\ns1的长度:"); lenStr(s1); printf("\ns2的长度:"); lenStr(s2); catStr(s1,s2); printf("\n连接后的字符:"); printf("%s\n",s1); printf("连接后字符的长度:"); lenStr(s1); printf("\n"); } 5测试数据 s1=forever, s2=more 6运行结果 7出现问题及解决方法 在输入程序时,少写了半边引号,调试时发现存在错误,找到了错误并加以改正。无论什么事,细心都是必不可少的,认真是解决问题的关键。 8实验心得 通过本次实验,对于函数的定义和声明,数组以及循环语句有了进一步的认识,掌握了字符数组和字符串函数的使用,以及与数组有关的常用算法。此次实验不是调用strlen()和strcat()函数,而是通过自己设计程序来进行字符串的连接以及计量字符串的长度,由此我学会了如何去理清自己的思路来设计程序。

C语言指针实验报告

C语言程序设计实验报告 1实验目得 (1)掌握指针得概念,会定义与使用指针变量; (2)能正确使用变量得指针与指向变量得指针变量; (3)能正确使用数组得指针与指向数组得指针变量; (4)能正确使用字符串得指针与指向字符串得指针变量; 2实验内容 将一个任意整数插入到已排序得整形数组中,插入后,数组中得数仍然保持有序; 要求: (1)整形数组直接由赋值得方式初始化,要插入得整数有scanf()函数数入; (2)算法实现过程采用指针进行处理; (3)输入原始数据以及插入整数后得数据,并加以说明;

3算法描述流程图

4源程序 #include main() { int a[100],m,i,*p,n,w; printf("请输入要输入得数组得元素个数:\n"); scanf("%d",&n); printf("请输入已排好序得数组:\n"); for(i=0;i=w;i--) { a[i+1]=a[i]; } a[i+1]=m; for(i=0;i<=n;i++) { printf("%-4d",a[i]); } printf("\n"); } 5测试数据 “1,3,5,7,9,11,13,15,17,19······10” 6运行结果 7出现问题及解决方法 在编写过程中,

for(i=n-1;a[i]>=w;i--) { a[i+1]=a[i]; } a[i+1]=m; 这一步没有注意a[i++]=m与a[i+1]=m中i++与i+1不同,a[i++]=m就是先将得值赋给a[i],然后在执行自增;而在实验过程中忽略了这一点,造成了不必要得麻烦; 8实验心得 通过这次指针实验掌握了指针得概念,会定义与使用指针变量,并且能利用指针来简单化一些问题,给以后得编程带来了很大得便利;

C语言实验报告《数组》.doc

《c语言程序设计》课程实验报告 ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡篇二:c语言实验报告本(数组函数) 《c语言程序设计》 实验报告 2009~2010学年第二学期 专业 班级 姓名 学号 任课教师 计算机教学实验中心 2010年 5 月 《c语言程序设计》实验报告( 1 ) 学号:姓名:班级:成绩: 任课教师签名: 《c语言程序设计》实验报告( 2 ) 学号:姓名:班级:成绩: 任课教师签名:篇三:c语言实验报告数组 实验报告 实验课程名称高级c语言程序设计 实验项目名称数组 年级 09 级 专业数学 学生姓名李军 学号 0907010170 理学院 实验时间: 2010 年 4 月 22 日 学生实验室守则 一、按教学安排准时到实验室上实验课,不得迟到、早退和旷课。 二、进入实验室必须遵守实验室的各项规章制度,保持室内安静、整洁,不准在室内打闹、喧哗、吸烟、吃食物、随地吐痰、乱扔杂物,不准做与实验内容无关的事,非实验用品一律不准带进实验室。 三、实验前必须做好预习(或按要求写好预习报告),未做预习者不准参加实验。 五、实验中要节约水、电、气及其它消耗材料。 六、细心观察、如实记录实验现象和结果,不得抄袭或随意更改原始记录和数据,不得擅离操作岗位和干扰他人实验。 七、使用易燃、易爆、腐蚀性、有毒有害物品或接触带电设备进行实验,应特别注意规范操作,注意防护;若发生意外,要保持冷静,并及时向指导教师和管理人员报告,不得自行处理。仪器设备发生故障和损坏,应立即停止实验,并主动向指导教师报告,不得自行拆卸查看和拼装。 八、实验完毕,应清理好实验仪器设备并放回原位,清扫好实验现场,经指导教师检查认可并将实验记录交指导教师检查签字后方可离去。 九、无故不参加实验者,应写出检查,提出申请并缴纳相应的实验费及材料消耗费,经

C语言数组实验报告

深圳大学实验报告课程名称:程序设计基础 实验项目名称:数组 学院:光电工程学院 专业:光电信息科学与技术 指导教师:杨艳丽 报告人:温宏宇学号:2015170174班级:4班 实验时间:2016-5-12 实验报告提交时间: 教务处制

程序核心代码: #include void main() { int a[11]; int i, j, t, p, number; printf("Input 10 numbers:\n"); for (i = 0; i<10; i++) scanf("%d", &a[i]); for (i = 0; i<9; i++) for (j = 0; j<9 - i; j++) if (a[j]>a[j + 1]) { t = a[j]; a[j] = a[j + 1]; a[j + 1] = t; } printf("The sorted numbers:\n"); for (i = 0; i<10; i++) { printf("%d ", a[i]); } 2.程序分析: #include void main() { int a[11]; int i, j, t, p, number; printf("Input 10 numbers:\n"); for (i = 0; i<10; i++) scanf("%d", &a[i]); for (i = 0; i<9; i++) for (j = 0; j<9 - i; j++) if (a[j]>a[j + 1]) { t = a[j]; a[j] = a[j + 1]; a[j + 1] = t; } printf("The sorted numbers:\n"); for (i = 0; i<10; i++) { printf("%d ", a[i]); }

C语言数组实验报告

实验名:数组 一、实验目的 1、掌握数组定义的规则。 2、掌握C语言数组的基本用法。 二、实验内容 ) 题目1 1、编写程序,测试下列数组的定义方式是否正确 (1) main() { int n; scanf(“%d”,&n); int a[n]; …… } (2) main() { const int n=10; int a[n]; } (3) #include #define M 10 main() { int a[M]; } (4) main() { int a[2+2*4]; } (5) #include #define M 2 #define N 8 main() { int a[M+N]; } 通过这一实验,可以说明什么问题? 2、输入和输出信息描述及数据类型确定; 、输入数据 序号输入数据描述数据类型

(1)n,a[n] int (2)n a[n] cons tint int (3)a[M]或a[10] int (4)a[2+2*4] int (5)a[M+N] int 3、程序调试 错误序号错误信息(列出出错语句以及出 错提示) 是否 解决 解决方法 (1-1)main.c|5|error: expected expression before '%' token| scanf(“%d”,&n);是将%d两边的符号改为西文字符的引号scanf("%d",&n); (1-2)main.c|6|warning: unused variable 'a' [-Wunused-variable]| int a[n]; 是将前面的n的输入去掉,把n改为具体数字 (5) main.c|6|warning: unused variable 'a' [-Wunused-variable]| int a[M+N]; 是加上个scanf(“%d”,&a[M+N]); 4、相关问题回答 通过这一实验,可以说明什么问题? 1、(2)(3)(4)(5)对,(1)错,(1)中a[n]的数组定义的【】里的常量表达式不能是变量。 2、一维数组定义的时候【】里的常量表达式包括常量和符号常量,但不能是变量。 ) 题目2 1、运行下面的C程序,根据运行结果,可以说明什么? main( ) { int num[5]={1,2,3,4,5}; inti i; for(i=0;i<5;i++) printf(“%d”,num[i]); } 2、输入和输出信息描述及数据类型确定; 、输入数据 序号输入数据描述数据类型 1 num[5],i int (2)输出数据 序号输出数据描述数据类型 1 num[i] int 3、程序源代码(填写程序调试正确后的代码) #include int main( ) { int num[5]={1,2,3,4,5}; /*定义num[5]*/ int i; for(i=0;i<5;i++) /*下标应该是0到4*/ printf("%d",num[i]); /*依次输出num[0]至num[4]*/ return 0; } 4、程序调试 错误序号错误信息(列出出错语句以及出错 提示) 是否解决解决方法

C语言:数组的应用实验报告

课程名称:结构化程序设计与C语言开课实验室:年月日 一、实验目的 用C语言编写和调试数组的程序,包括一维数组和二维数组。从而对数组的程序设计有比较深入的了解。 二、内容及结果 1、程序二选择排序法 1)题目:用选择法对10个整数排序。 2)代码: #include<> int main() { int a[10]; int i,j,t; printf("input 10 numbers:\n"); for(i=0;i<10;i++) scanf("%d",&a[i]); printf("\n"); for(j=0;j<9;j++) for(i=0;i<9-j;i++) if(a[i]>a[i+1]) {t=a[i];a[i]=a[i+1];a[i+1]=t;} printf("the sorted numbers:\n");

printf("%d",a[i]); printf("\n"); return 0; } 3)运行截图: 2、程序二将一个数组中的值按逆序重新存放。 1)题目:将一个数组中的值按逆序重新存放。 2)代码: # include <> int main () { int a[5]={8,6,5,4,1}; int i,t; for(i=0;i<=2;i++) { t=a[i]; a[i]=a[4-i]; a[4-i]=t; }

printf("%d ",a[i]); return 0; } 3)运行截图: 3、程序三输出杨辉三角形(10行) 1)题目:输出杨辉三角形(10行) 2)代码: #include<> int main() { int yh[10][10]={0}; int i,j; for(i=0;i<10;i++) yh[i][0]=1; for(i=1;i<10;i++) for(j=1;j<10;j++) yh[i][j]=yh[i-1][j-1]+yh[i-1][j]; for(i=0;i<10;i++) { for(j=0;j

C语言程序设计实验报告

C语言程序设计实验报告 实验名称计算出1000以内10个素数之和 实验目的 1、熟练掌握if、if…else、if…else if语句和witch语句格式及使用方法,掌握if语句中的嵌套关系和匹配原则,利用if语句和switch语句实现分支选择结构。 2、熟练掌握while语句、do…while语句和for语句格式及使用方法,掌握三种循环控制语句的循环过程以及循环结构的嵌套,利用循环语句实现循环结构。 3、掌握简单、常用的算法,并在编程过程中体验各种算法的编程技巧。进一步学习调试程序,掌握语法错误和逻辑错误的检查方法。 实验内容 计算并输出1000以内的10个素数以及它们的和。 要求: 在程序内部加必要的注释。

由于偶数不是素数,可以不考虑对偶数的处理。 虽然在1000以内的素数超过10个,但是要对1000以内不够10个素数的情况进行处理。 输出形式为:素数1+素数2+素数3+…+素数10=总和值。 算法描述流程图 Main函数: 判断素数: 源程序 #include #include int sushu(int n)/* 判断素数的函数*/ { int t,i; t=sqrt(n); for(i=2;i1;i-=2)/* x为奇数时,做函数计算*/ { n=sushu(i); /* 做判断素数的函数调用*/

( 励志天下) if(n!=0)/* 对素数的处理*/ { a[j]=n;/* 把素数由大至小存入数组a[ ]中*/ j++; if(j<11) m+=n; /* 统计前10个素数之和*/ } } if(j<10)/* 当素数个数小于10个时,结果输出*/ { for(i=0;i { n=a[i]; printf("%d",n); printf("+");

c语言实验报告(同名3848)

c语言实验报告(同名3848)

C语言程序设计实验报告 1实验目的 ⑴掌握指针的概念,会定义和使用指针变量; ⑵能正确使用变量的指针和指向变量的指针变量; ⑶能正确使用数组的指针和指向数组的指针变量; ⑷能正确使用字符串的指针和指向字符串的指针变量。 2实验内容 编写函数upCopy(char *new,char *old),将old指针所指向字符串中的大写字母复制到new指针指向的字符串中,并在主函数中调用该函数。 要求: ①画出算法的流程图。 ②在主函数中以直接初始化的方式输入一个字符串。 ③在主函数中调用upCopy()函数,输出old指针和new指针指向的字符串。 3算法描述流程图 4源程序 #include void upCopy(char *new,char *old); void main() { char a[20]=("foiwheEIfjiEfj"); char b[20]; upCopy(b,a);

printf("复制之前的字符串为:"); puts(a); printf("复制之后的字符串为:"); puts(b); } void upCopy(char *new,char *old) { int i,j; j=0; for(i=0;i<20;i++) { if(*(old+i)>=65&&*(old+i)<=90) { *(new+j)=*(old+i); j++; } } *(new+j)='\0'; } 5测试数据 无测试数据。 6运行结果

7出现问题及解决方法 出现的问题是: ①在运用scanf()函数时,由于跟printf()混淆,变量地址的位置忘记输取地 址符“&”,解决办法就是加上取地址符“&”。 ②在找到该插入的位置后,进行后面的数据向后一个数据为调换的时候,没 有注意到“++”运算和“--”运算全部都作用在q上面,都在改变存储的q 的值。解决方法就是用加1的运算来代替自增运算,这样就只有自减运算 在改变q的值,程序即可正常运行。 8实验心得 通过这个实验,掌握了如何定义数组的指针和指向数组的指针变量。同时在程序编写过程中学习到了如何用for循环来寻找数组中某个元素对应的下标。另外,在自己的错误中我还学到了要牢记C语言中各种函数的语法格式,这样才能避免一些不该犯的错误。同时在逻辑上要慎重的同时使用自增和自减运算符,这种逆运算会直接影响变量的存储值。 C语言程序设计实验报告 1实验目的 ⑴掌握指针的概念,会定义和使用指针变量; ⑵能正确使用变量的指针和指向变量的指针变量; ⑶能正确使用数组的指针和指向数组的指针变量; ⑷能正确使用字符串的指针和指向字符串的指针变量。

C语言数组的应用实验报告

C语言数组的应用实验 报告 集团文件版本号:(M928-T898-M248-WU2669-I2896-DQ586-M1988)

课程名称:结构化程序设计与C语言开课实验室:年月日 一、实验目的 用C语言编写和调试数组的程序,包括一维数组和二维数组。从而对数组的程序设计有比较深入的了解。 二、内容及结果 1、程序二选择排序法 1)题目:用选择法对10个整数排序。 2)代码: #include int main() { int a[10]; int i,j,t; printf("input 10 numbers:\n"); for(i=0;i<10;i++) scanf("%d",&a[i]); printf("\n"); for(j=0;j<9;j++) for(i=0;i<9-j;i++) if(a[i]>a[i+1]) {t=a[i];a[i]=a[i+1];a[i+1]=t;} printf("the sorted numbers:\n"); for(i=0;i<10;i++)

printf("%d",a[i]); printf("\n"); return 0; } 3)运行截图: 2、程序二将一个数组中的值按逆序重新存放。 1)题目:将一个数组中的值按逆序重新存放。 2)代码: # include int main () { int a[5]={8,6,5,4,1}; int i,t; for(i=0;i<=2;i++) { t=a[i]; a[i]=a[4-i]; a[4-i]=t; } for(i=0;i<=4;i++) printf("%d ",a[i]); return 0; } 3)运行截图: 3、程序三输出杨辉三角形(10行)

c语言实验7数组实验报告

实验报告 课程名称程序设计 实验项目名称数组 班级与班级代码14级计算机科学与技术1班实验室名称(或课室) SS1-332 专业计算机科学与技术 任课教师 学号: 姓名: 实验日期:2014年月日 广东商学院教务处制

一.实验目的 1.熟练掌握一维数组、二维数组的定义、赋值、输入、输出方法。 2.熟练掌握字符数组和字符串函数的使用。 3.熟练掌握一位数组以及一位数组元素的存储关系。 4.熟练掌握一位数组和二维数组的使用以及在函数中的传递。 5.通过上机实践掌握与数组有关的算法。 二、实验内容 上机题1输入并运行以下程序。 实验内容:用2个数组对第3个数组进行赋值 #include main() {int i,a[5],b[5],c[5]; a[0]=2,a[1]=6,a[2]=4,a[3]=8,a[4]=9; b[0]=2,b[1]=7,b[2]=9,b[3]=5,b[4]=3; for(i=0;i<=4;i++) {c[i]=a[i]*b[i]; printf("c[%d]=%d\n",i,c[i]); } } 实验步骤○1int a[5]:整型一维数组说明,a是数组名,也是数组的起始地址,该数组可以存储5个整数。a[0]~a[4]也可以看成是变量标识字符,[]中的数值称为数组下标,下标从0开始。 ○2数组赋值方法和一般变量一样。例如,a[0]=2表示将2赋给a[0]。

运行结果 上机题2 输入并运行以下程序。 实验内容:对不指明数组的数组进行赋值并用循环结构进行求和#include main() {int sum,i; int a[]={5,8,4,6,4,3,8,2,4,5,6}; sum=0; for(i=0;i<=10;i++) sum+=a[i]; printf("sum=%d\n",sum); } 实验结果

C语言实验报告数组

C 语言实验报告 实验名称专业 姓名学号 班级指导老师 实验七数组 1. 实验目的 (1))熟练掌握一维数组、二维数组的定义、初始化和输入/输出方法;(2))熟练掌握字符数组和字符串函数的使用; (3))掌握与数组有关的常用算法(如查找、排序等)。 2. 实验指导 (1))对任意一个一维型数组,从中找出数组元素的最大值和最小值并输出。要求: ①数组有十个元素; ②使用scanf 函数实现数组元素的输入前给出必要的提示; ③输出时,首先输出数组的十个元素,然后输出其最大值和最小值。 分析指导: ①算法分析:首先定义一个数组,通过循环从键盘输入十个数组元素的值,再 通过另一个循环判断数组元素的最大只和最小值; ②根据分析情况编写程序: #include main() { int a[10],i,max,min; printf("please input ten integers:"); for(i=0;i<=9;i++) { scanf("%d",&a[i]); } max=a[0]; min=a[0]; for(i=1;i<=9;i++) { if(a[i]>max) max=a[i]; if(a[i]

(2) ) 编写函数 cmpStr(char s1[],char s2[]) 比较两个字符串 s1 和 s2 的大小。如果s1>s2, 返回一个正数 ;s1=s2, 返回 0; s1

c语言实验报告五 一维数组

《C程序设计》课程实验报告 学院:班级:姓名:学号: 实验设备:计算机1台实验日期:2011年3月1日 实验项目名称一维数组 实验目的 掌握一维数组的定义、初始化,以及一维数组元素的下标法引用。 实验要求: 掌握一维数组的定义、初始化,以及一维数组元素的下标法引用,并能编写简单程序。 实验内容(包括步骤): 1.数组a中存放10个非0整数,编写程序,将数组a中的所有正数存放在数组的前面,负数存放在数组的后面。 要求:(1)数组元素值从键盘输入。 (2)用下标法。 2.将数组a中的10个元素后移m位,移出的m位顺序存放在数组的前位。 要求:(1)数组元素值在程序中初始化。 (2)m的值从键盘输入。 (3)用下标法。

调试与结果测试: 代码注释: 5-1 #include int main() { int a[10]; int i; for(i=0;i<10;i++) scanf("%d",&a[i]); printf("\n"); for(i=0;i<10;i++) if(a[i]>0) printf(" %d",a[i]); for(i=0;i<10;i++) if(a[i]<0) printf(" %d",a[i]); printf("\n"); return 0;

5-2 #include int main() { int a[10]={1,2,3,4,5,6,7,8,9,10}; int m,n,r,i; printf("please input a number:\n"); scanf("%d",&m); for(n=9;n>=0;n--) a[n+m]=a[n]; for(r=m-1;r>=0;r--) a[r]=a[10+r]; for(i=0;i<10;i++) printf("%d ",a[i]); printf("\n"); return 0; } ――――――――――――以下内容为教师填写―――――――――――――――教师评阅:

C语言实验报告九

数学与软件科学学院实验报告 学期:_2013_至_2014_ 第1 学期 2013_年12_月09_日 课程名称: 程序设计基础教程-C语言_ 专业:_数学与应用数学_2012_级_1班实验编号: 09实验项目:结构体和共用__ 指导教师__ ____ 姓名:学号:实验成绩: 一、实验目的及要求 (1) 掌握C语言环境下结构体和共用体类型变量的定义和使用方法; (2) 掌握结构体类型数组的概念和使用; (3) 掌握指向结构体变量的指针变量、尤其是链表概念; 二、实验内容 1.首先熟悉结构体类型变量的基本声明方法、结构体类型变量的内存分配原则、初始化和引用结构体变量及其成员变量的基本方法;然后掌握结构体变量的输入、输出方法。(参见教材例10-1~10-5) 2.基于结构体数组的应用实验。 (1) 有n个学生,每个学生的数据包括学好(num)、姓名(name[20])、性别(sex)、年龄(age),以及三门课程的成绩(score[3])。要求:在main()函数中输入这些学生的这些数据,然后设计一个函数count()来计算每个学生的总分和平均分,最后,打印出所有数据信息(包含原来输入的学生原始数据信息和求解出来的新信息)。 (2)对第(1)题实验,求出其中成绩最好的人和成绩最差的人,并显示出来。(假定成绩最好和最差的人都只有一个) (3)*如果假定成绩最好和最差的人的个数不一定唯一,程序应该如何修改才能完成求出所有最好和最差者,以及输出它们来。 3.*链表实验。 (1) 建立一个链表,每个结点包含:职工号、工资。用malloc()函数开辟新结点,用free()函数回收不用的结点空间。要求从键盘输入5个员工的数据信息(用create_list()),然后,用函数output_list()将它们一一打印出来,用free_list()将链表中的结点空间回收。假设职工编号为1001,1005,1008,1010,1101。 注:malloc()和free()为系统函数。create_list(),output_list(),free_list()为用户自定义函数。 (2)在(1)的基础上,新增一个函数inset_node()插入员工1006和1032的数据信息。要求新插入的员工后,员工仍然按职工号顺序排列。 (3) 在(2)的基础上,新增一个函数delete_node(),可以用来将指定员工的数据从链表中删除。

C语言程序设计实验报告(实验大纲+过程)

《C程序设计》实验教学大纲 一、适用范围 大纲适用信息管理专业本科教学使用。 二、课程名称 C程序设计 三、学时数与学分 总学时:90 总学分:4 实验学时:28 实验学分:1 四、教学目的和基本要求 目的:通过C程序设计实验,培养学生对学习程序设计的兴趣,加深对讲授内容的理解,尤其是通过上机来掌握语法规则,使学生全面了解 C 语言的特点,熟练掌握 C 语言程序设计的基本方法和编程技巧。 基本要求:了解和熟悉C语言程序开发的环境;学会上机调试程序,善于发现程序中的错误,并且能很快地排除这些错误,使程序能正确运行,达到实验知识和理论知识的融会贯通。上机实验前,学生必须事先根据题目的内容编好程序,然后在实验时输入程序、调试程序、直至运行结果正确为止,上机结束后,应整理出实验报告。 五、实验项目与学时分配 序号实验项目名称实验 学时 实验类型 1 C程序的运行环境和运行一个C程序的方法 2 验证性实验 2 数据类型、运算符和表达式 3 验证性实验 3 最简单的C程序设计 3 验证性实验 4 选择结构程序设计 4 设计性实验 5 循环控制 4 设计性实验 6 数组 4 设计性实验 7 函数 4 设计性实验 8 指针 4 设计性实验 总计28 注:带*的实验项目为选做实验项目 六、教材、讲义及参考书 《C程序设计题解与上机指导》谭浩强主编清华大学出版社 七、实验成绩评定办法 实验成绩=平时实验表现+实验报告。实验成绩占总成绩的20%。 实验成绩以等级形式给出,评定等级分优、良、中、及格、不及格五类。 1、平时考核:上机实验前,学生必须事先根据题目的内容编好程序,然后在实验时输入程序、调试程序、直至运行结果正确为止。在实验中,教师可根据学生编程操作能力、观察和分析及运用知识能力、程序编制正确性以及学生的课堂纪律、实验态度、保持实验室卫生等方面的表现进行综合考核。

C语言实验报告 数组

C语言实验报告 实验七数组 1.实验目的 (1)熟练掌握一维数组、二维数组的定义、初始化和输入/输出方法; (2)熟练掌握字符数组和字符串函数的使用; (3)掌握与数组有关的常用算法(如查找、排序等)。 2.实验指导 (1)对任意一个一维型数组,从中找出数组元素的最大值和最小值并输出。要求: ①数组有十个元素; ②使用scanf函数实现数组元素的输入前给出必要的提示; ③输出时,首先输出数组的十个元素,然后输出其最大值和最小值。 分析指导: ①算法分析:首先定义一个数组,通过循环从键盘输入十个数组元素的值,再 通过另一个循环判断数组元素的最大只和最小值; ②根据分析情况编写程序: #include main() { int a[10],i,max,min; printf("please input ten integers:"); for(i=0;i<=9;i++) { scanf("%d",&a[i]); } max=a[0]; min=a[0]; for(i=1;i<=9;i++) { if(a[i]>max) max=a[i]; if(a[i]

min=a[i]; } for(i=0;i<=9;i++) { printf("a[%d]=%d\n",i,a[i]); } printf("The maximum value is %d,and the minimum value is %d\n",max,min); } 运行程序,输入十个整数,如: 21 37 6 17 9 12 89 76 35 59 运行结果如下: (2)编写函数cmpStr(char s1[],char s2[])比较两个字符串s1和 s2的大小。 如果s1>s2,返回一个正数;s1=s2,返回0;s1

C语言实验报告 数组

实验七数组 1.实验目得 (1)熟练掌握一维数组、二维数组得定义、初始化与输入/输出方法; (2)熟练掌握字符数组与字符串函数得使用; (3)掌握与数组有关得常用算法(如查找、排序等). 2.实验指导 (1)对任意一个一维型数组,从中找出数组元素得最大值与最小值并输出。要求: ①数组有十个元素; ②使用scanf函数实现数组元素得输入前给出必要得提示; ③输出时,首先输出数组得十个元素,然后输出其最大值与最小值。 分析指导: ①算法分析:首先定义一个数组,通过循环从键盘输入十个数组元素得值,再通 过另一个循环判断数组元素得最大只与最小值; ②根据分析情况编写程序: #include<stdio、h> main() { int a[10],i,max,min; printf(”please input ten integers:"); for(i=0;i<=9;i++) { scanf(”%d",&a[i]); } max=a[0]; min=a[0]; for(i=1;i〈=9;i++) { if(a[i]〉max) max=a[i]; if(a[i]〈min) min=a[i]; } for(i=0;i〈=9;i++) {

printf("a[%d]=%d\n”,i,a[i]); } printf(”The maximum value is%d,and the minimum value i s%d\n",max,min); } 运行程序,输入十个整数,如: 21 37 6 17 9 12 89 76 35 59 运行结果如下: (2)编写函数cmpStr(char s1[],char s2[])比较两个字符串s1与 s2得大小。如果s1>s2,返回一个正数;s1=s2,返回0;s1〈s2,返回一个负数,在主函数中调用该函数完成字符串得比较操作,并输出返回得值。要求: ①不允许使用strcmp()函数; ②用gets()函数在主函数中输入两个字符串; ③实现触摸屏受托人()函数,返回得正数或负数得绝对值应该就是进行比较得 两个字符传中相应字符得ASCII码得差值。 分析指导: ①算法分析:两个字符串从第一个字符开始一一对应进行比较,直到不相等得 那个字符,从而求得它们得ASCII码得差值。比如,‘A’与‘C’相比,由于‘A’<‘C’,应输出负数,由于‘A'与‘C’得ASCII码得差值为2,因此,应输出“-2”。同理,“And”与“Aid”比较,根据第二个字符比较结果,‘n’比‘I’大5,因此应输出‘5’; ②根据分析情况编写程序: #include〈stdio、h〉 int cmpstr(char s1[],char s2[]) {

数组(C语言实验报告)

仲恺农业工程学院实验报告纸信息学院(院、系)专业班C语言程序设计课 实验目的: (1)掌握一维和二维数组的定义、赋值和输入输出方法。 (2)掌握字符数组和字符串函数的使用。 (3)掌握与数组有关的算法。 实验内容与总结: 编程练习 1、输入一个字符串,统计其中字母、数字、空格和其他字符各多少个。 程序如下: #include #define N 100 void main() { int i,letter,number,space,other; char c[N]; letter=number=space=other=0; printf("请输入字符串:\n"); gets(c); for(i=0;i='a'&&c[i]<='z')||(c[i])>='A'&&c[i]<='Z') letter++; else if(c[i]>='0'&&c[i]<='9') number++; else if(c[i]==' ') space++; else other++; } printf("字母%d 数字%d 空格%d 其它字符%d\n",letter,number,space,other); } (1)程序编制要点: ①一维数组的定义、赋值和输入输出方法; ②gets函数的表达。 (2)该题目涉及的知识点和难点: ①一维数组的输入输出; ②for语句的输入与使用; ③if语句的使用;

④gets函数的使用。 2、输出杨辉三角形。教材p153-7.6 程序如下: #include #define N 10 void main() { int i,j,a[N][N]; /*数组为10行10列*/ printf("杨辉三角形的前10行如下:\n"); for(i=0;i

相关文档
最新文档