当前位置:首页 > 北理工C语言答案
x[i][j]=k; }
if(a*a==1) printf(\ else
for(i=0;i j==a-1?printf(\ else j==a-1?printf(\ return 0; } 输入:5 输出: 1 2 6 7 15 3 5 8 14 16 4 9 13 17 22 10 12 18 21 23 11 19 20 24 25 程序实例2: #include int i, j, n, a[10][10]; scanf (\ a[0][0]=1; for ( i=0,j=1;j a[i][j]=a[i][j-1]+((j==j/2*2)?2*j:1); for (i=1; i { for (j=0; j a[i][j]=(((i+j)==(i+j)/2*2)?a[i-1][j+1]-1:a[i-1][j+1]+1); a[i][j]=a[i-1][j]+((n-i)==(n-i)/2*2?1:(n-i)*2); } if (n==1) printf(\ else for ( i=0;i { printf(\ for ( j=1;j printf(\ printf(\ } return 0; } 输入:1 输出:1 27 编码问题(选作)(06秋) 设有一个整形数组 A[0..N-1];存放的元素为 0~N-1 (1 A[i]编码为:在A[0],A[1],?,A[i-1]中比A[i]的值小的个数 (i=1,2,?,N-1) 例如上面数组 A的编码为:B=(0,0,0,3,1,2) 若给出数组A,则可求出其编码。同理,若给出数组A的编码,可求出A中的原数据。 输入: 推导方向(取值为1或2,如为1,则表示根据数组求数组编码;如为2,则表示根据编码反求数组) 数组个数 数组或数组编码元素 输出:数组编码、或数组本身(元素之间以空格分隔) ?? 开 始 输入 N 正向? Y 初始化数组C i=2 b[len]=a[len], I=len N N i Y Y 结束 j=1 k=0 b[i]=c[a[i]] 保存K N i++ j Y Y K++ a[j] N j++ 程序实例1: #include \void main( ) { int i,j,t,n; int arr[11],ans[11]={ 0 },num[10]; 更改数组C i-- scanf(\ for (i = 1;i <= n;i ++) scanf(\ arr[0] = 20; if (t == 1) { for (i = 1;i <= n;i ++) for (j = 1;j < i;j ++) if (arr[i] > arr[j]) ans[i] ++; } else { for (i = 0;i < n;i ++) num[i] = i; for (i = n;i >= 1;i --) { ans[i] = num[arr[i]]; for (j = arr[i];j <= i - 1;j ++) num[j] = num[j + 1]; } } for (i = 1;i < n;i ++) printf(\ printf(\} 输入: 1 6 4 3 0 5 1 2 输出: 0 0 0 3 1 2 程序实例2: #include \#include int cmp(const void *a, const void *b) { return *( int* ) a - *( int* ) b; } void main() { int mode,i,j,n,a[13],b[13],m[13]; scanf(\ for(i=0;i for(i=1;i for(j=0,b[i]=0;j else { for(i=0;i qsort(m,n,sizeof(int),cmp); } } for(i=0;i printf(\输入: 2 7 0 1 0 0 4 5 6 输出: 2 3 1 0 4 5 6 28 洗牌(选作) 假设我们有 2n 张牌,它们以 1, 2, ..., n, n+1, ..., 2n 编号并在开始时保持着这种顺序。一次洗牌就是将牌原来的次序变为 n+1, 1, n+2, 2, ..., 2n, n,也就是将原来的前 n 张牌放到位置 2, 4, ..., 2n,并且将余下的 n 张牌按照他们原来的次序放到奇数位置 1, 3, ..., 2n-1。已经证明对于任何一个自然数 n,这 2n 张牌经过一定次数的洗牌就回到原来的次序。但我们不知道对于一个特定的 n,需要几次洗牌才能将牌洗回原来的次序。 输入:牌张数的一半n,即初始情况下一共有2n张牌 输出:将牌洗回原来的次序所需要的洗牌次数 开 始 输入n 0~2*n-1→i, i→a[ i ] K=1,i=0 N N 0~2*n-1 K++,i=0 i<2*n? i=a[ i ]? Y Y i b[2*i]=a[i] b[2*(i-n)-1]=a[i] 输出k 结束 i++
共分享92篇相关文档