c语言第六章作业答案,《C语言程序设计》课后习题答案(第六章)

6.1 用筛选法求100之内的素数.

#include

#define N 101

void main()

{ int

i,j,line,a[N];

for(i=1;i<=100;i++)

a[i]=i;

a[1]=0;

for(i=2;i

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

{ if(a[i]!=0

&& a[j]!=0)

if(a[j]%a[i]==0)

a[j]=0;

}

printf("\n");

for(i=2,line=0;i<=100;i++)

{ if(a[i]!=0)

{ printf("%5d",a[i]);

line++;

if(line==10)

{

printf("\n");

line=0;

}

}

}

}

6.2 用选择法对10个数排序.

#define N 10

main()

{

int

i,j,min,temp,a[N];

printf("请输入十个数:\n");

for

(i=0;i<=10;i++)

{ printf("a[%d]=",i);

scanf("%d",&a[i]);

}

printf("\n");

for(i=1;i<=10;i++)

printf("%5d",a[i]);

printf("\n");

for

(i=1;i<=9;i++)

{ min=i;

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

if(a[min]>a[j]) min=j;

temp=a[i];

a[i]=a[min];

a[min]=temp;

}

printf("\n排序结果如下:\n");

for(i=0;i

printf("%5d",a[i]);

}

6.3 对角线和:

main()

{

float

a[3][3],sum=0;

int

i,j;

printf("请输入矩阵元素:\n");

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

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

scanf("%f",&a[i][j]);

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

sum=sum+a[i][i];

printf("对角元素之和= 6.2f",sum);

}

6.4 插入数据到数组

main()

{ int

a[11]={1,4,6,9,13,16,19,28,40,100};

int

temp1,temp2,number,end,i,j;

printf("初始数组如下:");

for

(i=0;i<10;i++)

printf("%5d",a[i]);

printf("\n");

printf("输入插入数据:");

scanf("%d",&number);

end=a[9];

if(number>end)

a[10]=number;

else

{

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

{ if(a[i]>number)

{

temp1=a[i];

a[i]=number;}

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

{ temp2=a[j];

a[j]=temp1;

temp1=temp2;

}

break;

}

}

}

for(i=0;j<11;i++)

printf("a%6d",a[i]);

}

6.5 将一个数组逆序存放。

#define N 5

main()

{

int

a[N]={8,6,5,4,1},i,temp;

printf("\n 初始数组:\n");

for(i=0;i

printf("%4d",a[i]);

for(i=0;i

{

temp=a[i];

a[i]=a[N-i-1];

a[N-i-1]=temp;

}

printf("\n 交换后的数组:\n");

for(i=0;i

printf("%4d",a[i]);

}

6.6 杨辉三角

#define N 11

main()

{

int i,j,a[N][N];

for(i=1;i

{ a[i][i]=1;

a[i][1]=1;

}

for(i=3;i

for(j=2;j<=i-1;j++)

a[i][j]=a[i-1][j-1]+a[i-1][j];

for(i=1;i 

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

printf("%6d",a[i][j];

printf("\n");

}

printf("\n");

}

6.7

打印“魔方阵解: #include

main()

{ int a[15][15],i,i,k,p,m,n;

p=1;

while(p==1) { printf("Enter

n(n=1~15):");

scanf("%d",&n);

if((n!=0)&&(n<=15)&&(n%2!=0))

p=0;

a4c26d1e5885305701be709a3d33442f.png

}

for(i=1;i<=n;i++)

for(j=1;j<=n;)

a[i][j]=0

j=n/2+1;

a[1][j]=1;

for(k=2;k<=n*n;k++)

{

i=i-1;

j=j-1;

if((i<1)&&(j>n))

{

i=i+2;

j=j+2;

}

else

{

if(i<1) i=n;

if(j>n) j=1;

}

if(a[i][j]= =0)

a[i][j]=k;

else

{

i=i+2;

j=j-1;

}

if(a[i][j]==0)

a[i][j]=k;

else

{

i=i+2;

j=j-1;

a[i][j]=k;

}

}

for(i=1;i

{

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

printf("%5d",a[i][j]);

printf("\n")

}

}

6.8鞍点

#define N 10

#define M 10

main()

{ int

i,j,k,m,n,flag,a[N][M],max,maxj,flag;

printf("please input

matrix:\n");

for(i=0;i

for(j=0;j

scanf("%d",&a[i][j]);

for(i=0;i

{

max=a[i][0];

maxj=0;

for(j=0;j

if(a[i][j]>max)

{

max=a[i][j];

maxj=j;

}

flag=1;

for(k=0;k

if(max>a[k][maxj])

{ flag=0;

continue;

}

if(flag)

{

printf("a[%d][%d]=%d\n",i,maxj,max);

break

}

}

if(!flag2)

printf("it is not

exist!\n");

}

6.9

(变量说明:top,bott:查找区间两端点的下标;loca:查找成功与否的开关变量.)

#include

#define N 15

main()

{ int

i,j,number,top,bott,min,loca,a[N],flag;

char

c;

printf("输入15个数(a[i]>[i-1])\n);

scanf("%d",&a[0]);

i=1;

while(i

{ scanf("%d",&a[i]);

if(a[i]>=a[i-1])

i++;

esle

{ printf("请重输入a[i]");

printf("必须大于%d\n",a[i-1]);

}

}

printf("\n");

for(i=0;i

printf("%4d",a[i]);

printf("\n");

flag=1;

while(flag)

{

printf("请输入查找数据:");

scanf("%d",&number);

loca=0;

top=0;

bott=N-1;

if((numbera[N-1]))

loca=-1;

while((loca==0)&&(top<=bott))

{ min=(bott +

top)/2;

if(number==a[min])

{ loca=min;

printf("%d位于表中第%d个数\n",number,loca+1);

}

else

if(number

bott=min-1;

else

top=min+1;

}

if(loca==0||loca==-1)

printf("%d不在表中\n",number);

printf("是否继续查找?Y/N!\n");

c=getchar();

if(c=='N'||c=='n')

flag=0;

}

}

6.10

main()

{ int

i,j,uppn,lown,dign,span,othn;

char

text[3][80];

uppn=lown=dign=span=othn=0;

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

{ printf("\n请输入第%d行:\n",i);

gets(text[i]);

for(j=0;j<80 &&

text[i][j]!='\0';j++)

{if(text[i][j]>='A'

&&

text[i][j]<='Z')

uppn+=1;

else if(text[i][j]>='a'

&&

text[i][j]<='z')

lown+=1;

else if(text[i][j]>='1'

&&

text[i][j]<='9')

dign+=1;

else if(text[i][j]=' ')

span+=1;

else

othn+=1;

}

}

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

printf("%s=n",text[i]);

printf("大写字母数:%d\n",uppn);

printf("小写字母数:%d\n",lown);

printf("数字个数:%d\n",dign);

printf("空格个数:%d\n",span);

printf("其它字符:%d\n",othn);

}

6.11

main()

{static

char a[5]={'*','*','*','*','*'};

int i,j,k;

char space='

';

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

{

printf("\n");

for(j=1;j<=3*i;j++)

printf("%lc",space);

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

printf("%3c",a[k];

}

}

6.12

#include

main()

{ int i,n;

char

ch[80],tran[80];

printf("请输入字符:");

gets(ch);

printf("\n密码是%c",ch);

i=0;

while(ch[i]!='\0')

{

if((ch[i]>='A')&&(ch[i]<='Z'))

tran[i]=26+64-ch[i]+1+64;

else

if((ch[i]>='a')&&(ch[i]<='z'))

tran[i]=26+96-ch[i]+1+96;

else

tran[i]=ch[i];

i++;

}

n=i;

printf("\n原文是:");

for(i=0;i

}

6.13

main()

{

char

s1[80],s2[40];

int

i=0,j=0;

printf("\n请输入字符串1:");

scanf("%s",s1);

printf("\n请输入字符串2:");

scanf("%s",s2);

while(s1[i]!='\0')

i++;

while(s2[j]!='\0')

s1[i++]=s2[j++];

s1[i]='\0';

printf("\n连接后字符串为:%s",s1);

}

6.14

#include

void

main()

{ int

i,resu;

char

s1[100],s2[100];

printf("请输入字符串1:\n");

gets(s1);

printf("\n

请输入字符串2:\n");

gets(s2);

i=0;

while((s1[i]==s2[i])

&& (s1[i]!='\0'))i++;

if(s1[i]=='\0'

&& s2[i]=='\0')

resu=0;

else

resu=s1[i]-s2[i];

printf("

%s与%s比较结果是%d",s1,s2,resu);

}

6.15

#include

void main()

{

char

from[80],to[80];

int

i;

printf("请输入字符串");

scanf("%s",from);

for(i=0;i<=strlen(from);i++)

to[i]=from[i];

printf("复制字符串为:%s\n",to);

}

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值