2012计算机二级考试题库-南开一百题(C语言)_第1页
2012计算机二级考试题库-南开一百题(C语言)_第2页
2012计算机二级考试题库-南开一百题(C语言)_第3页
2012计算机二级考试题库-南开一百题(C语言)_第4页
已阅读5页,还剩163页未读 继续免费阅读

下载本文档

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

文档简介

南开100题二级C题目1编一个函数fun(char*s),函数的功能是把字符串中的内容逆置。例子如:字符串中原有的内容为:abcdefg,则调用该函数后,串中的内容为:gfedcba试题程序:incIude<string.h>incIude<conio.h>incIude<stdio.h>defineN81/・注:该题的算法是先分别找出字符串的两头,然后同时逐一往中间移动,每移动一次都进行两字符的位置对换,直到中间字符(用s+iくs+n-1-i来控制)。由于s+i中ー个地址,因此要注意把它的内容取出再进行换位。即先进行取内容运算・) */fun(char*s){inti=0,t,n=strlen(s);for(;s+i<s+n-1-i;i++)(t=*(s+i);♦(s+i)=*(s+n-1-i);♦(s+n-1-i)=t;}1main(){chara[N];cIrscr();print"Enterastring:");gets(a);printf("Theoriginalstringis:");puts(a);fun(a);printf("\n");printf("Thestringaftermodified:);puts(a);1题目2写程序,实现矩阵(3行3歹リ)的转置(即行列互换)。例如,输入一面的矩阵:程序输出:试题程序:include<stdio.h>include<conio.h>/・这题的关键在于进行行列下标转换的算法,由矩阵的对称性我们不难看出在进行行列互换时a[j]在好是与a[j][i]互换,因而只要我位让程序走完矩阵的左上角即可(用for(i=0;i<2;i++)再套for(j=i+1;jく3;j++)来完成左上角的走动。*/intfun(intarray[3][3]){inti,j,t;for(i=0;i<2;i++)for(j=i+1;j<3;j++)(t=array[i][j];array[i][j]=array[j][i];array[j][i]=t;l1main(){inti,j;intarray[3][3]={{100,200,300},{400,500,600},{700,800,900}};cIrscr();for(i=0;i<3;i++){for(j=0;j<3;j++)printf("%7d”,array[i][j]);printf("\n");]fun(array);printf("Convertedarray:\n,z);for(i=0;i<3;i++){for(j=0;j<3;j++)printf("%7d”,array[i][j]);printf("\n");}}题目3请编ー个函数fun(int*a,intn,int*odd,int*even),函数的功能是分别求出数组中所有奇数之和以及所有偶数之和。形参n给了数组中数据的个数:利用指针odd返回奇数之和,利用指针even返回偶娄这和。例如:数组中的值依次为:1,8,2,3,11,6;则利用指针odd返回奇数之和24:利用指针even返回偶数之和8。试题程序。#include<stdio.h>#include<conio.h>#defineN20/・注:该题的算法是:用for()循环ー步ー步地找元素,用if(!a[i]%2)来判断是否是奇数,%运算是求余运算,当对2求余为1时表示原数为奇数,否则为偶数。*/fun(int*a,intn,int*odd,int*even){inti;*even=0;*odd=0;for(i=0;i<n;i++)if(!(a[i]%2))*even+=a[i];eIse*odd+=a[i];main(){inta[N]={1,9,2,3,11,6},i,n=6,odd,even;cIrscr();printtlTheoriginaldatais:\n");for(i=0;i<n;i++)printf("%5d”,*(a+i));printf(〃'n\n");fun(a,n,&odd,Seven);printf(z,Thesumofoddnumbers:%d\n,z,odd);printf("Thesumofevennumber:%d\nz,,even);)题目4要求程序的功能是:把20个随机数存入ー个数组,然后输出该数组中的最小值。其中确定最小值的下标的操作在fun函数中实现,请给出该函数的定义。试题程序。include<stdio.h>incIude<conio.h>defineVSIZE20intvector[VSIZE];/・注:该题的算法是用ー个变量(j)来存储最小值元素的下标,在循环过程中让每个元素都与原最小值元素进行大小比较(if(list[iklistロ]),如发现更小的则让j重新拥有最小值元素的下标(j=i)〇・/intfun(intIist[],intsize){inti,j=0;for(i=1;i<size;i++)if(Iist[i]<list[j])j-i;returnj;1main()(inti;cIrscr();for(i=0;i<VSIZE;i++)(vector[i]=rand();printf("Vector[%d]二%6d\n〃,i,vector[i]);)i=fun(vector,VSIZE);printf("\nMininum:vector[%d]=%6d\n”,i,vector[i]);]题目5请编一个函数floatfun(doubleh),函数的功能是对变量h中的值保留2位小数,并对第三位进行四舍五入(规定h中的值为正数)。例如:h值为8.32433,则函数返回8.32;h值为8.32533,则函数返回8.33。试题程序。#incIude<stdio.h>#include<conio.h>/・注:h乘以1000后正好是原小数点后第三位做了新数的个位数,然后再进行加5运算时。如原小数点后第三位为4及以下则加5后还是不能进一位(即四舍),如是5及以上则加5后该位就要向前进一位数(即五人)。进行加5运算后除10再赋给ー个整型变量此时就只有原小数点第二位及以前各位保留在整型变量中,最后再对整型变量除100,这样又明现了两位小数。该题中,进行四舍五入后一定要赋给一个整型变量才能将不用部分彻底变成。。*/fIoatfun(fIoath){longt;h=h*1000;t=(h+5)/10;return(float)t/100;]main()(floata;cIrscr();printf("Entera:");scanf("%f",&a);printf("Theoriginaldatais:");printf("%f\n\n",a);printf("Theresult:%6.2f\n",fun(a));1题目6编写函数fun,函数的功能是:从字符串中删除指定的字符。同一字母的大、小写按不同字符处理。若程序执行时,输入字符串为:turbocandBorIandc++从键盘上输入字符:n,则输出后变为:turbocadborladc++如果输入的字符串不存在,则字符串照原样输出。试题程序。#incIude<stdio.h>#include<conio.h>/・注:该题的算法是让i控制一个ー个字符往后走,在移动过程中如果s[i]不是要删的字符,则将其按顺序放到新串中(新串亦是用S来做,只是用k来控制新串的下标,由于要删除ー些元素,因此新串的下标总是比原下标i要慢。因而可用此法即同一字符串变量的方法。*/intfun(chars[],intc){inti,k=0;for(i=0;s[i];i++)if(s[i]!=c)s[k++]=s[i]:s[k]=’、〇';]main(){staticcharstrロゴturbocandborIandc++”;charch;cIrscr();print"':%s\n",str);printf(":");scanf("%c",&ch);fun(str,ch);printf("str[]=%s\n",str);)题目7请编写ー个unsignedfun(unsignedw),w是一个大于10的无符号整数,若w是n(n>=2)位的整数,函数求出w的后n-1位的数作为函数值返回。例如:w值为5923,则函数返回923;w值为923则函数返回23。试题程序。#include<conio.h>#include<stdio.h>/・注:由于unsigned型整数在。-65535这间,只要它大于10000则对10000求余即得出后面4位,否则如果大于1000则对1000求余得出后3位数,这样ー层ー层往小的判断。由于return的作用除了返回值以外,还有当执行到return时就跳岀该程序,所以可以连续的用if()语句。*/unsignedfun(unsignedw){if(w>=10000)returnw%10000;if(w>=1000)returnw%1000;if(w>=100)returnw%100;returnw%10;)main(){unsignedx:printf("enteraunsignedintegernumber:");scanf("%u",&x);if(x<10)printf("dataerror!,z);eIseprintf("theresu11:%u\n",fun(x));)题目8编写函数intfun(intIim,intaa[MAX]),该函数的功能是求出小于Iim的所有素数并放在aa数组中,该函数返回所求出素数的个数。试题程序。#include<stdio.h>#include<conio.h>#defineMAX100/・注:循环for(i=2;iくk;i++)用于判断k是否为素数,原理是当用2至IJkT这间的数去对k求余,如余数为〇(即被整除)则表示k不是ー个素数。语句if(i>=k)用于判断在上一个for()循环中i能否走到k,如果能则表示在2至リk-1的数都不能整除k,即k为素数。*/intfun(intIim,intaa[MAX]){inti,j=0,k;for(k=2;k<lim;k++){for(i=2;i<k;i++)if(!(k%i))break;if(i>=k)aa[j++]=k;]returnj;)main(){intlimit,i,sum;intaa[MAX];printf("\ninputaintegernumber:,z);scanf("%d”,&limit);sum=fun(Iimit,aa);for(i=0;i<sum;i++){if(i%10==0&&i!=0)printf(z/\nz,);printf("%5d”,aa[i]);题目9请编写函数fun,函数的功能是求出二维数组周边元素之和,作为函数值返回。二维数组中的值在主函数中赋予。例如:二维数组中的值为则函数值为61。试题程序。#include<conio.h>#include<stdio.h>#defineM4#defineN5/・注:该题的第一个for()循环是计算矩阵的最上一行和最下一行的总和,第二个for()是计算除两头元素以外的最左一列和最右一列的元素的和,最后sun就是周边元素的和。*/intfun(inta[M][N]){intsum=0,i;for(i=0;i<N;i++)sum+=a[0][i]+a[M-l][i];for(i=1;i<M-1;i++);sum+=a[i][0]+a[i][N-1];returnsum;1main(){intaa[M][N]={{1,3,5,7,9),(2,9,9,9.4),(6,9,9,9,8),(1,3,5,7,0));inti,j,y;cIrscr();printtlTheoriginaldatais:\n");for(i=0;i<M;i++){for(j=0;j<N;j++)printf("%6d”,aa[i][j]);printf("\n");1y=fun(aa);printf("\nThesum:%d\n”,y);printf("\n");)题目10请编写函数fun,对长度为7个字符的字符串,除首、尾字符外,将其余5个字符按降序排列。例如,原来的字符串为CEAedca,排序后输出为CedcEAa。试题程序。#include<string.h>#incIude<conio.h>#include<stdio.h>/・该题采用的排序法是选择法进行降序排序,算法是用外for()循环从字符串的前端往后端走动,每走动一个字符都用内嵌的for()循环在该字符后找出最小的字符与该字符进行换位。直到外for()循环走到最后ー个字符。此外,此题还要注意把首尾字符除开,即在最外层for()循环中从1开始,只到num-2即可。*/intfun(char*s,intnum){inti,j,t;for(i=1:i<num-2;i++)for(j=i+1;j<num-1;j++)if(s[i]<s[j]){t=s[i];s[i]=s[j];s[j]=t;1)main(){chars[10];cIrscr();printf("输入7个字符的字符串:“);gets(s);fun(s,7);printf("\n%s”,s);]题目”请编ー函数voidfun(inttt[M][N],intpp[N]),tt指向ー个M行N列的二维数组,求出ニ维数组每列中最小元素,并依次放入pp所指ー维数组中,二维数组中的数已在主函数中赋予。试题程序。#incIude〃conio.h"#incIude"stdio.h"#defineM3#defineN4/・注:该题用for(i=0;iくN;i++)来控制一列一列地找,而内嵌循环for(j=O;jくM;j++)用于控制同列内元素的比较。多重循环的嵌套总是最里层循环变化最快,即外层循环改变ー个值,内层循环就要循环完一次,对于多重循环一定要好好去体会和理解,在多数题目中都要用到多重循环(一般为二重)。*/voidfun(inttt[M][N],intpp[N]){inti,j;for(i=0;i<N;i++){pp=tt[0][i];for(j=0;j<M;j++)if(tt[j][i]<pp[i])pp[i]=tt[j][i];])main(){intt[M][N]={{22,45,56,30),{19,33,45.381,{20,22,66.40}};intp[N],i,j,k;cIrscr();printf("theoriginaldatais:\n");for(i=0:i<M;i++){for(j=0;j<N;j++)printfぐ%6d”,t[i][j]);printf("\n");}fun(t,p);printf("\ntheresultis:\n");for(k=0;k<N;k++)printf("%4d”,p[k]);printf("\n");}题目12写一个函数,从传入的num个字符串中找出最长的一个字符串,并通过形参指针max传回该串地址。(注意:用****作为结束输入的标志。)试题程序。#include“stdio.h"#incIude“string.h"#include“conio.h"/・函数strlen()用于求出字符串的长度,这个题中主要是・max=p;不能换成max=&p;如果用maz=&p;则只改变了max的指向,它不能传回给实参。因此我们要改变max指向地址中的内容,这才能使得实参ps有正确的值。*/fun(char(+a)[81],intnum,char**max){char*p=a[0];inti;for(i=1:i<num;i++)if(strIen(a[i])>strIen(p))p=a[i];*max=p;1main(){charss[10][81],*ps;intn,i=0;cIrscr();printf("enterstring:\n");gets(ss[i]);puts(ss[i]);whiIe(!strcmp(ss[i],"****")=0)(i++;gets(ss[i]);puts(ss[i]);]n=i;fun(ss,n,&ps);printf("\nmax=%s\n",ps);)题目13请编ー个函数fun,其中n所指存储单元中存放了数组中元素的个数。函数的功能是:删除所有值为y的元素。数组元素中的值和y的值由主函数通过健盘读入。试题程序。#include<conio.h>#include<stdio.h>#defineM20/・注:该题的算法是,用for()循环控制元素逐一判断数组元素是否等于y,若不等则赋给新数bb,由于删除的关系j总是小于或等于i,故而可用bb作为新数组,与第6题相似。还要注意*n=j;如果没有这个语句则不能传回新数组的个数,另外也不能换成n=&j;这点是用指针时常犯的错误,切记!*/voidfun(intbb[],int*n,inty){inti,j=0;for(i=0;i<*n;i++)if(bb[i]!=y)bb[j++]=bb[i];*n=j;)main(){intaa[M],n,y,k;printf(z\npIeaseentern:“);scanf(”%cT,&n);printf(,z\nenter%dpositivenumber:\n\n);for(k=0;k<n;k++)scanf(&aa[k]);printf(〃theoriginaldatais:\n〃);for(k=0;k<n;k++)print"'%5d",aa[k]);printf(,z\nenteranumbertodeleted:");scanf("%d",&y);fun(aa,&n,y);printf("thedataafterdeleted%d:\n",y);for(k=0;k<n;k++)printf("%4d",aa[k]);printf("\n");)题目14编写ー个函数,该函数可以统计ー个长度为2的字符串在另ー个字符串中出现的次数。例如,假定输入的字符串为:asdasasdfgasdaszx67asdmklo,子字符串为:as,则应输出6。试题程序。#incIude"stdio.h"#incIude"string.h"#incIude"conio.h"/・注:由于小串中只有2个字符所以可用str[i]=sbustr[〇]&&str[i+1]=substr[1]来判断小串是否与长串当前位置(str[i])相同(即出现一次)。因而只要让长串当前位置逐一向后移即可(用for()循环来完成)。*/intfun(char*str,char*substr){inti,n二〇,s二strIen(str);for(i=0;i<s;i++)if((str[i]==substr[0])&&(str[i+1]==substr[1]))n++;returnn;1main()(charstr[81],substr[3];intn;cIrscr();printf("enter1:");gets(str);printf("enter2:");gets(substr);puts(str);puts(substr);n=fun(str,substr);printf("n=%d\n”,n);]题目15请编写一个函数intfun(intx),它的功能是:判断整数x是否是同构数。若是同构数,函数返回1;否则返回〇。所谓“同构数”是指这样的数,它出现在它的平方数的右边。例如:输入整数5,5的平方数是25,5是25中右侧的数,所以5是同构数。x的值由主函数从健盘读入,要求不大于100。试题程序。#include“conio.h"#include“stdio.h"/・注:由“同构数”的定义可得只要求出平方数或平方数的最后一位或平方数的最后两位然后与x进行判断即可,分别求余后即得岀平方数的右边。*/intfun(intx){intxx=x*x;if(xx-x//xx%10—x//xx%100~x)return1;eIsereturn0;)main(){intx,y;cIrscr();printf("\npIeaseenteraintegernumbers:");scanf("%d",&x);if(x>100){printfCdataeror!\n");exit(0);}y=fun(x);if(y)printfC%dyes\n",x);eIseprintf("國dno!\n",x);]题目16请编写函数fun,函数的功能是:在字符串中所有数字字符前加一个$字符。例如,输入:A1B23CD45.则输出为:A$1B$2$3CD$4$5O注意:部分源程序给出如下。#include<stdio.h>/・注:该题用while。循环来控制原字符串从头走到尾,在走动过程中判断是当前字符是否是数字,若是则在新串中先连ー个‘$’然后再连原字符,否则直接连原字符。一定要注意指针和下标的变化。最后要把新串拷贝到s所指的地址中,注意不能用s=a;若用了,则实参数组还是原字符串。*/voidfun(char*s){chara[100];inti二。;while(*s)if(*s>ゴ。’&&*sくゴ9'){a[i++]='$';a[i++]=*s++;}eIsea[i++]=*s++;aゴ、。’;strcpy(s,a);]main(){chars[80];printf(,zenterastring:");scanf("%s",s);fun(s);printf("theresult:%s\n",s);1题目17请编一个函数fun(char*s),函数的功能是把字符串中所有的字符前移ー个位置,串中的第一个字符移到最后。例如:原有的字符串为:Mn.123xyZ,则调用该函数后,串中的内容为:n.123xyZMo试题程序。#incIude"conio.h"#incIude"stdio.h"#defineN81/・注:该题要先将字符串的头元素存到某ー变量(用c二・s)中,然后后面的字符依向前移(用for()循环),要记得在串的未尾加一个结束符。*/fun(char*s){charc二・s;for(;*(s+1);s++)s=*(s+1);s二c;(s+1)二'、。’;main(){chara[N];clrscr();printf("enterastring:");gets(a);printf("theoriginalstringis:");puts(a);fun(a);printfC'thestringaftermodified:");puts(a);1题目18请编写函数fun,函数的功能是:将所有大于1小于整数m的非素数存入xx所指数组中,非素数的个数通过k传回。例如,若输入:17,则应输出:9和46891012141516。试题程序。#include<conio.h>#include<stdio.h>/・注:内嵌的forO循环用于判断是否是素数,在jくi的情况下,只要j对i求余,余数为0则表示i不是素数,则将i存入XX数组中。break;语句只是让它提前结束循环。不用亦可。*/voidfun(intm,int*k,intxx[]){inti,j;*k=0;for(i=2;i<m;i++)for(j=2;j<i;j++)if(i%j=0){xx[(*k)++]=i;break;})main(){intm,n,zz[100];printf("\npIeaseenteranintegernumberbetween10and100:");scanf("%d",&n);fun(n,&m,zz);printf("\n\nthereare%dnon-primenumbersIessthan%d:",m,n);for(n=0;n<m;n++)printf("\n%4d",zz[n]);1题目19请编ー个函数fun(char*s),函数的功能是把字符串中所有的字母改写成该字母的下ー个字母,最后一个字母z改写成字母a。大写字母仍为大写字母,小写字母仍为小写字母,其他的字符不变。例如:原有的字符串为:Mn.123zyZ,则调用该函数后,串中的内容为:No.123yzA»试题程序。include"conio.h〃incIudestring.h〃incIude"stdio.h〃incIude"ctype.h〃defineN81/・该题的思路较为明显,用for()循环一个字符一个字符地走动,移动过程中判断是否在a至b之间,若是则加1(即下移ー个字母),若是z则换成对应的a*/fun(char*s){inti,n=strIen(s);for(i=0;i<n;i++){if((s[i]>='A,&&s[i]<'Z')//(s[i]>='a,&&s[i]<'z'))s[i]=s[i]+1;elseif(s[i]='z')s[i]='a';elseif(s[i]='Z')s[i]='A';)]main(){chara[N];cIrscr();printf("enterastring/);gets(a);print"theoriginalstringis:;puts(a);fun(a);printtlthestringaftermodified:);puts(a);)题目20请编写函数fun,函数的功能是:将s所指字符串中、下标为奇数位置上的大写字母转换为字母序列中的下ー个小写字母;若该位置上是小写字母,则不转换;若该位置上是大写字母Z,则仅转换成小写字母z。例如,输入:ABCdxZZZ,则输出为:AcCdXzZzo试题程序。#incIude“stdio.h#defineN80/・该题的算法与上一题相似,注意同一个字母小写要比大写在ASCII值上大32〇*/voidfun(char*s)inti;for(i=1:i<N:i=i+2)if(s[i]>='A'&&s[i]<Z')s[i]+=32+1;elseif(s[i]=="Z')s[i]+=32;1main()(chars[N];printf(,z\nenterastring:");scanfs);fun(s);printf("\ntheresult:%s\n”,s);]题目21程序定义了N*N的二维数组,并在主函数中赋值。请编写函数fun,函数的功能是:给数组周边元素置〇值。例如:a数组中的值为则返回主程序后a数组中的值应为注意:部分源程序给出如下。请勿改动主函数main和其它函数中的任何去何内容,仅在函数fun的花括号中填入你编写的若干语句。试题程序。#incIude<stdio.h>#incIude<conio.h>#incIude<stdIib.h>#defineN5/・由于是赋值〇,因而只要能表示岀周边元素即好办,它与求和不同在于求和不能重复对某个元素进行运算,而赋值则可重复赋值。所以这里只用了一个for()循环来找出所有的周边元素。*/fun(intw[][N]){inti;for(i=0:i<N;i++){w[i][0]=0;w[i][N-1]=0;w[0][i]=0;w[N-1][i]=0;))main(){inta[N][N],i,j;cIrscr();print"'*****Thearray*****\n");for(i=0;i<N;i++){for(j=O;j<N;j++){a[i][j]=rand()%10;printf("%4d",a[i][j]);)printf("\n");)fun(a);printf(''*****Theresu11*****\n");for(i=0:i<N;i++){for(j=O;j<N;j++)printf("%4d",a[i][j]);printf("\n");1]题目22请编写函数fun,它的功能是:求出ss所指字符串中、指定字符的个数,并返回此值。例如:若输入字符串:123412132,输入字符为:1,则输出:3。试题程序。#includeくconio.h>#includeくstdio.h>#defineM81/・注:本题用while。循环来控制字符的移动,每移动ー个字符都要进行判断(if(*ss=c))是否为指定的字母,若是则个数加1o这里要注意如何让ss指针向下走动(SS++)〇・/intfun(char*ss,charc){intnumニ〇;while(*ss!=r\0f){if(*ss==c)num++;ss++;)return(num);)main。{chara[M],ch;clrscr();printf(,z\nPleaseenterastrint:z,);gets(a);printf(z,\nPIeaseenterachar:zz);ch=getchar();printf(z,\nThenumberofthecharis:%d\n〃,fun(a,ch));)题目23程序定义了N*N的二维数组,并在主函数中赋值。请编写函数fun,函数的功能是:求出数组周边元素的平均值并作为函数值返回给主函数中的s。例如:a数组中的值为则返回主程序后s的值应为:3.3750试题程序。incIude<stdio.h>incIude<conio.h>#include<stdlib.h>defineN5/・注意不能重复计算,它与题21不同,第一个for()循环求出第一列与最后ー列的和,第二个for()循环求出第一行与最后一行(已除去两头元素),要注意第二个for()中起始为1,最后为N-2。*/doubIefun(intw[][N]){inti,t=0;doubIes=0;for(i=0;i<N;i++){s+=w[i][0]+w[i][N-1];t+=2;}for(i=1;i<N-1;i++){s+=w[0][i]+w[N-1][i];t+=2;}s=s/t;returns;1main(){inta[N][N]={0,1,2,7,9,1,9,7,4,5,2,3,8,3,1,4,5,6,8,2,5,9,1,4,1};inti,j;doubIes;cIrscr();print"'*****Thearray*****\n");for(i=0;i<N;i++){for(j=0;j<N;j++)printf("%4d",a[i][j]);printf("\n");)s=fun(a);printf("**♦*♦Theresult*****\n");printf("Thesumis%lf\n",s);)题目24编写一个函数fun,它的功能是:实现两个字符串的连接(不使用库函数strcat)例如,分别输入下面两个字符串:FirstSrting—SecondString程序输出:FirstString一SecondString注意:部分源程序给出如下。请勿改动主函数main和其它函数中的任何去何内容,仅在函数fun的花括号中填入你编写的若干语句。试题程序。#includeくstdio.h>#include<conio.h>/・注:第一个for()循环用于让i成为第一个字符串的结束符的下标,要注意在这个for()后要有一个分号否则岀错。第二个for()的作用是将第二个字符串ー个一个字符依次放到第一个字符串的未尾。此外,还要注意最后一定要有P"i]ゴ、〇';来给字符串加上结束符。*/voidfun(charp1[],charp2[]){inti,j;for(i=0;p1[i];i++);for(j=O;p2[j];j++)p1[i++]=p2[j];p1[i]=>\01;]main(){chars1[80],s2[80];cIrscr();printf("Enters1ands2:'n");scanf("%s%s”,s1,s2);printf("sに%s'n”,s1);printf("s2=%s'n”,s2);printf(z,Invokefun(s1,s2):'n");fun(s1,s2);printf("Afterinvoking:\n,z);printf(zz%s\n,z,s1);)题目25程序定义了N*N的二维数组,并在主函数中自动赋值。请编写函数fun(inta[][N]),函数的功能是:使数组第一列元素中的值与最后一列元素中的值对调、第二列元素的值与倒数第二列中的值对调、……、其他依次类推。例如:a数组中的值为则返回主程序后a数组中的值应为注意:部分源程序给出如下。请勿改动主函数main和其它函数中的任何去何内容,仅在函数fun的花括号中填入你编写的若干语句。试题程序。#include<stdIib.h>#include<conio.h>#include<stdio.h>#defineN5/・本题的第一个for()循环用于控制行,而内嵌的for()用于在同一行中将列与列对调,当1为0时为第m行的第一列元素,a[m][NT-i]为第m行的最后一列的元素,正好符合调换的要求。依次类推。*/intfun(inta[][N]){inti,m,t;for(m=0;m<N;m++)for(i=0;i<N/2;i++){t=a[m][i];a[m][i]=a[m][N-1-i];a[m][N-1-i]=t;)1main(){inta[N][N],i,j;cIrscr();print"'*****Thearray*****\n");for(i=0;i<N;i++){for(j=0;j<N;j++){a[i][j]=rand()%3O;printf("%4d",a[i][j]);}printf("\n");)fun(a);printf("*****TheresuIt*****\n");for(i=0:i<N;i++){for(j=0;j<N;j++)printf("%4d",a[i][j]);printf("\n");)1题目26请编写函数fun,函数的功能是:实现B=A+A',即把矩阵A加上A的转置,存放在矩阵B中。计算结果在main函数中输出。例如:输入下面的矩阵:其转置矩阵为:程序输出:注意:部分源程序给出如下。请勿改动主函数main和其它函数中的任何去何内容,仅在函数fun的花括号中填入你编写的若干语句。试题程序。#include<conio.h>#include<stdio.h>/*26题:本题没有先求出A的转置,而是直接利用转置的性质(即第一行作为转置后的第一列,第二行作为转置后的第二列,的行列互换的性质)。而且最后要求出两矩阵的相加后得出的新矩阵,由转置性质可知原转置后位置为a[i]ロ],在表达式:b[i] [i]第一个a为A的元素,第二个a为A,的元素。*/voidfun(inta[3][3],intb[3][3]){inti,j;for(i=0;i<3;i++)for(j=0;j<3;j++)b[i][j]=a[i][j]+a[j][i];)main(){inta[3][3]={{1,2.3},{4,5.6},{7,8,9}},t[3][3];inti,j;cIrscr();fun(a,t);for(i=0;i<3;i++){for(j=0;j<3;j++)printf(,z%7dw,t[i][j]);printf("\n");)1题目27序定义了N*N的二维数组,并在主函数中自动赋值。请编写函数fun(inta[][N]),函数的功能是:使数组第一行元素中的值与最后一行元素中

温馨提示

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

评论

0/150

提交评论