當前位置:首頁 » 編程語言 » 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]);
}
以上未經調試,僅示意,供參考.