上机实践复习

更新时间:2023-10-26 02:53:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

一.数的距离差

给定一组正整数,其中的最大值和最小值分别为max和min,其中的一个数x到max和min的距离差D定义为

abs(abs(x-max) - abs(x-min))。 其中,abs()表示求一个数的绝对值

输入

输入第一行为整数n,剩余n行每行一个正整数。 输出

输出仅一行,它的值为使得距离差D最小的x。 样例输入 5 3 1 7 5 9

样例输出

提示

函数abs()定义在stdlib.h中 例:(一) #include #include #define N 400 int main () {

int a[N],D[N];

int i,n,max,m,min,D_min; scanf(\for(i=0;i

max=a[0];

for(i=1;i

if(max

max=a[i];

min=a[0];

for(i=1;i

{

if(min>a[i]) min=a[i]; }

for(i=0;i

{

D[i]=abs(abs(a[i]-max)-abs(a[i]-min)); }

D_min=D[0]; for(i=1;i

if(D_min>D[i]) { D_min=D[i]; m=a[i]; } }

printf(\ }

(二)

#include #include #define N 500 int main() { int a[N],n,i,m,p,r,s,t;

return 0;

scanf(\for(i=0;i

scanf(\

}

p=m=a[0]; for(i=1;i

if(m>a[i])

m=a[i]; if(p

p=a[i]; }

s=abs(abs(a[0]-p)-abs(a[0]-m));

t=a[0];

for(i=1;ir) }

printf(\return 0;

{

s=r; t=a[i]; }

}

二、按位转换整数到英文单词

题目描述

请把输入整数的每位数字转换成英文。

如当输入1024时,输出:one, zero, two, four 输入

输入为一个整数

输出

按整数每一位输出其英文单词,单词间用逗号加空格分隔,单词由小写字母组成。 样例输入 20345 样例输出

two, zero, three, four, five 提示

注意:大家要考虑数据为“0”的情况,此时如果取对0取对数会出错 例:(一) #include #define N 200 int main() { int n,k,j,s; int a[N]; scanf(\ j=0; s=0;

while(n!=0) {

k=n; n=n/10;

a[j]=k;

}

j++; s=s+j;

for(j=s-1;j>0;j--) {

switch(a[j]) {

case 0: printf(\ case 1: printf(\ case 2: printf(\ case 3: printf(\

case 4: printf(\ case 5: printf(\ case 6: printf(\ case 7 : printf(\ case 8 : printf(\ case 9 : printf(\

}

}

switch(a[0]) { case 0: printf(\

case 1: printf(\ case 2: printf(\

case 3: printf(\ case 4: printf(\ case 5: printf(\

case 6: printf(\ case 7 : printf(\

case 8 : printf(\ case 9 : printf(\

}

return 0; }

(二)

#include #define N 500 int main() { int m,i,a[N],n;

scanf(\

i=0;

if(m==0)

printf(\ else

while(m!=0) {

a[i]=m; i++; m=m/10;

} n=i-1;

for(i=n;i>=0;i--) { if(i!=0) {

}

switch(a[i]) { case 0:printf(\ }

case 1:printf(\case 2:printf(\case 3:printf(\case 4:printf(\case 5:printf(\case 6:printf(\case 7:printf(\case 8:printf(\case 9:printf(\

else {

switch(a[i]) {

case 0:printf(\case 1:printf(\case 2:printf(\case 3:printf(\case 4:printf(\case 5:printf(\case 6:printf(\case 7:printf(\case 8:printf(\case 9:printf(\

}

{

scanf(\}

m=f(a,n);

printf(\return 0;

int f(int a[1000],int n) { }

int i,j=1,s,m,b[1000]; for(m=n;m>0;m--) {

for(i=1;i

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

j++; }

for(i=m-1;i

if(a[i]

j++;

}

b[n-m]=j;

j=1; }

s=b[0]; for(i=1;i

if(s

s=b[i];

十、 计算平均年龄 例:(一) #include

int main() {

int n,i,sum,age; double num; scanf(\ for(i=0,sum=0;i

scanf(\ sum+=age; }

num=(double)sum/n; printf(\ return 0; }

例(二)

#include int main() { }

十一、数圈

以1为中心,用2,3,。。。,n的数字围绕着中心输出一个数圈,若n=4

7 8 9 10

6 1 2 11

5 4 3 12

16 15 14 13

int n,m,i; float b,a=0.0; scanf(\for(i=0;i

a=a+m;

b=a/n;

printf(\return 0;

输入

一个整数n(1<=n<=10)

输出

一个数圈

样例输入

5

样例输出

21 22 23 24 25 20 7 8 9 10 19 6 1 2 11 18 5 4 3 12 17 16 15 14 13

#include #define N 10 int main()

{

int num[N][N];

int circle=2,row,column,n,i=1,j;//circle为每转半圈的数字个数 scanf(\

/*确定开始的那个1的位置*/ if(n%2)

row=column=n/2; else

row=column=n/2-1;

num[column][row]=i++; num[column][++row]=i++; while(circle<=n) { j=1;

while(j<=circle-1)

{

/**当circle为奇偶数时,行的增减不一样**/ if(circle%2)

num[--column][row]=i++; else

num[++column][row]=i++; j++; }

circle++; j=1;

while(j<=circle-1) {/*同上**/

if(circle%2)

num[column][--row]=i++; else

num[column][++row]=i++; j++; } }

for(i=0;i

for(j=0;j

printf(\ printf(\ }

return 0;

}

十二、判断是否为闰年

#include int main () {

int year,leap;

scanf(\

if((year%4==0 && year0!=0)||(year@0==0)) leap=1; else leap=0;

if(leap) printf(\else printf(\

return 0;

}

十三、计算约数的和

给你一个数字 求它的所有约数的和。

比如12,约数有1,2,3,4,6,12 加起来是28

现在给你一个数字I。 (1 <= I <= 1,000)

输入一个数字I

输出约数之和样例输入 12

样例输出 28

#include int main () { }

十四、冒泡排序 #include #define N 5

int i,m,sum;

scanf(\for(i=1,sum=0;i

if(m%i==0) }

printf(\return 0;

sum+=i;

本文来源:https://www.bwwdw.com/article/ans2.html

Top