编写程序最新.doc_第1页
编写程序最新.doc_第2页
编写程序最新.doc_第3页
编写程序最新.doc_第4页
编写程序最新.doc_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

习题七一、单选题7-1. 以下程序的输出结果是_B_。main()int n2=0,i,j,k=2;for(i=0;ik;i+)for(j=0;jk;j+) nj=ni+1;printf(%dn,n1);A. 不确定的值 B. 3 C. 2 D. 17-2以下程序的输出结果是_ B_。main( ) int i,k,a10,p3;k=5;for(i=0;i10;i+) ai=i;for(i=0;i3;i+) pi=ai*(i+1);for(i=0;i3;i+) k+=pi*2;printf(%dn,k);A. 20 B. 21 C. 22 D. 237-3. 以下正确的数组定义语句是_A_。 A int y14 = 1,2,3,4,5;B float x3 = 1,2,3;C long s23 = 1,1,2,1,2,3;D double t 3 = 0;7-4若有说明: int a 4;则aij前有_B_个元素。A. j*4+i B. i*4+j Ci*4+j-1 D. i*4+j+17-5. 以下程序的输出结果是_C_。main( ) int m33=1,2,3;int n33=1,2,3printf(%dn,m10+n00); printf(%dn,m01+n10); A. 0 B. 2 C. 3 D. 1 0 3 0 27-6. 以下程序的输出结果是_C_。main() int i,x33=1,2,3,4,5,6,7,8,9;for(i=0;i3;i+) printf(%d,xi2-i); A 1,5,9, B. 1,4,7, C. 3,5,7, D. 3,6,9,7-7.下列程序_B_(每行前的数字表示行号)。1 main( )2 float a10=0.0; int i;3 for(i=0;i3;i+) scanf(%d,&ai);4 for(i=1;i10;i+) a0=a0+ai;5 printf(%fn,a0);A. 没有错误 B. 第2行有错 C. 第3行有错 D. 第5行有错7-8. 以下程序段的功能是_A_。main( )int j,k,e,t,a =4,0,6,2,64,1;for(j=0;j5;j+)t=j;for(k=j;kat) t=k;e=at;at=aj;aj=e; for(k=0;k6;k+)printf(%5d,ak);A. 对数组进行气泡法排序(升序) B. 对数组进行气泡法排序(降序)C. 对数组进行选择法排序(升序) B. 对数组进行选择法排序(降序)二、填空题 0 1 1 2 37-9. 以下程序的输出结果是。5 8 13 21 34main( ) 55 89 144 233 377 610 987 1597 2584 4181main( ) int arr20,i;arr0=0; arr1=1;for(i=2;i20;i+) arri=arri-2+arri-1;for(i=0;i20;i+) if(i%5=0) printf(n);printf(%10d,arri); 7-10. 以下程序的功能:把a数组的行和列元素互换后存入b数组。请填空使程序正确。 main( ) int i,j, a23=1,2,3,4,5,6,b32;_printf(“array a:n”)_;for(i=0;i2;i+) for(j=0;_ _j3_;j+) printf(%5d ,aij);_bji=aij_; printf(n);for(i=0;_ i=2_;i+) for(j=0;j=1;j+) printf(%5d ,bij);printf(n); 7-11. 以下程序的功能:输入30个人的年龄,统计18岁、19岁、25岁各有多少人。填空,使程序正确。main( )int i,n,age,a8=0;for(i=0;i30;i+) scanf(%d,&age); _ aage-18+ _; _;printf(age - numbern);for(_i=0_;_ _i=25_;i+) printf(%5d %6dn,i+8,ai);7-12. 以下程序的功能: 在给定数组中查找某个数,若找到,则输出该数在数组中的位置,否则输出can not found!。填空,使程序正确。main( ) int i,n,a8=25,21,57,34,12,9,4,44;scanf(%d,&n);for(i=0;i=8_) printf(can not found!n);7-13. 以下程序的功能:把两个按升序排列的数组合并成一个按升序排列的数组。填空,使程序正确。main( ) int i=0,j=0,k=0,a3=5,9,19,b5=12,24,26,37,48,c10;while(i3 & jbj)_) ck=bj;k+;j+;else ck=ai;k+;i+;while(_i3_) ck=ai;k+;i+;while(_j5_) ck=bj;k+;j+;for(i=0;ik;i+) printf(%3d,ci);7-14求出如下所示矩阵中各行元素之和,并以矩阵形式输出原矩阵及相应行元素之和。填空,使程序正确。3 5 62 1 48 7 1main( ) int i,j;static int a34=3,5,6,0,2,1,4,0,8,7,1,0;for(i=0;i3;i+)for(j=0;j3;j+)ai3+= _ aij_; for(i=0;i3;i+)for( _(j=1_;_j=4_;_j+_) printf(%3d,aij);if( _j%4=0_ ) printf( _”n”_ );三、编程题7-15若题7-14要求二维数组两条对角线元素值的和,应如何修改该程序?#include #define N 5 main() int aNN,i,j,s=0; for(i=0;iN;i+) for(j=0;jN;j+) aij=random(90)+10; printf(%4d,aij); printf(n); for(i=0;iN;i+) s=s+aii+aiN-i-1; printf(s=%dn,s); printf(s=%dn,s); 7-16. 编写程序,定义一个数组,分别赋予从2开始的30个偶数,然后按顺序每5个元素求出一个平均值,并放在该数组的末尾。#include #define N 30 void main() int scoreN; float averN,temp=0; int i,j,n; for(i=1,j=0;i=30;i+) if(i%2=0) scorej=i; printf(%d ,scorej); j+; n=j; for(i=1,j=0;i=n;i+) temp+=(float)scorei-1; if(i%5=0) averj=temp/5; temp=(float)scorei-1; j+; printf(n平均分为:n); for(i=0;ij;i+) printf(%.2f ,averi); 7-18编写程序,产生30个随机数到数组中,任意指定位置k,从第k个数开始依次后移3个位置。输出移动前后的数组。#include#include#define N 30int main()int i,j,k,a30,s;for(i=0;i=k;i-)ai=ai-3;for(i=0;i=30;i+)printf(%d ,ai);printf(n);7-19编写程序,产生30个随机数到数组中,删除其中的最大值,输出删除前后的数组。#include #include #include const int M = 30; /控制数组大小const int N = 100; /控制随机数大小范围在0-100之内int main()srand(time(0); /产生随机数种子int randArrayM = 0;int i = 0 ;for (i = 0;i M;i+) /生成30个随机数randArrayi = rand()%N+1;for (i = 0;i M;i+) /打印刚刚生成的随机数printf(%d ,randArrayi);int max = randArray0;int num = 0;for (i = 1;i max)max = randArrayi;num = i;int temp = 0;for (i = num;iM-1;i+) /删除最大数randArrayi = randArrayi+1;printf(nThe max number is %d !n,max);/输出最大的数for (i = 0;i M-1;i+) /打印删除后结果printf(%d ,randArrayi);printf(n);return 0;7-20编写程序,输入任意10进制4位正整数,将其化成二进制数。#includemain( ) int j,k=0,a16=0,s; scanf(“%d”,&s); /* 输入待转化的10进制4位正整数s */ while(s0) /* 按”除二取余”得到各位二进制数ak*/ ak=s%2; k+; s=s/2; for(j=15;j=0;j-)/* 按倒排方式输出二进制数的各位数字printf(“%2d”,aj);7-21编写程序, 产生30个50以内的随机整数到5行6列数组中,输出那些在行和列上均为最小的元素。#include#includemain() int a56=0; int i,j,min52; srand(unsigned)time(NULL); for(i=0;i5;i+) for(j=0;j6;j+) aij=rand()%50; printf(%-4d ,aij); printf(n); for(i=0;i5;i+) mini0=aij; mini1=0; for(j=1;jaij) mini0=aij; mini1=j; for(i=0;i5;i+) for(j=0;j5;j+) if(ajmini1mini0) mini1=-1; break; if(mini1!=-1) printf(第%d行第%d列: %dn,i+1,mini1+1,mini0); return 0;7-22编写程序, 产生30个10,100中的随机整数到5行7列数组a的前6列中,求每行元素值的和,并把和值记录在各行的最后一个元素,如:a26存放的是2行的和。然后将和值最大的行与首行对调。#includemain( ) int i,j,p,q,a57,f; for(i=0;i5;i+) /* 产生a数组*/ for(j=0;j6;j+) aij=rand()%91+10; for(i=0;i5;i+) /* 产生i行的和并存放在ai6 */ ai6=0; for(j=0;j6;j+) ai6+= aij; for(i=0;i5;i+) /* 输出a数组*/ for(j=0;j7;j+) printf(“%5d”,aij);printf(“n”);p=0; for(i=1;iap6) p=i; for(j=0;j7;j+) /* 0行与p行交换位置 */ q= a0j; a0j= apj; apj=q; for(i=0;i5;i+) /* 输出交换后的a数组*/ for(j=0;j7;j+) printf(“%5d”,aij);printf(“n”);7-23编写程序, 产生30个1,100中的随机整数到5行6列数组中,任意输入一个正整数k,输出数组中与k大小相差5以内的所有元素。#include#includeInt main( ) int i,j,k,a56; for(i=0;i5;i+) /* 产生a数组*/ for(j=0;j6;j+) aij=rand()%100+1; for(i=0;i5;i+) /*输出a数组*/ for(j=0;j6;j+) printf(“%5d”,aij);printf(“n”); scanf(“%d”,&k); for(i=0;i5;i+) /* 输出与k的差小于5的数组元素 */ for(j=0;j6;j+) if(abs(k-aij)5) printf(“%5d”,aij);printf(“n”);7-24编写程序, 产生30个1,100中的随机整数到5行6列数组中,按升序重新排序,并按列的顺序存放到另一个数组中。输出排序前后的情况。#include#includeint main( ) int i, j, t, k=0, a56, b56, c30;for ( i=0; i5; i+ )for ( j=0; j6; j+ )ck+ = aij = rand()%100+1;for ( i=0; i29; i+ ) k=i;for ( j=i+1; jcj ) k=j;if ( k!=i ) t=ck; ck=ci; ci=t; k=0;for ( j=0; j6; j+ ) for ( i=0; i5; i+ )bij = ck+;for ( i=0; i5; i+ ) for ( j=0; j6; j+ )printf(%5d,aij);printf(n);for ( i=0; i5; i+ )for ( j=0; j6; j+ )printf(%5d,bij);printf(n);7-25编写程序, 产生30个1,100中的随机整数到5行6列数组中,求其中最大值和最小值,并把最大值元素与右上角元素对调,把最小值元素与左下角元素对调。输出重排前后的情况。习题八一、单选题8-1. 对以下程序从第一列开始输入数据:2473, 程序的输出结果是 A_。#include stdio.hmain( )int c;while(c=getchar( )!=n) switch(c-2) case 0:case 1: putchar(c+4); case 2: putchar(c+4); break;case 3: putchar(c+3); default : putchar(c+2); A668977 B. 668966 C. 66778777 D. 66887668-2. 能正确进行字符串赋值的是_D_。Achar s5=a,e,i,o,u; B. char s5; s=good;C. char s5=abcd; D. char s5; s =good;8-3. 不能正确为字符数组输入数据的是_A_。Achar s5; scanf(%s,&s); B. char s5; scanf(%s,s);C. char s5; scanf(%s,&s0); D. char s5; gets(s);8-4. 若有char a80,b80;则正确的是_D_。Aputs(a,b); B. printf(%s,%s,a ,b );C. putchar(a,b); D. puts(a);puts(b);8-5以下程序的输出是_A_。main( )char a25=6937,8254; int i,j,s=0;for ( i = 0; i 0 & aij=9; j+=2 )s=10*s+aij-0;printf(s=%dn,s); A. 6385 B. 69825 C. 63825 D. 693825二、填空题8-6. 以下程序的输出是_fi _。main( ) char a34=abc,efg,hij; int k;for(k=1;k3;k+) putchar(ak1);8-7. 以下程序的输出是GDABC 。#include string.hmain( ) char b30;strcpy (b,GH); strcpy(&b1,DEF);strcpy (&b2,ABC); puts(b); 8-8. 以下程序的输出是_ahAMa_。(表示空格,表示回车)#include stdio.hmain( ) char a80,c=a; int j=0;scanf(%s,a);while(aj!=0) if (aj=c ) aj=aj-32;else if ( aj=c-32 ) aj=aj+32;j+;puts(a); 输入:AhaMAAha8-9. 以下程序的输出是_LBLMNP_。#include string.hmain( ) char a80=AB,b80=LMNP;int j=0;strcat(a,b);while(aj+!=0) bj=aj;puts(b); 8-10. 以下程序的功能:从键盘上输入一行字符,存入一个字符数组中,然后输出该字符串。请填空。#include ctype.h#include stdio.hmain( ) char str81;int i;for ( i=0; i80; i+ ) stri = getchar( );if ( stri =n ) break;stri = _0_ ; i=0;while ( stri ) putchar( str_i+_);8-11. 以下程序的功能:输入10个字符串,找出每个字符串的最大字符,并依次存入一维数组中,然后输出该一维数组。填空,使程序正确。#include stdio.hmain( )int j,k; char a1080,b10;for(j=0;j10;j+) gets(ai);for(j=0;j10;j+) bj=aj0_;for(k=1;ajk!=0;k+)if(bjajk) _bj=ajk_;for(j=0,j10;j+) 8-12. 以下程序的功能:删除字符串中所有的C字符。填空,使程序正确。#include stdio.hvoid main( ) int j,k; char a80;gets(a);for(j=k=0;aj!=0;j+)if(aj!=c & aj!=C) _ak+=aj_;else for(k=j+1;ak !=0;k+) ak-1=ak;a_=0;printf(%sn,a);三、编程题8-13编写程序,实现gets( )函数的功能。#include gets1(char s ) int j=0; char c; while(c=getchar()!=n)sj+=c; sj=0; main() char s80; gets1(s); printf(“%sn”,s);8-14编写程序,实现puts( )函数的功能。8-15. 编写程序,判断给定字符串是否回文。回文是指顺读和倒读都一样的字符串。#include #include int main( ) char a80; int i,j,k,p; gets(a); k=strlen(a); p=1; for ( i=0,j=k-1; ij; i+,j- ) /* 检查是否回文。P=1:是;p=0:否 */ if ( ai!=aj ) p=0; break; if ( p!=0 ) printf(“a=%s,yesn”,a);else printf(“a=%s,non”,a);8-16编写程序,任意输入一个字符串,将其中的字符按从小到大的顺序重排。#include#include#includeusingnamespacestd;intmain()strings;cins;sort(s.begin(),s.end();s.erase(unique(s.begin(),s.end(),s.end();couts;system(pause);return0;8-17编写程序,任意输入一个字符串,将其中的最大字符放在字符串的第2个字符位置,将最小字符放在字符串的倒数第2个字符位置。#include #include int main( ) char a80,max,min; int i,j,k,t,p; gets(a); k=strlen(a); max=min=0; for ( i=1; ik; i+ ) /* 找最大值和最小值的下标max、min */ if ( amaxai ) min=i; t=a1; a1=amax; amax=t; /* 最大值amax与a1交换*/ if ( min=1 ) /*若最小值是a1,则a1已交换到amax,故amax与ak-2交换 */ t=ak-2; ak-2=amax; amax=t; else t=ak-2; ak-2=amin; amin=t; printf(“a=%sn”,a);8-18编写程序,任意输入a、b两个字符串,将b串中的最大字符插入到a串的最小字符的前面。8-19编写程序,输入一个3位正整数,计算其各位数字的和值,取该和值被13除的余数,若余数为零,则输出*,否则输出对应的月份英文单词。输出形式如下(以整数539和246为例):539=5+3+9=17

温馨提示

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

评论

0/150

提交评论