您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 程序设计基础-c语言-第四章数组-教材答案-科学
第1页程序设计基础-c语言-第四章数组-教材习题及其答案1.0编程将一个一维数组的值按逆序重新存放#includestdio.hvoidmain(){inti_data[10];intm,i_temp;printf(给定10个数,用空格分隔:);scanf(%d%d%d%d%d%d%d%d%d%d,&i_data[0],&i_data[1],&i_data[2],&i_data[3],&i_data[4],&i_data[5],&i_data[6],&i_data[7],&i_data[8],&i_data[9]);for(m=1;m=10/2;m++)//有意写成10/2已解决任意一维数组的逆序问题,为什么此处用m=1;m=10/2,而不能m=0;m10/2{i_temp=i_data[m-1];//下面三条语句是典型的两数交换的方法第2页i_data[m-1]=i_data[10-m];i_data[10-m]=i_temp;}for(m=0;m10;m++){printf(%d,i_data[m]);}printf(\n);}2.0编程求Fibonacci数列的前二十项。FIBONACCI数列的定义F0=0,F1=1,Fn=Fn-1+Fn-2#includestdio.hvoidmain(){intF[20];intm,n,i_blanknum;for(m=0;m20;m++){switch(m)第3页{case0:F[0]=0;break;case1:F[1]=1;break;default:F[m]=F[m-1]+F[m-2];}}printf(Fibonacci数列的前20项是:\n);for(m=0;m20;m++){printf(%d,F[m]);}printf(\n);//下面输出项,这是我加的效果for(m=0;m20;m++){printf(%d,m+1);//输出项的编号//计算该项数据占几位i_blanknum=1;//每个数据间占一个空格n=F[m];do{i_blanknum=i_blanknum+1;n=n/10;第4页}while(n!=0);//减去该项编号数据占的位数n=m+1;do{i_blanknum=i_blanknum-1;n=n/10;}while(n!=0);//输出空格while(i_blanknum0){printf();i_blanknum--;}}printf(\n);}2.0在一个从小到大排列的数组中查找X,若x存在就将其测出,若不存在将其添加。使修改后的数组仍然有序,并输出到屏幕上啊第5页#includestdio.h#defineYes1//Yes说明x在数组中#defineNo0//No说明x不在数组中voidmain(){inti_data[10]={10,20,30,40,50,60,70,80,90};intx,i,j;intYN;//记录x是否在数组中intTotal=9;//数组元素实际个数printf(请输入一个数:);scanf(%d,&x);YN=No;//假定不在数组中//第1种情况:进行x在数组中查找和删除操作,要考虑数组中有多个x的值i=0;while(iTotal){if(x==i_data[i]){YN=Yes;for(j=i;jTotal-1;j++){i_data[j]=i_data[j+1];}第6页Total--;}else{i++;}}//第1中情况操作完成if(YN==No)//说明第1种情况不存在,应进行第2种情况操作,即增加{for(i=0;iTotal;i++){if(xi_data[i]){for(j=Total;ji;j--){i_data[j]=i_data[j-1];}i_data[i]=x;Total++;break;}}}//下面输出for(i=0;iTotal;i++)第7页{printf(%d,i_data[i]);}printf(\n);}4.0将一个3*4二维数组的行和列的元素互换,存放到4*3的二维数组中,并输出元素#includestdio.hvoidmain(){inta[3][4],b[4][3];inti,j;printf(\n输入数组a[3][4],输入一个数据请按Enter键\n);for(i=0;i3;i++){for(j=0;j4;j++){scanf(%d,&a[i][j]);}}//输入完毕第8页//开始转换和输出[3][4]printf(\na[4][3]\n);for(i=0;i3;i++){for(j=0;j4;j++){b[j][i]=a[i][j];printf(%6d,a[i][j]);}printf(\n);}//转换完毕//开始输出printf(\nb[4][3]\n);for(i=0;i4;i++){for(j=0;j3;j++){printf(%6d,b[i][j]);}printf(\n);}//输出完毕}5.0第9页第五题利用循环,使得10*10的二维数组元素具有以下值,并把内容输出到屏幕数0123456789123456789023456789013456789012456789012356789012346789012345789012345689012345679012345678第10页#includestdio.hvoidmain(){ints[10][10];intm,n;for(m=0;m10;m++){for(n=0;n10;n++){s[m][n]=(m+n)%10;printf(%5d,s[m][n]);}printf(\n);}}6.0输入一个字符串,判断它是否回文,所谓回文是值字符串字符串正序和逆序一样的,如abcdcba就是回文。#includestdio.h#includestring.h第11页voidmain(){charstr[101];intstr_len,i,comparetimes;intisSame;//记录是否是回文字符串,其值=0,则不是,=0则是//输入字符串,要控制不能100个字符,所以用getcharprintf(请输入一个字符串(最多100个字符),按Enter结束输入\n);for(i=0;i100;i++){str[i]=getchar();if(str[i]=='\n')break;}str[i]='\0';//将最后的回车符\n改成'\0'其目的是形成字符串数组,以便用字符串函数对字符串操作,方便!//判断是否是回文字符串的算法是把第1个字符和最后1个字符比较,第2个字符和倒数第2个字符比较,如此,//都相同则是回文字符串,只要有一对字符不同就不是isSame=1;//假定当前字符串是回文字符串str_len=strlen(str);comparetimes=str_len/2;//只需比较一半即可,第12页for(i=0;icomparetimes;i++){if(str[i]!=str[str_len-1-i]){isSame=0;//有一对字符不同,则不用检查剩余的break;}}if(isSame==1)printf(该字符串是回文字符串!\n);elseprintf(该字符串不是回文字符串!\n);}7.0统计一个字符串中的单词个数,字符串中二个空格之间的非空格字符可看做单词。#includestdio.h#includestring.hvoidmain(){chars[100],s1[100];第13页intwordnum=0;//统计的单词个数inti,j,str_len;puts(请输入一个字符串:);gets(s);str_len=strlen(s);j=0;for(i=0;i=str_len-1;i++){if(s[i]!=''){s1[j]=s[i];j++;}if((s[i]==''||i==str_len-1)&&j0)//说明此时识别了一个单词{wordnum++;s1[j]='\0';printf(第%d个单词:%s\n,wordnum,s1);j=0;}}printf(共有%d个单词,wordnum);第14页printf(\n);}8.0将字符串s中所有长度为5的子字符串输出到屏幕上。所谓子串是指在字符串中连续截取若干的字符串所组成的字符串,被截取的原始字符串称为母串。#includestring.h#includestdio.hvoidmain(){chars[100],s5[6];inti,j,str_len;puts(请输入字符串:);gets(s);str_len=strlen(s);printf(共有%d个长度为5的字符串,具体如下:\n,str_len-4);for(i=0;istr_len-4;i++){for(j=0;j5;j++)第15页{s5[j]=s[i+j];}s5[j]='\0';puts(s5);}}
本文标题:程序设计基础-c语言-第四章数组-教材答案-科学
链接地址:https://www.777doc.com/doc-2150934 .html