




已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
习题六一 选择题1 C 2 B 3 A 4 D 5 D 6 B 7 都正确 8 A 9 D 10 A11 A 12 B 13 D 14 A 15 B二 填空题1 按行排序 2 2,4 3 字符数组 4 数组第一个元素地址 5 0 6 1 5 9 2 6 10 3 7 114 8 12 7 * * * * * 8 * * * * *9 1 2 1 3 3 14 6 4 110 abcde11 i=1 xi-1 12 int flag, i scanf(”%s”,str1) stri!=str1i 13 i=10-j aiai+1 t=ai ai+1=t三 编程题1 #include void main()int i,n=0;int a10; /* 定义一个数组,用来存放10个数 */float avg=0; /* 定义一个变量,用来存放这10个数的平均值*/int max,min; printf(请输入10个数:n); /* 提示输入10个数 */* 读入10个数,并求这些数的和 */for(i=0;i10;i+)scanf(%d,&ai);max=min=a0;for (i=1;imax)max=ai;if (aimin)min=ai;avg+=ai;avg/=10;printf(最大值为:%d,最小值为: %d 平均值为: %f,max,min,avg);2#include void main()int i,temp,n=0,k=0;int a10; /* 定义一个数组,用来存放10个数 */int min; printf(请输入10个数:n); /* 提示输入10个数 */* 读入10个数,并求这些数的和 */for(i=0;i10;i+)scanf(%d,&ai);min=a0;for (i=1;i10;i+)if (aimin)min=ai;k=i;if (k!=0)temp=a0;a0=ak;ak=temp; printf(“最终的数组为:n”);for(i=0;i10;i+) printf(“%d ”,ai);printf(n最小值为: %d ,下标为:%d,min,k);3# include # define N 6main ( ) int aNN=0, i=0, j=0; for (i=0; iN; i+) ai0=aii=1; /* 给第一列和对角线上的元素赋1 */ for (i=2; iN; i+) for (j=1; ji; j+) /*对角线上的元素已被赋值,所以就ji */ aij=ai-1j-1+ai-1j; /* 给其他元素赋值 */ for (i=0; iN; i+) for (j=0; j=i; j+) printf (“%5d”, aij);printf (“n”);4【解】 程序如下:# include main ( ) float a46=0, sum=0; int i=0, j=0; for (i=0; i4; i+) for (j=0; j5; j+) aij=i*j+1; /* 给数组a的前五列赋值 */ for (i=0; i4; i+) /* 计算各行平均值,并存放在ai5上 */ sum=0;for (j=0; j5; j+) sum=sum+aij;ai5=sum/5; for (i=0; i4; i+) for (j=0; j6; j+) printf (“%5.1f”, aij);printf (“n”);运行结果:1.0 1.0 1.0 1.0 1.0 1.01.0 2.0 3.0 4.0 5.0 3.01.0 3.0 5.0 7.0 9.0 5.01.0 4.0 7.0 10.0 13.0 7.05【解】 程序如下:# include main ( ) int i=0, j=0, k=0, p=0 a35=3,1,10,4,7, 22,32,5,15,6, 11,21,8,9,16; printf (“Before:n”); for (i=0; i3; i+) /* 找最大值所在元素的下标 */ for (j=0; j5; j+) printf (“%5d”, aij);printf (“n”); for (i=0; i3; i+) for (j=0; j5; j+) if (akpaij) k=i; p=j;i=akp; akp=a00; a00=i; /* 对调 */printf (“After:n”); for (i=0; i3; i+) for (j=0; j5; j+) printf (“%5d”, aij);printf (“n”);运行结果:Before: 3 1 10 4 722 32 5 15 611 21 8 9 16After:32 1 10 4 722 3 5 15 611 21 8 9 166【解】 编程点拨:用count统计单词数。统计单词的个数可按一下步骤进行:(1)在字符串中找出第一个非空格字符。(2)如果第一个非空格字符为有效字符(即不等于”0”),count增1,即处理第一个单词。(3)在字符串中,只要一个空格和一个非空格字符(不能为”0”)连续存在,说明找到了新的单词,因此count增1。程序如下:# include main ( ) char a80=”; int i=0; count=0; gets (a); while (ai = = ) i+; /* 找第一个非空格字符 */ if (ai!=0) count+; /* 非空格字符为有效字符时 */ while (ai!=0) if (ai = =& ai+1!=& ai+1!=0)count +; /*一个空格和一个非空格字符连续存在时 */i+;printf (“%s: %d Wordsn”,a,count);运行结果:|_| |_| I |_| am |_| OK|_| |_| I |_| am |_| OK: 3 Words7【解】 编程点拨:找鞍点的操作可以通过嵌套的for循环来实现。外层for循环用来控制二维数组的行数。在外层循环体中需要处理三件事情:(1)找每行中最大值所在的列下标;(2)判断该元素在本列上是否为最小;(3)判断是否找到了鞍点,若找到,输出后退出循环。程序如下:# include # define N 3# define M 4main ( ) int aNM=0, i=0, j=0, k=0, flag=0; printf (“Input %d data:”, N*M); for (i=0; iN; i+) /* 输入、输出二维数组 */ for (j=0; jM; j+) scanf (“%d”,&aij); printf (“%4d”, aij); printf (“n”); for (i=0; iN; i+) k=0; for (j=0; jM; j+) if (aikaij) k=j;flag=1; /* 不是鞍点时用0做标记 */for (j=0; jajk) flag=0;if (flag = =1) /* 若是鞍点,则输出后提前退出循环 */ printf (“i=%d, k=%d, saddle point: %dn”,i,k,aik);break;if (i = =N) printf (“Not exist saddle point.n”); /* 如果正常退出循环,说明无鞍点 */第1次运行结果:Input 12 data: 1 2 3 4 5 6 7 8 9 10 11 121 2 3 45 6 7 89 10 11 12i=0,k=3,saddle point: 4第2次运行结果:Input 12 data: 1 2 30 4 5 6 7 8 9 10 11 121 2 30 45 6 7 89 10 11 12Not exist saddle point.8#include #define M 5#define N 3void main()int sum;int max,i,j,sMN; /* 用数组s存学生的每门课程的成绩 */double avgM=0,meanN=0; /*avg每个学生的平均分,mean每门课程的平均分*/* 获取每个学生的每门课程的成绩,并计算学生平均成绩 */for(i=0;iM;i+)printf(No.%d ,i+1);for(sum=0,j=0;jN;j+)scanf(%d,&sij);sum+=sij;avgi=1.0*sum/N;max=s00;/* 计算每门课程的平均分 */for(j=0;jN;j+)for(i=0;iM;i+)meanj+=sij;meanj=meanj/M;for (i=0;iM;i+)for (j=0;jN;j+)if (maxsij)max=sij;/* 输出考试情况 */printf(学生 );for(i=0;iN;i+)printf(课程%d ,i+1);printf(平均分n);for(i=0;iM;i+)printf(No.%d ,i+1);for(j=0;jN;j+)printf(%5d ,sij);printf(%6.1fn,avgi);for (i=0;iN;i+)printf(平均: %5.1fn,meani);printf(最高分为: %dn,max);9#include #include void main()char str80;char c;printf(请输入字符串:n);gets(str);printf(请输入要删除的开始字符: );scanf(%c,&c);int i,j=0;for(i=0;stri!=0;i+)if(stri=c)stri=0;break;printf(%sn,str);10【分析】字符串存入字符数组中,要逆序存放,就要将下标为0的字符串与下标最大的字符交换,下标为1的字符与下标次最大的字符交换.,最大下标应为字符串长度-1.#include #include void main()char str20,t;int i,j;gets(str);j=strlen(str)-1;for(i=0;i=A & stri=a & stri=0 & stri=9) a2+;else a3+;for(i=0;i4;i+)printf(%s: %dn,namei,ai);运行结果:输入一个字符串:ahjYTBJ%655#21Upper:4;Lower:3;Digit:5;Other:4;12【分析】本题有两个关键:一是要找到插入的位置,二是要将插入的位置及以后的元素向后平移一个元素,最后才能在插入的位置插入概述,程序如下。void main()int a11=3,5,8,11,15,19,23,26,33,i,j,x; /*定义数组预留一个插入位置*/printf(输入一个数:);scanf(%d,&x);for(i=0;ix)break;for(j=9;j=i;j-)aj+1=aj;ai=x;for(i=0;i11,i+)printf(%3d,ai);printf(n);运行结果:输入一个数:18 3 5 8 11 15 16 18 19 23 26 3313【分析】两个矩阵的乘积必须满足条件:第一个矩阵的列数要等于第二个矩阵的行数,乘积矩阵元计算公式为 ,程序如下。#include #define m 3;#define n 4;#define p 5;void main()int amn=1,2,3,4,5,6,7,8,9,10,11,12;int bnp=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20;int cmp,i,j,k;printf(C=n);for(i=0;im;i+)for(j=0;jp;j+)cij=0;for(k=0;kn;k+)cij+=aik*bkj;printf(%-7d,cij);printf(n);运行结果:C=110 120 130 140 150 246 272 298 324 350382 424 466 508 55014#includevoid main()char str120,str220;int i=0;printf(输入第二个字符串:n);gets(str2);while(str1i=str2i)!=0)i+;printf(第一个字符串是:n);puts(s
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 退股退款合同范本
- 虾仁采购合同范本
- 机柜喷涂合同范本
- led器材租赁合同范本
- 出售玉米的合同范本
- 会所桌椅回收合同范本
- 房屋租免责合同范本
- 收购打井设备合同范本
- 定量点胶机采购合同范本
- 消防灭火救援课件
- 《螺纹的种类和应用》课件
- 医学一等奖《白血病》课件
- 高空作业车专项应急预案
- 发现普洱茶的第一个医学实验报告
- 全自动血液细胞分析仪参数
- (完整版)过去完成时ppt
- 1输变电工程施工质量验收统一表式(线路工程)
- 养老护理员(技师、高级技师)知识考试复习题库(含答案)
- 学校安全“日管控、周排查、月总结”工作制度
- 机械原理课程设计15吨压片机设计
- 2023年五四青年节演讲比赛PPT担负青年使命弘扬五四精神PPT课件(带内容)
评论
0/150
提交评论