C语言程序设计实训指导书(4)

2019-05-26 18:14

程序2:一个班有n个同学,通过键盘输入成绩,并进行以下处理: (1)求平均成绩;(数组求和) 算法分析:

1.输入n的值及n个成绩;

2.对成绩进行汇总求和,存入变量s中; 3.求平均数:average=s/n; 4.输出平均分average。 #include “stdio.h” main() {

int n,i,s=0; int score[30]; float average;

printf(“请输入学生的人数:”); scanf(“%d”,&n);

printf(“请输入%d学生的成绩:\\n”,n); for(i=0;i

{scanf(“%d”,&score[i]); s=s+score[i];} average=(float)s/n;

printf(“%.1f”,average); }

(2)添加m个同学的成绩;(数组添加) 算法分析:

1.当前成绩个数设为n个; 2.输入m的值;

3.从第n个元素开始输入m个成绩; 4.更新数组元素的个数: n=m+n; 5.输出添加完后的成绩。

(3)把不及格同学的成绩更新为60分;(数组更新) 算法分析:

1.当前成绩个数设为n个;

2.从第0个元素开始逐个元素进行测试:

if(score[i]<60) score[i]=60;

直到最后一个元素;

3.输出修改完后的成绩元素。

(4)求成绩的最高分和最低分,并记住对应元素的下标;(数组求极值) 算法分析:

1.当前成绩个数设为n个,定义变量max和min分别用来存放最大数和最小数; 2.为max和min赋初始值:max=min=score[0]; 3.从第1个元素开始逐个元素进行测试: if(score[i]>max) max=score[i]; if(score[i]

两种基本算法:

1.起泡法:将相邻两个数比较,小的调到前面。 2.选择法:将前面的数和后面的所有数依次进行比较,记住小数的下标,当比较完一遍,用前面的数和该小数进行交换。 起泡法排序: #include “stdio.h” main()

{int score[10], i,j,k,n=10; printf(“ 输入成绩:\\n”); for(i=0;i

scanf(“%d”,&score[i]); for(i=0;i

for(j=0;j

if(score[j] > score[j+1] ) {k= score[j];

score[j] = score[j+1]; score[j+1] =k; } for(i=0;i

printf(\ printf(\ } 选择法排序: #include “stdio.h” main() {

int i,j,k,m,score[10],n=10; for(i=0;i

scanf(“%d”,&score[i]); for(i=0;i

for(j=i+1;j

if (score[k]> score[j]) k=j;

m=score[i]; score[i]=score[k]; score[k]=m; }

for(i=0;i

printf(\ printf(\ }

程序3:对已经排好序的成绩数组进行以下操作:把一个新成绩按照顺序插入到数组的合适位置。(提高)。 算法分析:

1. 从键盘接收一个数据,存入变量m;

2. 根据变量m的大小进行定位,其对应下标为k;

3. 把score[9]到score[k]的元素依次后移,为新数据腾出空间; 4. 把m存入下标为k的空间中:score[k]=m; 5. 输出处理完后的新数组。

程序4:编程实现求一个3行4列整型数组的平均数。

算法分析:

1.定义一个二维数组a[3][4]; 2.为数组赋值;

3.累加元素的和,存入变量s中; 4.求平均数ave=s/12; 5.输出平均数ave。 #include “stdio.h” main() {

int a[3][4],i,j,s=0; for(i=0;i<3;i++) for(j=0;j<4;j++)

scanf(“%d”,&a[i][j]); for(i=0;i<3;i++) for(j=0;j<4;j++) s+=a[i][j]; ave=s/12;

printf(“average=]\\n”,ave); }

程序4:编程实现把一个三行三列的二维数组转置输出。 算法分析:

1.定义一个二维数组a[3][3]; 2.为数组赋值;

3.交换a[i][j]与a[j][i]的值; 4.输出交换后的数组a。 #include “stdio.h” main() {

int a[3][3],i,j,s=0; for(i=0;i<3;i++) for(j=0;j<3;j++)

scanf(“%d”,&a[i][j]); for(i=0;i<3;i++) for(j=0;j

{t=a[i][j];a[i][j]=a[j][i];a[j][i]=t;} for(i=0;i<3;i++) { for(j=0;j<3;j++)

printf(“]\\n”,a[i][j]); printf(“\\n”);} }

程序5:某学习小组有4名同学,学习了5门课程,求每个同学的平均分和每门课程的平均分。

算法分析:

1.定义一个二维数组score[5][6](最后一行和最后一列存放平均数); 2.为数组赋值;

3.求行平均数,把平均数存入score[i][5]中(i=0-3);

4.求列平均数,把平均数存入score[4][j]中(j=0-4); 5.输出整个数组。

程序6:从键盘输入一行字符,要求删除第一次出现的某个字符(要删除的字符也由键盘输入)。

算法分析:

1.定义存放字符串的字符数组str和存放单个字符的字符变量ch; 2.输入字符串str和要删除的字符ch; 3.对要删除的ch定位;

4.从该位置开始,开始把后续字符依次前移; 5.检查字符串的结束标记。

程序7:编一程序,将两个字符串连接起来。 算法分析:

1.定位:第一个字符串的?\\0?的位置;

2.从?\\0?开始把第二个字符串的字符依次放入第一个字符串的后端,直至第二个字符串的?\\0?;

3.检验第一个字符串的末端是否有结束符?\\0?,若没有,修正所得的字符串,在它的末端加上?\\0?。

#include “stdio.h” main( ) {

char s1[80],s2[80]; int i=0,j=0;

gets(s1); gets(s2); while(s1[i]!='\\0') i++; while(s2[j]!='\\0')

{s1[i]=s2[j];i++;j++;} s1[i]='\\0'; puts(s1); }

程序8:有三个字符串(长度不超过20),要求找出其中最大者。 算法分析:

1.输入三个字符串,存入二维字符数组中;

2.先取前两个字符串比较,找出大的存入string 数组中;

3.用string和后续的依次进行比较,当出现比string的时更新string的值; 4.输出string中的字符串。 #include \ main( ) {

char string[20],str[3][20]; int i;

for(i=0;i<3;i++) gets(str[i]);

if (strcmp(str[0],str[1])>0) strcpy(string,str[0]); else strcpy(string,str[1]);

if (strcmp(str[2],string)>0) strcpy(string,str[2]); printf(\

} 实训题目

1、从键盘输入20个整型数据,统计其中正数的个数,并计算它们的求和。 2、把1000之内的素数存放在数组中,并输出素数的个数和各个素数。 3、在第一题的基础上找出最大数和最小数并输出对应的下标。 4、任意输入10个数据,对其进行排序(用选择法小到大)。

5、在第4题的基础上,从键盘上接收一个数据,如果该数不存在,把该数按照顺序放在数组中,若存在则把和该数相等的元素删除。

6、某学习小组有4名同学,学习了5门课程,编程求出最高分和最低分及其对应的行号和列号。

7、输入一行字符,统计字母、数字、空格和其它字符的个数。

第四部分 数据类型构造与模块化程序设计

(函数的应用)

[实训目的及要求] 函数体现了程序设计的模块化思想,可以把复杂的问题简单化,并可实现代码共享。通过本次实训内容,使学生对函数的定义及应用能系统认识,并能熟练地在编程中体现出来。

程序1:利用自定义函数输出两个数中的大数。 #include “stdio.h”

int max(int x,int y) /*用户自定义函数*/ {int z;

if(x>y) z=x; else z=y; return(z);}

main( ) /*主函数*/ {int a,b,c;

scanf(“%d,%d”,&a,&b); c=max(a,b);

printf(“max=%d\\n”,c);} 程序2:编写以下功能函数 (1)求两个数的和 (2)求两个数的差 (3)求两个数的积 (4)求两个数的商 /*两个数之和*/ int add(int x,int y) {

int s; s=x+y; return(s); }

/*两个数之差*/ int sub(int x,int y) {

int s; s=x-y;


C语言程序设计实训指导书(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:人力资源管理开题报告需要文献集锦

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: