当前位置:首页 » 编程语言 » c语言指针怎么生成数
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言指针怎么生成数

发布时间: 2022-08-16 20:38:07

c语言如何输出指针所指向的值

需要准备的材料分别有:电脑、C语言编译器。

1、首先,打开C语言编译器,新建一个初始.cpp文件,例如:test.cpp。

② C语言菜鸟:如何用指针生成回文数组

所谓回文数组,就是从高到底和从低到高遍历,得到的是相同序列。该数组具有对称性。

如果一个数组不是回文数组,可以把对称位置上值不相等的元素修改为相等,来生成回文数组。

用指针可以按照如下思路:

1 定义两个指针head和end,head指向数组头,end指向数组尾。

2 比较两个指针指向的值,如果不相等,则令其相等。

3 移动指针,head向后,end向前,即两头向中间凑。

4 重复执行2-3步,直到两个指针相等或者end在head前(end <= head),结束循环。

5 得到的数组即为回文数组。


参考代码如下:

#include<stdio.h>
intmain()
{
inta[5]={1,2,4,3,1};//原始数组,不是回文数组。
inti;
int*head,*end;//定义两个指针。
head=a;//head指向头。
end=&a[4];//end指向尾。

while(head>end)//循环条件设置为head>end,即当end<=head时退出循环。
{
if(*head!=*end)*end=*head;//如果不等,则使其相等。
}

for(i=0;i<5;i++)//输出结果
printf("%d",a[i]);

return0;
}

执行后的结果为:

1 2 4 2 1

已经是回文数组了。

③ C语言:生成20个学号姓名和5门成绩的结构体数组,不动其数据,用指针数组按平均成绩由高至低排序,咋写

(感觉略有难度) 题目没有要求计算和输出平均值,所以排序可以不求平均值而按五门总分进行,效果与求出平均分是一样的——

代码文本:

#include "stdio.h"

#include <stdlib.h>

#include <string.h>

#include "time.h"

#define N 20

struct stu{

int s[5];

char SN[9],NAME[6];

};

int main(int argc,char *argv[]){

int i,j,k;

struct stu A[N],*p[N],*q;

srand((unsigned)time(NULL));

for(i=0;i<N;i++){//随机生成学生信息

do{//随机生成8位学号且不重复

itoa(10000+rand()%10000,A[i].SN,10);

strcpy(A[i].SN,A[i].SN+1);

itoa(1000+rand()%1000,A[i].SN+4,10);

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

if(strcmp(A[i].SN,A[j].SN)==0)

break;

}while(j<i);

A[i].NAME[0]='S',A[i].NAME[1]='T',A[i].NAME[2]='U';

A[i].NAME[3]=(i+1)/10+'0',A[i].NAME[4]=(i+1)%10+'0';

A[i].NAME[5]='';

for(j=0;j<5;A[i].s[j++]=rand()%101);//随机生成成绩

}

for(i=0;i<N;p[i]=A+i++);//为指针数组赋值

for(i=0;i<N;i++){

for(k=i,j=k+1;j<N;j++)

if(p[k]->s[0]+p[k]->s[1]+p[k]->s[2]+p[k]->s[3]+p[k]->s[4]<

p[j]->s[0]+p[j]->s[1]+p[j]->s[2]+p[j]->s[3]+p[j]->s[4])

k=j;

if(i-k)

q=p[i],p[i]=p[k],p[k]=q;//把平均成绩高的向前交换

printf("%s %s ",p[i]->SN,p[i]->NAME);//输出学号姓名

for(j=0;j<5;printf("%4d",p[i]->s[j++]));//输出原始成绩

putchar(' ');

}

return 0;

}

④ C语言指针生成数组的方法

void* malloc(数组字节长度),返回值是void*,所有要强转一下,参数是数组字节长度,不是数组的长度。例如,要申请一个int型数组,元素个数为n,应该这么写 int *intTest = (int*)malloc(sizeof(int)*n); sizeof(int)的含义是计算一个int类型所占的字节。

⑤ c语言 指针输出数组

(*p)[4]是数组指针,每一个指针指向含有4个整形的一维数组;p[1]对于前面的声明来说是指针,而p[1][1]是二维数组,所以不用再加上*取值,若要加上*,
代码中:printf("%4d",p[i][j]);
可以这样处理:printf("%4d",*(p[i]+j));

⑥ C语言 指针搜索数组里的数

intmy_max=-INT_MAX;
intrnd=0;
//第一步取得数组里最大数
for(i=0;i<sizeof(arr),++i){
if(arr[i]>my_max)my_max=arr[i];
}

//第二步生成随机数
srand(time());
rnd=(int)(my_max*((double)rand()/RAND_MAX));
for(i=0;i<sizeof(arr);++i){
if(arr[i]>rnd)printf("%d ",arr[i]);
}
以上未经调试,仅示意,供参考.