湖北理工学院C语言实验四_第1页
湖北理工学院C语言实验四_第2页
湖北理工学院C语言实验四_第3页
湖北理工学院C语言实验四_第4页
湖北理工学院C语言实验四_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选优质文档-倾情为你奉上实验四 数 组实验课程名:C语言程序设计专业班级: 学号: 姓名: 实验时间: 实验地点: K4-102 指导教师: 杨慧 一、实验目的和要求1. 掌握一维数组和二维数组的定义、赋值和输入输出的方法;2. 掌握字符数组和字符串函数的使用;3. 掌握与数组有关的算法(特别是排序算法)。二、实验内容1. 调试下列程序,使之具有如下功能:输入10个整数,按每行3个数输出这些整数,最后输出10个整数的平均值。写出调试过程。#include <stdio.h>#define N 10void main( ) int i,aN,av;for(i=0;i<N;i+

2、)      scanf("%d",ai);     for(i=0;i<N;i+)         printf("%d",ai);           if(i%3=0)         &

3、#160;   printf("n");               for(i=0;i!=N;i+)         av+=ai;      printf("av=%fn",av);  解答:(1) 源代码

4、:#include <stdio.h>void main( ) int i,n,a10; float avg; n = 10; for(i=0;i<n;i+) scanf("%d",&ai); for(i=0;i<n;i+) printf("%d ",ai); if(i+1)%3=0) printf("n"); avg=0; for(i=0;i<n;i+) avg+=ai; avg/=10; printf("avg = %fn",avg);(2) 运行结果:(3)运行结果分析:

5、2. 下面程序是输入5个数据,然后求它们的和并输出结果。#include <stdio.h>void main( )int i, a5, sum = 0; scanf("%d,%d,%d,%d,%d", a ); for (i = 0; i <= 4; i +) sum += ai; printf("sum = %d n", sum);该程序中有哪些错误?如何修改?写出正确运行后的结果。解答:(1) 源代码:#include <stdio.h>void main() int i, a5,sum = 0; scanf(&quo

6、t;%d %d %d %d %d",&a0,&a1,&a2,&a3,&a4); for(i=0;i<=4;i+) sum+=ai; printf("sum=%dn",sum);(2)运行结果: (3)运行结果分析:3. 有一个3行4列的距阵,现要求编程求出其中最大的那个元素的值,以及它所在的行号与列号。下面程序的初始说明和输出语句如下所示,请补充完成该程序。#include <stdio.h>void main( )int i, j, row, colum, max;static int a34 = 1,2

7、,3,4, 9,8,7,6, -10,10,-5,2; printf(" Max = %d, Row = %d, Colum = %d n", max, row, colum);解答:(1) 源代码:#include <stdio.h>void main()int i, j, row=0, colum=0, max;int a34=1,2,3,4,9,8,7,6,-10,10,-5,2;max=a00;for(i=0;i<=2;i+)for(j=0;j<=3;j+)if(aij>max)max=aij;row=i;colum=j;printf(

8、"max=%d,row=%d,colum=%dn",max,row,colum);(2)运行结果: (3)运行结果分析:4. 数组中已存互不相同的10个整数,从键盘输入一个整数,输出与该值相同的数组元素下标。解答:(1) 源代码:#include <stdio.h>void main( ) int i, x, a10=1,2,3,4,5,6,7,8,9,10;scanf("%d",&x);for ( i=0; i<10; i+ )if(x=ai)printf("%d",i); break;if(i=10)pr

9、intf("not foundn"); (2)运行结果: (3)运行结果分析:5. 编写程序,任意输入10个整数的数列,先将整数按照从大到小的顺序进行排序,然后输入一个整数插入到数列中,使数列保持从大到小的顺序。解答:(1) 源代码:#include <stdio.h>#define SIZE 20void main()printf("请输入10个整数:n");int aSIZE;int n=10,i,j,k,b;for(i=0;i<n;i+)scanf("%d",&ai);for(i=0;i<n;i+

10、)for(j=i+1;j<n;j+)if(ai<aj)b=ai; ai=aj;aj=b;printf("排序后的数为:n");for(i=0;i<n;i+)printf(" %d ",ai);printf("n");printf("请输入要插入的一个数:n");int c;scanf("%d",&c);n=n+1;for(i=0;i<n-1;i+) if(c>=ai) for(j=n-1;j>i;j-) aj=aj-1; ai=c; printf(&q

11、uot;插入后的数组为:n"); for(k=0;k<n;k+) printf(" %d ",ak); printf("n"); return; (2)运行结果: (3)运行结果分析:6. 输入十个互不相同的整数并存在数组中,找出最大元素,并删除。解答:#include <stdio.h>int main() int a10; int i,k; for(i=0;i<10;i+) scanf("%d",&ai); k=0; for(i=1;i<10;i+) if(ak<ai) k=i

12、; for(i=k;i<9;i+) ai=ai+1; for(i=0;i<9;i+) printf("%4d",ai);(1)运行结果:(2)运行结果分析:7. 以下程序的功能是:从键盘上输入若干个学生的成绩,统计计算出平均成绩,并输出低于平均分的学生成绩,用输入负数结束输入。请填空:#include <stdio.h>void main( ) float x1000, sum=0.0, ave, a; int n=0, i; printf ("Enter mark : n") ; scanf("%f", &a

13、mp;a); while (a>=0.0 && n<1000) sum+= ; xn= ; n+; scanf("%f", &a); ave= ; printf ("Output : n"); printf ("ave = %fn", ave); for (i=0; i<n; i+) if ( ) printf("%fn", xi);解答:(1) 源代码:#include <stdio.h> void main( ) float x1000, sum=0.0,

14、ave, a; int n=0, i; printf ("Enter mark : n"); scanf("%f", &a); while (a>=0.0 && n<1000) sum+=a ; xn=a ; n+; scanf("%f", &a); ave= sum/n ; printf ("Output : n"); printf ("ave = %fn", ave); for (i=0; i<n; i+) if (xi<ave ) p

15、rintf("%fn", xi); (2)运行结果: (3)运行结果分析:8. 综合编程题:打印如下杨辉三角形1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 解答:(1) 源代码:#include <stdio.h> void main() int i,j,a66; for(i=0;i<6;i+) ai0=1;aii=1; for(i=2;i<6;i+) for(j=1;j<=i-1;j+) aij=ai-1j-1+ai-1j; for(i=0;i<6;i+) for(j=0;j<=i;j+)

16、 printf("%3d",aij); printf("n"); (2)运行结果: (3)运行结果分析:9. 调试下列程序,使之具有如下功能:任意输入两个字符串(如:“abc 123”和“china”),并存放在a,b两个数组中。然后把较短的字符串放在a数组,较长的字符串放在b数组。并输出。#include <stdio.h>#include <string.h> void main() char a10,b10; int c,d,k,ch; scanf("%s",&a); scanf("%s

17、",&b); printf("a=%s,b=%sn",a,b); c=strlen(a); d=strlen(b); if(c>d) for(k=0;k<d;k+) ch=ak;ak=bk;bk=ch; printf("a=%sn",a); printf("b=%sn",b); 解答:(1) 源代码:#include<stdio.h>#include<string.h>void main() char a100,b100; char str1100,str2100; scanf(&

18、quot;%s%s",str1,str2); strcpy(a,strlen(str1)<strlen(str2)?str1:str2); strcpy(b,strlen(str1)>strlen(str2)?str1:str2); printf("a = %sn",a); printf("b = %sn",b);(2)运行结果: (3)运行结果分析:10. 阅读下面的程序,然后回答后面的问题:#include <stdio.h>#include <string.h> void main( ) char s1

19、80, s240; int i = 0, j = 0; printf(" n Please input string1:"); scanf("%s", s1); printf(" n Please input string2:"); scanf("%s", s2); while (s1i!= '0' )i+; while (s2j!= '0' )s1i+=s2j +; s1i= '0' printf("n New string: %s", s1);

20、编辑、运行该程序,然后分别输入Country 和side。请问:程序执行的结果是什么?该程序的功能是什么?解答:(1)源代码:(2)运行结果: (3)运行结果分析:11. 填空完成下面程序,使其功能是对从键盘上输入的两个字符串进行比较,然后输出两个字符串中第一个不相同字符的ASCII码之差。例如:输入的两个字符串分别为abcdefg和abceef,则输出为-1。程序如下: #include <stdio.h> void main ( ) char str1100,str2100; int i,s; printf("n Input string 1:n");get

21、s(str1); printf(“n Input string 2:n”);gets(str2); i= (1) ; while(str1i=str2i)&&(str1i!= (2) ) i+; s= (3) ; printf("%dn",s); 解答:(1) 源代码:#include <stdio.h>void main ( ) char str1100,str2100; int i,s; printf("n Input string 1:n");gets(str1); printf("n Input string

22、 2:n");gets(str2); for(i=0;i+) if(str1i=str2i) continue; else break; s=str1i-str2i; printf("%dn",s); (2)运行结果: (3)运行结果分析:12. 填空完成下面程序,使其的功能是统计从终端输入字符中每个大写字母的个数。用#号作为输入结束标志。程序如下: #include <stdio.h> #include <ctype.h> void main ( ) int num26,i; char c; for (i=0;i<26;i+) nu

23、mi=0; while ( (1) != '#') /* 统计从终端输入的大写字母个数*/ if (isupper(c) numc-65 (2) ; for (i=0;i<26;i+) /* 输出大写字母和该字母的个数*/ if (numi)printf("%c:%dn",i (3) ,numi); 解答:(1) 源代码:#include <stdio.h>#include <ctype.h>void main ( ) int num26,i; char c;for (i=0;i<26;i+) numi=0;while (

24、 c=getchar()!= '#') if (isupper(c) numc-65+=1;for (i=0;i<26;i+) if (numi)printf("%c:%dn",i+65,numi);(2)运行结果: (3)运行结果分析:13. 编写程序,输入若干个字符串,求出每个字符串的长度,并打印最长一个字符串的内容。以“stop”作为输入的最后一个字符串。解答:(1) 源代码:#include <stdio.h> #include <string.h> void main( ) char a50100; int i=0,max=0,k; while (gets(ai)&&strcmp(ai,"stop") i+; if (strlen(ai)>max) max=strlen(ai); k=i; printf("The longest string is:n%sn",ak); (2)运行结果: (3

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论