数组程序设计(用C语言写)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数组程序设计(用C语言写)相关的知识,希望对你有一定的参考价值。

已知一个数组a大小为20个元素,用随机函数生成20个整数填充该数组,再将该数组元素从小到大排序。现要求任意输入三个整数,要求将该三个数插入数组中合适的位置,使得这个数组中的23个元素仍然按照从小到大的顺序排列,并将数组按下标顺序输出。 (一定要用C语言写出来哦)谢谢了!

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
/*插入元素的函数fun()*/
void fun(int *b ,int n)

int i,j;
for(i=0;b[i]<n;i++);
for(j=22;j>i;j-- )b[j]=b[j-1];
b[i]=n;

void main()

int a[23]=0;
int i,j,t,n;
/*随机产生数组并使数组无相等元素*/
srand( (unsigned)time( NULL ) );/*设置种子使每次执行随机函数产生数组不一样*/
for(i=0;i<20;i++)
a[i]=rand();
for(j=0;i<i;j++)
if(a[i]==a[j])
i--;
/*数组排序*/
for(i=0;i<20;i++)
for(j=i+1;j<20;j++)
if(a[i]>a[j])t=a[i];a[i]=a[j];a[j]=t;
/*输出初始数组*/
for(i=0;i<20;i++)
if(i%5==0)printf("\n");
printf(" %8d ",a[i]);
printf("\n");
/*输入三个数字并插入*/
printf("输入三个整数 ");
scanf("%d",&n);fun(a,n);
scanf("%d",&n);fun(a,n);
scanf("%d",&n);fun(a,n);
/*输出新数组*/
for(i=0;i<23;i++)
if(i%5==0)printf("\n");
printf(" %8d ",a[i]);
printf("\n");
参考技术A 这个,首先建议一下,求代码这种事是一个非常不好的习惯,不管怎么说,哪怕你再初学,对着教科书也绝对能写出类似的代码。

还有一点,如果想学好编程,最好去CSDN问,别在BAIDU这种不专业的地方问。

代码如下,我用的是VS2005编译,可正常使用,如果要用其它IDE,请将最开头的#include "stdafx.h"删去

#include "stdafx.h" // 使用其他IDE请将此行删去

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

// 数组最大长度
#define MAX_LENGTH 23
// 数组初始长度
#define INIT_LENGTH 20
// 数组增长长度
#define INC_LENGTH 3
// 随机数最大值,此处可任意修改
#define MAX_RAND 5555555

// 冒泡排序法
void BubbleSord(int*, int);
// 输出
void Output(int*, int);

int _tmain(int argc, _TCHAR* argv[]) // 使用其他IDE请将_tmain换成main

int i;
int Array[MAX_LENGTH] = 0;

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

// 此部分为了防止程序运行过快,种子相同,将种子复杂化
Array[i] = rand() % MAX_RAND;
srand((unsigned int)(time(NULL)*Array[i]));


BubbleSord(Array, INIT_LENGTH);
Output(Array, INIT_LENGTH);

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

printf("Please enter a new num:");
scanf("%d", &Array[INIT_LENGTH-1+i]); // 减一防止内存溢出


BubbleSord(Array, MAX_LENGTH);
Output(Array, MAX_LENGTH);

return 0;


// 冒泡排序法
void BubbleSord(int* Array, int Length)

int i, j, Temp;

for (i=0; i<Length-1; i++)

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

if (Array[i]>Array[j])

Temp = Array[i];
Array[i] = Array[j];
Array[j] = Temp;





// 输出
void Output(int* Array, int Length)

int i;

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

printf("%d\n", Array[i]);

参考技术B #include "stdio.h"

main()

int a[23];
int i,j,t,n=0,num[3],g;
for(i=0;i<20;i++)

a[i]=rand();

/*随机产生数组*/
for(i=0;i<20;i++)
for(j=i+1;j<20;j++)

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

t=a[i];
a[i]=a[j];
a[j]=t;


/*数组排序*/
printf("initial array:\n");
for(i=0;i<20;i++)

if(n==5)

n=0;
printf("\n");

printf("%d ",a[i]);
n=n+1;

/*输出初始化数组*/
printf("\n");
for(i=0;i<3;i++)

printf("please input the number:\n");
scanf("%d",&num[i]);

/*输入三个数字*/
for(i=0;i<3;i++)
for(j=0;j<20+i+1;j++)

if (a[j]>num[i])
break;


for(g=19+i;g>j;g--)

a[g+1]=a[g];

a[j]=num[i];

/*插入三个元素*/
printf("the new array:\n");
for(i=0;i<23;i++)

if(n==5)

n=0;
printf("\n");

printf("%d ",a[i]);
n=n+1;

/*输出新的数组*/
getch();


结果符合,但是由于不是动态分配,有一定的限制性。
参考技术C 写完了,用c++写的,如果想用c的话就把输入输出的函数改一下,相信你能做到。
#include
"stdio.h"
#include
"iostream.h"
#define
num
50
int
arry[num];
//原始数组
int
arry2[num*2];
//修改后数组
int
arry_num=0;
//数组元素个数
int
x=0;
//插入的数值
int
step=0;
//步长
void
arry_input()
//数组输入函数

cout<<"请输入数组元素个数:"<
>arry_num;
for(int
i=1;i
>arry[i];

cout<<"请输入要插入的数值"<
>x;

void
arry_insert()
//数组插入函数

for(int
i=1;i
评论
0
0
加载更多

用C语言写一个程序实现以下功能

本人C学的不太好,各位高手帮帮忙,谢谢咯!
要求如下:

主界面
*******************************
******* 系统 ******************
*****请选择以下你要的操作******
1.求阶乘倒数之和.(用递归法)
2.将一个十进制数转换成R进制数(利用函数调用)
3.求3个数的最大公约数和最小公倍数(利用函数调用)
4.把一个整数插入到按由小到大排列的数列中,插入后仍然保持由小到大的顺序排列.(利用数组和指针来做)
5.求N阶方阵的转置矩阵(利用多维数组或指针作函数参数)
如果有完整的并且通过调试有用的话,可以追加分数!
大家帮帮忙咯!我急用,谢谢!

//以下提示,具体的自己去实现
/*
*功能函数
*/

/*求阶乘倒数之和(用递归法)*/
factorial();
long factr(int n);

/*
*以下函数实现将一个十进制数转换成R进制数(利用函数调用)
*五个函数
*/
decimalchange();
unsigned int check(char *s,unsigned int m);
void strtonum(char* str,unsigned int *p,unsigned int m);
unsigned long mto10(int *p,unsigned int mlen,unsigned int m);
void tenton(unsigned long l10,int *p,int n,unsigned int nlen);

/*多个数的最大公约数和最小公倍数*/
gCDAddLCM();/*主函数*/
int gcd(int a, int b); /* 最大公约数 */
int cmd(int a, int b); /* 最小公倍数 */
int multipleGCD(int arr[], int len); /* 多个数的最大公约数 */
int multipleCMD(int arr[], int len); /* 多个数的最小公倍数*/

/*把一个整数插入到按由小到大排列的数列中
*插入后仍然保持由小到大的顺序排列
*/
insertCosmos();

/*求N阶方阵的转置矩阵*/
transposedMatrix();

int main()

int c;
scanf("%d",&c);
while(c!=0)

printf("**********************************************************\n");
printf("************************* 系统 ***************************\n");
printf(" 主菜单(请选择以下你要的操作) \n");
printf(" 1 求阶乘倒数之和(用递归法) \n");
printf(" 2 将一个十进制数转换成R进制数(利用函数调用) \n");
printf(" 3 求3个数的最大公约数和最小公倍数(利用函数调用) \n");
printf(" 4 把一个整数插入到按由小到大排列的数列中,
插入后仍然保持由小到大的顺序排列.(利用数组和指针来做) \n");
printf(" 5 求N阶方阵的转置矩阵 \n");
printf(" 0 退出 \n");
printf(" 输入选择 (1--5,0表示结束): ");

switch(c)

case 1:factorial();break;
case 2:decimalchange();break;
case 3:gCDAddLCM();break;
case 4:insertCosmos();break;
case 5:transposedMatrix();break;
default:;

return 0;

//main end
参考技术A 问那么多问题?

我刚刚写了一个进制转换的,给你了。
---------------vc6.0测试通过---
-------- 我的可以支持到16进制数的转换------------
----------要更多的进制表示,你可以在switch语句中自己加就可以了---------------

#include <stdio.h>
#include <stdlib.h>

void main()

int nNum,Rad,i=0,Residue;
int Store[50];
printf("请输入一个任意整数:");
scanf("%d",&nNum);
printf("\n请输入一个合法的表示进制的基数[2,16]:");
scanf("%d",&Rad);
if(Rad<=1)
exit(-1);
printf("\n转换后的结果是:");
while(nNum>=Rad)

Residue=nNum%Rad;//0
nNum/=Rad;//1
Store[i]=Residue;//0
++i;

Store[i]=nNum;

for(;i>=0;--i)
switch(Store[i])

case 0:
printf("0");
break;
case 1:
printf("1");
break;
case 2:
printf("2");
break;
case 3:
printf("3");
break;
case 4:
printf("4");
break;
case 5:
printf("5");
break;
case 6:
printf("6");
break;
case 7:
printf("7");
break;
case 8:
printf("8");
break;
case 9:
printf("9");
break;
case 10:
printf("A");
break;
case 11:
printf("B");
break;
case 12:
printf("C");
break;
case 13:
printf("D");
break;
case 14:
printf("E");
break;
case 15:
printf("F");
break;


printf("\n");

参考技术B main()
int c;
printf("请选择以下你要的操作");
printf("1.求阶乘倒数之和");
printf("2.将一个十进制数转换成R进制数");
printf("3.求3个数的最大公约数和最小公倍数");
printf("4.把一个整数插入到按由小到大排列的数列中,插入后仍然保持由小到大的顺序排列");
printf("5.求N阶方阵的转置矩阵");
scanf("%d",&c);
switch(c)
case:1 //写自定义函数。1

case:2 //写自定义函数。2

break;
case:3 //写自定义函数。3

break;
case:4 //写自定义函数。4

break;
case:5 //写自定义函数。5

break;
default:
printf("你输入的是错误的选择");
参考技术C 眼熟 不过
我好象不会 啊

对不起了本回答被提问者采纳
参考技术D 应该不难……

以上是关于数组程序设计(用C语言写)的主要内容,如果未能解决你的问题,请参考以下文章

用C语言实现一维数组中删除第N个元素的程序怎么写

在c语言中,将一个数插入一个数组中的程序怎么写?

用C语言写一个程序实现以下功能

用C语言编写

这个c语言(c++)的程序要怎么写?

怎样用C语言写以下程序:由键盘输入一个长度小于20的字符串保存到一个数组中,利用这个字符串生成一个回文