第一范文网 - 专业文章范例文档资料分享平台

C语言 习题七 参考答案

来源:用户分享 时间:2025/10/1 18:56:37 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

printf(\ }

4、 编写程序,输入任意10进制4位正整数,将其化成二进制数。 程序1:

main( )

{int j,k=0,a[16]={0},s;

scanf(“%d”,&s); /* 输入待转化的10进制4位正整数s */ while(s>0) /* 按”除二取余”得到各位二进制数a[k]*/ { a[k]=s%2; k++; s=s/2; }

for(j=15;j>=0;j--)/* 按倒排方式输出二进制数的各位数字 */ printf(“-”,a[j]); }

程序2:

/*P196_4.c*/ main()

{int n,i;char a[16]; long k=1;

printf(\ scanf(\

while(n>k) /*求大于n且最接近n的二进制权值*/ k=k*2; k=k/2;

for(i=0;k>0;i++) /*用除权法将n转换未二进制*/ {a[i]=n/k+'0'; n=n%k; k=k/2; }

a[i]='\\0';

printf(\ } 5、 编写程序, 产生30个50以内的随机整数到5行6列数组中,输出那些在行和列上均为

最小的元素。 main( ) /*解1*/

{ int i,j,p,q,a[5][6],f;

for(i=0;i<5;i++) /* 产生a数组并输出 */ {for(j=0;j<6;j++)

{a[i][j]=rand()P;

printf(“]”,a[i][j]);} printf(“\\n”);}

f=0; /* 标志量,f=0:未找到目标,f=1:找到目标 */ for(i=0;i<5;i++)

{p=0; /* p记录i行最小值列下标 */

for(j=1;j<6;j++) /* 找i行最小值a[i][p] */

if(a[i][j]

q=0;

for(j=1;j<5;j++) /* 找p列最小值a[q][p] */

if(a[j][p]

if(q==i) /* a[q][p]是i行最小元素,也是p列最小元素 */ {f=1; printf(“min=a[%d][%d]=%d\\n”,q,p,a[q][p]);} } }

#include \解2 */ main()

{int a[6][6],i,j,m,n; for(i=0;i<5;i++) {for(j=0;j<6;j++)

{a[i][j]=random(50); printf(\ }

printf(\ }

for(i=0;i<5;i++) {m=0;n=0;

for(j=1;j<6;j++)

if(a[i][j]

{if(j==i)continue;

if(a[j][m]

if(n==0)printf(\ }

printf(\}

6、 编写程序, 产生30个[10,100]中的随机整数到5行7列数组a的前6列中,求每行元

素值的和,并把和值记录在各行的最后一个元素,如:a[2][6]存放的是2行的和。然后将和值最大的行与首行对调。 #include \main()

{int a[5][7],i,j,k=0,t; randomize(); printf(\ for(i=0;i<5;i++) {a[i][6]=0;

for(j=0;j<6;j++)

{a[i][j]=random(91)+10;

a[i][6]=a[i][6]+a[i][j]; /*求没行和*/ printf(\输出*/ }

printf(\

if(a[i][6]>a[k][6])k=i; /*查找和值最大行*/ }

printf(\ for(j=0;j<7;j++)

{t=a[0][j];a[0][j]=a[k][j];a[k][j]=t; /*交换*/

}

for(i=0;i<5;i++) {for(j=0;j<7;j++)

printf(\交换后输出*/ printf(\ } }

7、 编写程序, 产生30个[1,100]中的随机整数到5行6列数组中,求其中最大值和最小

值,并把最大值元素与右上角元素对调,把最小值元素与左下角元素对调。输出重排前后的情况。

#include \main()

{int a[5][6],i,j,ml=0,mw=0,nl=0,nw=0,t; for(i=0;i<5;i++) {for(j=0;j<6;j++)

{a[i][j]=random(100)+1; /*产生随机数*/ printf(\输出数组元素值*/

if(a[i][j]>a[ml][mw]){ml=i;mw=j;} /*查找最大值元素*/ if(a[i][j]

printf(\ }

printf(\ printf(\

t=a[0][5];a[0][5]=a[ml][mw];a[ml][mw]=t; /*最大值元素与右上角元素对调*/ t=a[4][0];a[4][0]=a[nl][nw];a[nl][nw]=t; /*最小值元素与左下角元素对调*/ for(i=0;i<5;i++) {for(j=0;j<6;j++)

printf(\输出对调后的数组*/ printf(\ } }

8、编写程序,实现gets( )函数的功能。

#include “stdio.h” gets1(char s[ ]) {int j=0; char c;

while((c=getchar())!=’\\n’) s[j++]=c; s[j]=’\\0’; }

main()

{char s[80]; gets1(s);

printf(“%s\\n”,s); }

9、 编写程序,判断给定字符串是否回文。回文是指顺读和倒读都一样的字符串。 #include “stdio.h” #include “string.h” main( )

{ char a[80];

int i,j,k,p;

gets(a); k=strlen(a); p=1;

for ( i=0,j=k-1; i

if ( p!=0 ) printf(“a=%s,yes\\n”,a); else printf(“a=%s,no\\n”,a);

}

10、编写程序,任意输入一个字符串,将其中的最大字符放在字符串的第2个字符位置,将最小字符放在字符串的倒数第2个字符位置。 #include “stdio.h” #include “string.h” main( )

{ char a[80],max,min;

int i,j,k,t,p;

gets(a); k=strlen(a); max=min=0;

for ( i=1; ia[i] ) min=i; }

t=a[1]; a[1]=a[max]; a[max]=t; /* 最大值a[max]与a[1]交换 */

if ( min==1 ) /*若最小值是a[1],则a[1]已交换到a[max],故a[max]与a[k-2]交

换 */

{ t=a[k-2]; a[k-2]=a[max]; a[max]=t; }

else { t=a[k-2]; a[k-2]=a[min]; a[min]=t; } printf(“a=%s\\n”,a); }

11、编写程序,输入一个3位正整数,计算其各位数字的和值,取该和值被13除的余数,若余数为零,则输出****,否则输出对应的月份英文单词。输出形式如下(以整数539和247为例):

539:5+3+9=17,17=4,April 247:2+4+7=13,13=0,**** main( )

{ int i,j,k,n,t,p;

char a[13][20] = {”***”, “January”, “February”, “Match”, “April”, “May”, “June”, “July”, “August”,

“September”, “October”, “November”, “Deccember” }; scanf(“%d”,&n);

i=n/100; j=n/10; k=n; p=i+k+j; t=p;

printf(“%d: %d+%d+%d=%d,%d%= %d,%s\\n”,n,i,j,k,p,p,t,a[t]); }

12、编写程序,任意输入5个字符串存放到2维数组中,按字符串的长度从短到长顺序输出它们。

程序1:

#include “string.h” main( )

{ int i,j,k,n,t,p,b[5];

char a[5][80];

for ( i=0; i<5; i++ ) /* 输入各字符串,并在b数组中记录各串的行号 */ {gets(a[i]); b[i]=i; }

for ( i=0; i<4; i++ ) /* 选择法按字符串的长度从短到长排序 */ {k=i;

for ( j=i+1; j<5; j++ )

if ( strlen(a[b[k]])>strlen(a[b[j]]) ) k=j; if ( k!=i ) { t=b[k]; b[k]=b[i]; b[i]=t; } }

for ( i=0; i<5; i++ )

printf(“%d,%s\\n”,b[i],a[b[i]]); }

程序2: /*P197_12*/

#include \main()

{char s[5][80],t[80]; int i,j,k; for(i=0;i<5;i++) gets(s[i]); for(i=0;i<5;i++) {k=i;

for(j=i;j<5;j++)

if(strlen(s[k])>strlen(s[j]))k=j; strcpy(t,s[k]); strcpy(s[k],s[i]); strcpy(s[i],t); }

for(i=0;i<5;i++) puts(s[i]); }

搜索更多关于: C语言 习题七 参考答案 的文档
C语言 习题七 参考答案.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c7r9z38s9uy52amw9ksy7_2.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top