C 练习实例40
题目:将一个数组逆序输出。
程序分析:用第一个与最后一个交换。
程序源代码:
实例
// Created by www.runoob.com on 15/11/9.
// Copyright © 2015年 菜鸟教程. All rights reserved.
//
#include<stdio.h>
#define N 10
int main()
{
int a[N]={0,1,2,3,4,5,6,7,8,9};
int i,t;
printf("原始数组是:\n");
for(i=0;i<N;i++)
printf("%d ",a[i]);
for(i=0;i<N/2;i++)
{
t=a[i];
a[i]=a[N-1-i];
a[N-1-i]=t;
}
printf("\n排序后的数组:\n");
for(i=0;i<N;i++)
printf("%d ",a[i]);
printf("\n");
return 0;
}
以上实例输出结果为:
原始数组是: 0 1 2 3 4 5 6 7 8 9 排序后的数组: 9 8 7 6 5 4 3 2 1 0
C 语言经典100例
1113209710
111***9710@qq.com
参考方法:
#include <stdio.h> int main(int argc, char *argv[]) { int i,num,a[10]={0,1,2,3,4,5,6,7,8}; for(i=8;i>=0;i--){ printf("%d ",a[i]); } return 0; }1113209710
111***9710@qq.com
北城以北灬
568***527@qq.com
参考方法:
#include<stdio.h> int main() { int a[10]={1,3,9,4,5,6,7,8,2,10}; int *begin, *end; int temp,i; for(i=0;i<10;i++) { printf("%d ",a[i]); } printf("\n"); begin=&a[0]; end=&a[9]; while(end>begin) { temp=*begin; *begin=*end; *end=temp; begin++; end--; } for(i=0;i<10;i++) { printf("%d ",a[i]); } }北城以北灬
568***527@qq.com
麦穗melody
492***921@qq.com
参考方法:
#include<stdio.h> #include<stdlib.h> #include<time.h> int main() { int i=0; int in[10]; srand(time(NULL)); printf("原数组:\n"); for(i=0;i<10;i++){ in[i]=rand()%11; printf("%d ",in[i]); } printf("\n逆序后数组:\n"); for(i=9;i>=0;i--) printf("%d ",in[i]); return 0; }麦穗melody
492***921@qq.com
HIT_CCC
117***2963@qq.com
参考方法:
#include<stdio.h> void reverse_print(int a[],int n); int main(void) { int a[10] = {0,1,2,3,4,5,6,7,8,9}; printf("原始数组是:\n"); for(int i = 0; i < 10;i++) printf("%-3d",a[i]); printf("\n排序后的数组:\n"); reverse_print(a,10); return 0; } void reverse_print(int a[],int n) { int i = 0; int j = n - 1; while(i < j) { if(i < j) { int temp; temp = a[i]; a[i] = a[j]; a[j] = temp; } i++; j--; } for(i = 0; i < n; i++) printf("%-3d",a[i]); }HIT_CCC
117***2963@qq.com
kisushotto
kis***otto@163.com
参考方法:
#include<stdio.h> #include <time.h> #include <stdlib.h> void reverse(int *numArray, int k); int main() { srand((int)time(0)); int *numArray = NULL, m, n; printf("产生多少个1-100的随机数组元素?\n"); scanf("%d", &n); numArray = (int*)calloc(n, sizeof(int)); for (m = 0; m < n; ++m) numArray[m] = rand() % 101;//1-100之间随机数 printf("逆序前:\n"); for (m = 0; m < n; ++m) printf("%-4d", numArray[m]); reverse(numArray, n); printf("\n逆序后:\n"); for (m = 0; m < n; ++m) printf("%-4d", numArray[m]); printf("\n"); return 0; } void reverse(int *numArray, int k) { int i, j; if (k % 2)//元素个数为奇数个时 { for (i = 0, j = k - 1; i < k / 2 && j > k / 2; ++i, --j) { numArray[i] += numArray[j]; numArray[j] = numArray[i] - numArray[j]; numArray[i] -= numArray[j]; } } else { for (i = 0, j = k - 1; i < k / 2 && j >= k / 2; ++i, --j) { numArray[i] += numArray[j]; numArray[j] = numArray[i] - numArray[j]; numArray[i] -= numArray[j]; } } }kisushotto
kis***otto@163.com
Giggoggy
wjd***sation@yahoo.co.jp
使用了动态数组:
//题目:将一个数组逆序输出。 #include <stdio.h> #include <stdlib.h> void Q40() { int n; int *arry; printf("请输入您要输入数组元素的个数:\n"); scanf("%d", &n); arry = (int *)malloc(n * sizeof(int)); printf("请输入数组元素:\n"); for (int i = 0; i < n; i++) { //scanf("%d", &arry[i]); 这种方法也是正确的 scanf("%d", (arry + i)); //arry是指针类型,存的就是地址,所以不需要取址符。说白了scanf的第二个参数需要输入的是地址。 } printf("下面逆序输出数组:\n"); for (int i = n - 1; i >= 0; i--) { printf("%d ", *(arry + i)); } printf("\n"); free(arry); } int main() { Q40(); return 0; }Giggoggy
wjd***sation@yahoo.co.jp