c语言计算一维数组和程序,《C语言及程序设计》程序填空——一维数组初步

1、 下面程序将十进制整数b转换成n进制,请填空使程序完整。

#include

int main()

{

int i=0,b,n,j,num[20] ;

scanf("%d",&n);

scanf("%d",&b) ;

do

{

num[i]=_____(1)______;

b=____(2)______;

i++;

}

while (b!=0);

for(_____(3)______)

printf("%d",num[j]) ;

return 0;

}提示:用除n取余法,将余数保存在数组中,最后将余数由后往前“串”起来

2、下面程序的功能是输入10个数,找出最大值和最小值所在的位置,并把两者对调,然后输出调整后的10个数,请填空使程序完整。

#include

int main()

{

int a[10],max,min,i,tmp;

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

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

_____(1)______;

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

{

if (a[i]

{

min=i;

}

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

{

_____(2)______;

}

}

tmp=a[min];

a[min]=a[max];

_____(3)______;

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

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

return 0;

}

3、输入20个数,计算他们的平均值,输出与平均值之差的绝对值最小的数组元素。请填空使程序完整。

#include

______(1)________

#define N 20

int main()

{

float a[N],aver=0,s=0,t;

int i;

for(i=0; i

{

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

s+=a[i];

}

______(2)________;

s=fabs(a[0]-aver);

t=a[0];

for(i=1; i

if( fabs(a[i]-aver)

{

_____(3)_______;

t=a[i];

}

_____(4)_______;

return 0;

}

4、某人有四张 3分的邮票和三张 5分的邮票,用这些邮票中的一张或若干张可以得到多少种不同的邮资? 请填空使程序完整。

#include

int main()

{

int a[27]={0};

int i,j,k,s,n=0;

for (i=0; i<=4; i++) //i代表3分邮票张数

for (j=0; j<=3; j++) //j代表5分邮票张数

{

______(1)________;

for (k=0; a[k]; k++)

if (s==a[k])

______(2)________;

if (______(3)________)

{

a[k]=s;

n++;

}

}

printf("%d kind:",n);

for (k=0; k

printf("%3d",a[k]);

return 0;

}

5、将一个数组中的元素按逆序重新存放。例如原来的顺序为:8,5,7,4,1, 要求改为:1,4,7,5,8。请填空使程序完整。

#include

#define N 7

int main()

{

int a[N]= {12,9,16,5,7,2,1},k,s;

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

for (k=0; k

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

for (k=0; ___(1)____; k++)

{

s=a[k];

a[k]=____(2)____;

____(3)____=s;

}

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

for (k=0; ___(4)___; k++)

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

return 0;

}

参考解答(侧着看):

205159d887f209f3b5c188eaa3ba8869.png

参考解答:1、(1)b%n    //求余数保存在数组中(2)b=b/n    //改变原数据(3)j=i-1;j>=0;j--     //体现了“倒着”输出,注意有效下标的范围2、(1)max=min=0   //max和min存储最大和最小值的下标,初值取0(2)max=i        //记录下到目前为止最大值的下标(3)a[max]=tmp   //实现交换3、(1)#include    //初步感觉应该是需要#开头的预处理命令,果然,调用fabs,需要math.h的支持(2)aver = s/N   //前面求出了和s,后面又要用平均值aver了,此处恰好计算(3)s=fabs(a[i]-aver)   //求和之后,s转变为保存数组元素与平均值之差的最小绝对值了(工程中,一个变量两种含义是一种很坏的习惯),这里需要更新s的值(4)printf("%f\n", t)    //输出结果4、题目强调“不同的邮资”,于是设置数组a记录邮资,若出现相同邮资,不重复记录(1)s=i*3+j*5     //i张3分和j张5分组成的邮资(2)break    //邮资为s的组合已经在a数组的第k位置记录了,不再找位置存储(3)!a[k]&&s  //当a[k]==0成立(即!a[k]为真时),要在a[k]中记录下邮资。不过,当s==0时除外,这时,对应选了一张邮票。而题要求至少一张(4)k

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值