数组-理论教材习题参考答案_第1页
数组-理论教材习题参考答案_第2页
数组-理论教材习题参考答案_第3页
数组-理论教材习题参考答案_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

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

文档简介

1、精品文档1. 在“校园歌手大奖赛” 中有 10 位评委为选手打分。 某位选手的最终得分是去掉一个最高、去掉一个最低分后的平均分,编写程序实现这一功能。#include "stdio.h"#define N10/* 评委人数 */#define MAX10/* 打分分数上限 */#define MIN0 /* 打分分数下限 */int main( )float sN;/* 存储 10 位评委的打分*/float sum=0;/*sum 用于存储10 个分数之和 */float aver;/*aver用于存储最终得分*/float min= MAX, max= MIN;int

2、i; /*循环控制变量 */for( i=0; i<N; i+)printf("请输入第 %d 个评委的打分:", i+1);scanf("%f", &si);sum += si;if(min>si) min = si;/*min得到最低分 */if(max<si) max = si;/*max 得到最高分 */aver = (sum-max-min)/(N-2); /*计算除最高分和最低分的平均分*/printf("该选手最终得分为:%.2fn", aver);return 0;2. 成绩分析是 “成绩管理

3、系统” 的一个模块, 包括统计各分数段人数及比例, 计算平均分数、标准差等。编程实现成绩分析的以上功能。#include "stdio.h"#include "math.h" /*平方根函数sqrt()的头文件 */#define N10/* 人数 */int main( )int i; /*循环控制变量 */float scoreN = 55,86,79,93,66,71,95,72,88,65; /*准备数据 */int s5=0;/* 数组 s 存放个分数段人数*/float sum = 0, aver;/*sum 存储总分, aver 存储平均分

4、 */float var, stdev;/*var存储方差, stdev 存储标准差 */for(i=0;i<N;i+)sum+= scorei;if(scorei<60) s0+;if(scorei>=60 && scorei<70) s1+;if(scorei>=70 && scorei<80) s2+;if(scorei>=80 && scorei<90) s3+;。1欢迎下载精品文档if(scorei>=90 && scorei<=100) s4+;aver =

5、sum/N;var=0;for(i=0;i<N;i+)var+=(aver-scorei)* (aver-scorei);var/=N-1; /*计算方差 */stdev=sqrt(var); /*计算标准差 */printf("总分: %fn", sum);printf("平均分: %.2fn", aver);printf("不及格人数:%dn", s0);printf("6069人数: %dn", s1);printf("7079人数: %dn", s2);printf("8

6、089人数: %dn", s3);printf("90100人数: %dn", s4);printf("标准差: %fn", stdev);return 0;3. 利用数组存放斐波那契( Fibonacci )数列的前 20 项并输出。#include "stdio.h"#define N20/* 项数 */int main( )int i; /*循环控制变量 */int FN=1,1; /*数组 F 用于存储前N 项数 */printf("%d,%d",F0, F1); /*先输出前两项*/for(i=

7、2;i<N;i+) /*计算并输出后面各项*/Fi=Fi-2+Fi-1;printf(",%d",Fi);printf("n");return 0;4. 使用数组精确计算 M/N(0<M<N<=100)的值。如果 M/N是无限循环小数,则计算并输出它的第一循环节,同时要求输出循环节的起止位置( 小数位的序号 ) 。循环节:如果无限小数的小数点后,从某一位起向右进行到某一位止的一节数字循环出现,首尾衔接,称这种小数为循环小数,这一节数字称为循环节。#include"stdio.h"#define N 100 /*

8、最大计算精度*/int main()int m, n; /*被除数和除数*/int i, j;/*循环控制变量*/。2欢迎下载精品文档int flag = 0; /*数据性质标志,0:表示非无限循环小数;1:表示无限循环小数*/int remainderN; /*存放每次除法的余数*/int quotientN; /*存放每次除法的商数*/int start; /*循环节起始位*/int end; /*循环节终止位 */printf("请输入被除数M: ");scanf("%d",&m);printf("请输入除数N(N>M):

9、");scanf("%d",&n);if(m>n)printf("数据错,被除数大于除数!n");return;printf("%d/%d=%s",m,n,"0."); /*输出 "0" 和小数点 */m = m%n; /*第一次余数再存入m中*/for(i=0; i<N; i+ ) /*商的位数 */remainderi = m; /*保存当前余数 */m *= 10; /*余数扩大10 倍,作为下一个被除数*/quotienti = m/n; /*保存本次商 *

10、/printf("%d",quotienti); /*输出小数点后各位*/m = m%n; /*余数再次放入变量m中 */if(m = 0) break; /*当前余数为0,结束循环 */for(j=0; j<=i; j+)/*本循环查找当前余数是否已经存在*/if(m=remainderj) /*若当前余数在前面已经出现过*/flag = 1;/* 标志置 1*/start = j+1;/* 记录循环数列开始位置,下标标号加1*/end = i+1;/* 记录循环数列结束位置,下标标号加1*/break;if(flag = 1)break; /*如果是循环小数,则不

11、用再继续除*/printf("n");if(flag=1)printf("结 果 为 有 限 循 环 小 数 , 循 环 节 从 第 %d 位 开 始 , 共 %d 位 。n",start,end-start+1);return 0;5. 有两个长度相同的整型一维数组,分别输出它们对应位置上的数字之差。#include"stdio.h"。3欢迎下载精品文档#define N 5 /*数组长度 */int main()int i;/*循环控制变量 */int aN = 54,12,35,64,78; /*定义数组a、准备数据 */int

12、 bN = 71,25,46,81,69; /*定义数组b、准备数据 */printf("位置 t数组 at数组 bt差值 n");for(i=0;i<N;i+)printf("%dt%dt%dt%dn",i,ai,bi,ai-bi);return 0;6. 已有一个排好序的数组,从键盘输入一个数,按原顺序插入到该数组中。#include"stdio.h"#define N 5 /*数组长度 */int main()int i,j;/*循环控制变量*/int x;/*x用于存储用户输入的数据*/int aN+1 = 6,12,3

13、5,64,78; /*定义数组a、准备数据 */printf("原数据序列:");for(i=0;i<N;i+)printf("%dt",ai);printf("n");printf("请输入一个整数:");scanf("%d", &x);for(i=0;i<N;i+)/* 如果输入的数小于当前数,说明i 为新数据的位置,则结束循环*/if(x<ai) break;for(j=N; j>i; j-) aj = aj-1; /*移动后面的数 */ai = x; /*

14、将新数放在i 号位置上 */printf("插入新数据后的数据序列:");for(i=0;i<N+1;i+)printf("%dt",ai);printf("n");return 0;7. 自编代码实现字符串比较函数strcmp( ) 的功能。#include"stdio.h"#define MAX 80 /*字符串的最大字符数*/int main()int i=0;/*循环控制变量*/。4欢迎下载精品文档char str1MAX,str2MAX; /*存储两串字符 */printf("请输入第1串

15、字符: ");gets(str1);printf("请输入第2串字符: ");gets(str2);while(str1i=str2i) i+; /*如果对应位置字符相同,则继续比较下一个字符*/if(str1i-str2i>0)printf("第 1 串大于第2 串 n");else printf("第 2串大于第1 串n");return 0;8. 逆序输出输入的一串字符。#include"stdio.h"#define MAX 80 /*字符串的最大字符数*/int main()int i=0

16、; /*存储输入字符串中的字符个数*/int j=0; /*数组下标 */int k; /*循环控制变量 */char str1MAX,str2MAX;printf("请输入原字符串: ");gets(str1);while(str1i+); /*得到字符串 str1的字符个数 */for(k=i-2; k>=0; k-)str2j+=str1k;/*将 str1中的字符按逆序赋给 str2*/str2i-1='0'/*str2末尾补充 0*/printf("逆序后的字符串: ");puts(str2);return 0;9. 输入

17、一串字符,将其中小写字母全部转换为大写字母,其它字符保持不变。#include"stdio.h"#define MAX 80 /*字符串的最大字符数*/int main()int i=0; /*数组下标 */char strMAX;printf("请输入原字符串:");gets(str);while(stri)if(stri>='a' && stri<='z')stri-=32; /*小写字母转为大写*/i+;printf("转换后的字符串:");。5欢迎下载精品文档puts

18、(str);return 0;10. 输入 3×3 的矩阵,输出两对角线数据之和。#include"stdio.h"#define M 3 /*矩阵规模 */int main()int i,j; /*循环控制变量 */int aMM;int sum=0;printf("输入 %d个数 ( 空格或回车间隔) ,构成 %d× %d的矩阵 n",M*M,M,M);for(i=0;i<M;i+)for(j=0;j<M;j+)scanf("%d",&aij);if(i=j)sum+=aij; /*将对角线上的数据累加到sum*/printf("矩阵: n");for(i=0;i<M;i+)for(j=0;j<M;j+)printf("%dt",aij);printf("n");printf("对角线之和:");printf("%dn",sum);re

温馨提示

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

评论

0/150

提交评论