随机生成100个整数存入一个顺序表,整数范围在[100,200)之间,输出表中所有元素;然后去掉其中所有的偶数,输出表中所有元素。

题目:随机生成100个整数存入一个顺序表,整数范围在[100,200)之间,输出表中所有元素;然后去掉其中所有的偶数,输出表中所有元素。

重点:产生随机数;随机数的产生范围;出去偶数

1.顺序表的结构声明:

struct SqList {
    int *Data; // 本实验中,元素类型设置为int
int N; //表中现有元素个数
int MaxSize; // 表的最大容量
};

2.随机数生成函数rand:

使用该函数需要表头文件为:#include <stdlib.h>

  1. 语句定义:srand((int)time(NULL));     //初始化随机数发生器
  2. 函数:m=rand()%a;  //随机生成    0~(a-1) 之间的一个数字
  3. 函数:m=rand()%a +b ; //随机生成  b~(a+b-1)   之间的一个数字,若执行一次则生成一个随机整数,执行n次就生成n个随机整数

 int  a=rand()%(100+1)+100;
语句说明:利用该语句在100到200之间随机生成一个整数并赋值给a

 3.创建一个新的顺序表

struct SqList *CreateList()
{
	struct SqList *L;
	L = (struct SqList *)malloc(sizeof(struct SqList));//创建新的表空间
	 L->Data=(int*)malloc(sizeof(int)*L->MaxSize);
	L->N = 0;//将现有表中的元素数赋值
    L->MaxSize = 200;//定义表中可以存放的最大元素数量
    return L;
}

4.产生随机数并存入到顺序表中:

int randInsert(struct SqList *L)
{	int i;
srand((int)time(NULL));  //初始化随机数发生器
	for(i=0;i<100;i++){
		L->Data[i]=rand()%(100+1)+100;//将产生的随机数存入顺序表中
		L->N++;
	}
	return L;
}

5.找出偶数并删除偶数:

	void Delete(struct SqList *L ,int i){//删除偶数函数
	int j;
	for(j=i;j<L->N;j++){
		L->Data[j]=L->Data[j+1];		
	}
	L->N--;
}	
 int findDou(struct SqList * L)//查找偶数函数
{
	int i,j;
	for (i = 0; i < L->N;) {
		if((L->Data[i])%2==0);//判断是否为偶数的条件
		Delete(L,i);//若为偶数则通过该数下标号调用前面的函数删除偶数
		else i++;//若不是偶数,则继续查找下一个数是否为偶数
	}

完整源代码为:

#include <stdio.h>  
#include <stdlib.h>  
#include <time.h>  
struct SqList{
	int *Data;
	int N;
	int Maxsize;
};
void Delete(struct SqList *L ,int i){
	int j;
	for(j=i;j<L->N;j++){
		L->Data[j]=L->Data[j+1];		
	}
	L->N--;
}
int main() {  
    struct SqList *L;
    L=(struct SqList*)malloc(sizeof(struct SqList));
    L->N=0;
    L->Maxsize=200;
    L->Data=(int*)malloc(sizeof(int)*L->Maxsize);
	int i; 
	printf("随机生成数如下:\n");
    srand((int)time(NULL));  
    for (i=0;i<100;i++) {  
		L->Data[i]=rand()%100+100;
		L->N++;
		printf(" %d",L->Data[i]);
    } 
    printf("\n");
    printf("删除偶数后的顺序表:\n");
    printf("\n");
    for (i=0;i<L->N;) {  
		if(L->Data[i]%2==0)	
	    	Delete(L,i);
	    else
    		i++;
    } 
    for (i = 0;i<L->N;i++) {  
		printf(" %d ",L->Data[i]);
  	}
     
    return 0;  
}  

  • 7
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值