C语言入门学习-C上机试验六要求_第1页
C语言入门学习-C上机试验六要求_第2页
C语言入门学习-C上机试验六要求_第3页
C语言入门学习-C上机试验六要求_第4页
C语言入门学习-C上机试验六要求_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

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

文档简介

1、上机实验六数组综合练习【实验五参考答案见后】目的和要求:(1)掌握字符数组处理字符串的要领;(2)继续熟悉二维数组的操作要领。实验内容:一、编程题:1 任意读入一个十进制整数(包含0和负整数),将其转换成二进制序列后输出例如:读入-29,则输岀-111012任意读入10个字符串,将其中的最小串和最大串合并成一个串后输岀。例如: 读入Iloveyou very muchWelikeCProgrammi ngLanguage则输岀:Cyou3 任意读入一个字符串,统计输岀其中每一个数字字符岀现的次数。例如: 读入 “ Hi19970701 ”。则输岀0-21-27-29-24 编程以如下等腰三角形

2、的形状输岀杨辉三角形的前5行。程序的一小部分已给岀,请编写完1464再输出该行【提示:依然借助二维数组在其下三角中赋值,只是输出时,每行先输出若干空格, 的每个元素。】#include #define N 5 main( ) int aNN, i, j;二、完善题:1任意读入一个字符串, 判断其是否为回文串。 (左右对称的字符串称为 “回文串” ,例如“ level ”、 “deed” 0作为结束标志!】 注意 :字符串以空字符【等)#include #include main()char a30,b30;int i,j,k;gets(a);k=;for(i=0,j=k-1;ai!= 0; i

3、+, j -)/*将 a 中的字符逆序存放到 b 中*/bj=ai;bk=;if()printf(%s is a palindrome stringn,a);elseprintf(%s is not a palindrome stringn,a);2任意读入一个十进制 正整数,将其转换成十六进制形式的 字符 序列后输出。例如:读入整数 46,输岀字符序列 2E。(46)=(2E) 1610【提示:一个十进制正整数 m转换成x进制数的思路是, 将m不断地除以x取余数,直到商为 0时终止,以反序输岀余数序列即得到结果。】#include main()int sjz;char ys80; int i

4、,k,r;doscanf(%d, &sjz);while(sjz=0);/*确保读入的是正整数*/k=0;while(sjz!=0)r=sjz_x0016_;if(r=0;i -) /*将余数倒过来输岀*/putchar(ysi););【实验五参考答案】一、编程题:1 编程输岀如下5阶方阵:.5 6 7 8 98 6 7 5 47 5 6 3 46 4 3 2 552143#in elude #defi ne N 5mai n()int aNN,i,j;for(i=0;iN;i+)for(j=0;jN;j+)aij=N -(i-j);for(i=0;iN;i+)for(j=0;jN;j+)pr

5、in tf(=,aij););,采用选择法将它们降序排列后输出。字符个10任意读入 2#include#define N 10 main()char aN,t;int i,j,k;for(i=0;iN;i+)ai=getchar();for(j=0;j=N -2;j+)k=j;for(i=j+1;iak)k=i;if(k!=j)t=ak;ak=aj;aj=t;for(i=0;iN;i+)putchar(ai);二、完善题:1以下程序使用“选择法变形”将任意读入的 10 个整数升序排列。请完善之。【选择法变形的算法要领: n 个数处理 n-1 趟,每趟处理: 拿某元素后面的每一个元素与之比较,

6、一旦比自己小,就交换 】#include_#define N 10 main()int aN, k , i;for(k=0; kN; k+)scanf(%d, &ak);for(i=0; i=_ N-2_; i+) /*i 兼做下标 */for(k=_ i+1 _;k=N -1;k+)if(_ akai _)int t; t=ak; ak=ai; ai=t ;for(k=0; kN; k+)printf(m,ak);2任意读入一个整数 x,在升序数组a中使用二分法查找是否有与 x等值的元素。请完善如下 程序。#include#define n 10main()int an=2,4,7,9,12

7、,25,36,50,77,90;int x, high, low, mid; /*x 为关键值 */ scanf(%d, &x);high=n-1; low=0;mid=(high+low)/2 ;while(_low=high _ &amid!=x)if(xamid) high=mid-1;/* 修改区间上界 */else_low=mid+1 _; /* 修改区间下界 */ _ mid=(high+low)/2 _; if(_ x =amid _) printf(Found %d , %dn, x , mid); else printf(Not foundn);3 .将任意读入的整数x插入到

8、一个含有10个元素且已按 升序排列的数列中后,使该数列仍按升序排列。【算法要领 是:假设待插数据为x,数组a中数据为升序序列。 先将 x 与 a 数组当前最后一个元素进行比较, 若比最后一个元素还大, 就将 x 放入其后一个元 素中;否则进行以下步骤; 先查找到待插位置。从数组a的第1个元素开始找到不比x小的第一个元素,设其下标为i ; 将数组 a 中原最后一个元素至第 i 个元素依次一一后移一位,让出待插数据的位置,即下标为i 的位置; 将 x 存放到 ai 中。】#include#define n 10main() int an+1= -1,3,6,9,13,22,27,32,49,88,

9、 x, j, k;/*注意留一个空间给待插数,只给 10个元素赋值 */scanf(%d, &x);/* 读入待插数 */if(xan -1) an=x ; /*比最后一个数还大就往最后一个元素中存放 */else /* 查找待插位置 */j=0;while( jaj _) j+;/* 从最后一个数开始直到待插位置上的数依次后移一位*/for(k=n -1; k=j; k - ) _ ak+1=ak_ _;aj=x; /* 插入待插数 */for(j=0; j=n; j+) printf(%d ,aj);a 中某一元素值相等,就将该4.数组 a 中有若干不同考试分数,任意读入一个分数,若与数组 元素删除。算法,然后将待删元素是:首先要找到(也可能找不到)待删除元素在数组中的位置(即下标) 的要领 【1 后输出。】后的每一个元素向前移动一位,最后将数组元素的个数减#include#define N 6main()int fsN=69,90,85,56,44,80,x;int i, j, n;n=N;scanf(%d,&x); /* 任意读入一个分数值 */* 以下查找待删分数的位置,即元素下标 */ for(i=0;in;i+)if(fsi

温馨提示

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

评论

0/150

提交评论