用动态分配内存和指针求一个班成绩的平均值,最大值,最小值

\u7b80\u5355\u7684\u6307\u9488\u6c42\u6700\u5927\u503c\u6700\u5c0f\u503c\u5e73\u5747\u503c\u95ee\u9898

//\u4f7f\u7528\u6307\u9488\u7f16\u5199\u51fd\u6570\uff0c\u6c42\u4e00\u4e2a\u6570\u7ec4\u7684\u6700\u5927\u503c\u3001\u6700\u5c0f\u503c\u548c\u5e73\u5747\u503c\u3002
#include
void array(int a[],int length,int *max,int *min,int*avg);
int main(){
int a[]={23,24,22,33,10,9};
int max,min,avg;
array(a,6,&max,&min,&avg);
printf("max=%d,min=%d,avg=%d\n",*max,*min,*avg);

}
void array(int a[],int length,int *max,int *min,int*avg){
int i;
int sum=0;
*max=*min=a[0];
for(i=0;i<length;i++){
if(*max<a[i]) *max=a[i];
else *min=a[i];
sum+=a[i];

}
*avg=sum/length;
}

for(p=a;p<a+10;p++)
\u4fee\u6539\u4e3a
for(p=a;p<a+5;p++)
\u524d\u9762\u6570\u7ec4a\u53ea\u6709\u4e94\u4e2a\u5143\u7d20

先输入有多少位同学,然后依次输入成绩,调用三个自定义函数,分别求最大值、最小值、平均值,把源代码复制一下

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

int sort_max(int * grade_max,int * head_max,int length);
int sort_min(int * grade_min,int * head_min,int length);
double average(int * grade_average,int * head_average,int length);

int main()
{
int * number;
int * head;

int length;
int i;
int temp;

int max;
int min;
double ave;

printf("please input n (how many students):
");
scanf("%d",&length);

head=number=(int *)malloc(length*sizeof(int));
//printf("%d
",length*sizeof(int));
if(number==NULL)
{
printf("allocation fail
");
exit(1);
}
else
{
printf("allocation success
");
}

printf("
");
for(i=0;i<length;i++)
{
printf("please input %d grade:
",i+1);
scanf("%d",&temp);
*number=temp;
number++;
}

number=head;
max=sort_max(number,head,length);
min=sort_min(number,head,length);
ave=average(number,head,length);
printf("
max grade is:%d
",max);
printf("min grade is:%d
",min);
printf("average grade is:%f
",ave);

free(head);
return 0;
}

int sort_max(int * grade_max,int * head_max,int length)
{
int temp;
int i;
int j;

printf("
before sort:(sort_max)
");

for(i=0;i<length;i++)
{
//printf("%d number is:%d
",i+1,*number);
printf("%d ",*grade_max);
grade_max++;
}
grade_max=head_max;
printf("
");

for(i=0;i<length;i++)
{
for(j=0;j<length-i-1;j++)
{
if(*(grade_max+j)>*(grade_max+j+1))
{
temp=*(grade_max+j+1);
*(grade_max+j+1)=*(grade_max+j);
*(grade_max+j)=temp;
}
}
}

grade_max=head_max;

printf("after sort:
");
for(i=0;i<length;i++)
{
printf("%d ",*grade_max);
grade_max++;
}
printf("
");

return *(grade_max-1);
}

int sort_min(int * grade_min,int * head_min,int length)
{
int temp;
int i;
int j;

printf("
before sort:(sort_min)
");

for(i=0;i<length;i++)
{
//printf("%d number is:%d
",i+1,*number);
printf("%d ",*grade_min);
grade_min++;
}
grade_min=head_min;
printf("
");

for(i=0;i<length;i++)
{
for(j=0;j<length-i-1;j++)
{
if(*(grade_min+j)<*(grade_min+j+1))
{
temp=*(grade_min+j+1);
*(grade_min+j+1)=*(grade_min+j);
*(grade_min+j)=temp;
}
}
}

grade_min=head_min;

printf("after sort:
");
for(i=0;i<length;i++)
{
printf("%d ",*grade_min);
grade_min++;
}
printf("
");

return *(grade_min-1);
}
double average(int * grade_average,int * head_average,int length)
{
double ave;
int sum;
int i;
sum=0;
for(i=0;i<length;i++)
{
sum=sum+(*grade_average);
grade_average++;
}
ave=sum/(1.0*length);
return ave;
}

运行结果如下,如果有什么不明白的还可以问我



  • ...璁$畻鍏跺钩鍧囧间綘銆傝姹浣跨敤new鍔ㄦ佸垎閰嶅唴瀛瀛樻斁瀛︾敓鎴愮哗
    绛旓細cout << "骞冲潎鎴愮哗涓猴細" << average << endl;// 閲婃斁鍔ㄦ佸垎閰鐨鍐呭瓨 delete[] scores;return 0;} ```鍦ㄨ繖涓▼搴忎腑锛屾垜浠鍏堥氳繃 `cin` 浠庨敭鐩樹笂璇诲彇闇瑕佽緭鍏ョ殑瀛︾敓鏁般傜劧鍚庯紝浣跨敤 `new` 鍒嗛厤浜嗕竴涓 `int` 绫诲瀷鐨勬暟缁勶紝瀹冪殑闀垮害涓哄鐢熸暟 `n`銆傛帴涓嬫潵锛屾垜浠娇鐢ㄥ惊鐜粨鏋鍜屾寚閽杩愮畻绗 `*`...
  • c璇█濡備綍浣跨敤鍔ㄦ佸垎閰嶅唴瀛鐨勬柟娉曞畾涔鎸囬拡,骞朵笖鍙互鐢╯izeof璁$畻鍑烘暟缁...
    绛旓細鍐嶈卻izeof鎿嶄綔绗﹁绠楃殑鏄()涓殑鍙橀噺鎴栫被鍨嬫墍鍗犳湁鐨鍐呭瓨鏁帮紝a灏辨槸涓鎸囬拡锛屼竴鑸槸4瀛楄妭锛屾墍浠izeof(a)鐨勫兼槸4鑰屼笉鏄痬alloc鍒嗛厤鎴愬姛鐨勯偅涔堝瀛楄妭銆傝繖閲屾湁涓蹇佃寮勬竻妤氫簡灏变笉浼氭湁绾犵粨浜嗭紝閭e氨鏄痑=(int *)malloc();杩欐牱鐨勬搷浣滄剰鎬濆苟鐧炬妸malloc()鍒嗛厤鐨勫唴瀛樺ぇ灏忚祴缁檃锛岃屾槸鈥鍒嗛厤涓鍧楀唴瀛樹笉鍑嗗埆...
  • 鍒╃敤鎸囬拡鐨鍔ㄦ绌洪棿鐢宠鏂瑰紡缂栧啓涓涓绋嬪簭姹備袱涓悜閲忕殑涔樼Н
    绛旓細鍋囪浣犻渶瑕佺殑鏄偣绉 鎸夌収鍏紡 [a1,a2,...,an]路[b1,b2,...,bn]=a1b1+a2b2+...+anbn 娉ㄦ剰涓や釜鍚戦噺鐨勭淮搴﹀繀椤讳竴鑷 绀轰緥浠g爜濡備笅锛歩nt DotProduct(int a[],int b[],int len){ int ret = 0; for(int i=0;i<len;i++) { ret += a[i]*b[i]; } return r...
  • c璇█鎸囬拡鍑芥暟杈撳嚭涓涓鏁扮殑鍥犳暟?
    绛旓細鍙互浣跨敤鎸囬拡鍑芥暟鏉ヨ緭鍑轰竴涓暟鐨勫洜鏁般傛寚閽堝嚱鏁版槸杩斿洖鎸囬拡绫诲瀷鐨勫嚱鏁帮紝鍦ㄥ嚱鏁颁腑鍙互鍔ㄦ佸垎閰嶅唴瀛锛屽苟鍦ㄥ嚱鏁扮粨鏉熸椂灏嗘寚閽堣繑鍥炪備笅闈㈡槸涓涓疄鐜拌緭鍑轰竴涓暟鐨勫洜鏁扮殑鎸囬拡鍑芥暟锛歩nclude <stdio.h> include <stdlib.h> int *factors(int n, int *count) { int *f = (int *)malloc(n * sizeof(int))...
  • C++閫氳繃鍔ㄦ佸唴瀛樺垎閰鏉ユ潵鐢熸垚涓涓姩鎬鐨勪簩缁存暟缁,瑕佹眰琛屽垪鐩镐箻涓哄伓鏁...
    绛旓細*q;srand((unsigned)time(NULL));m=rand()%10+1;while(m*(n=rand()%10+1)&1);//淇濊瘉m*n鏄伓鏁皅=(int *)malloc(sizeof(int)*m*n);if(q==NULL || (p=(int **)malloc(sizeof(int *)*m))==NULL){printf("Application memory failure...\n");return 0;}for(i=0;...
  • 浣跨敤鍔ㄦ佸唴瀛樺垎閰鐢熸垚鍔ㄦ佹暟缁勬潵璁捐涓涓3X3鐭╅樀杞疆鍑芥暟,浣跨敤鎸囬拡瀹炵幇...
    绛旓細1 2 3 1 4 7 4 5 6 2 5 8 7 8 9杞疆涓3 6 9 濡傛灉浣犺鐨勬晥鏋滀笉鏄繖涓屾槸涓嬮潰鐨勫氨鍒扮兢151988677锛屾壘鍗冮噷 9 6 3 8 5 2 7 4 1 include<iostream> using std::cout;using std::cin;using std::endl;void create_arr(int *...
  • C璇█ 璁炬湁N涓鐢,M闂ㄨ绋嬬殑鎴愮哗鐢ㄥ姩鎬佸垎閰嶆寚閽鐨勬柟娉曞垎鍒眰骞冲潎鍊
    绛旓細//鎸囬拡鎸囧悜鍔ㄦ鐢宠鐨鍐呭瓨 p = malloc(sizeof(STUDENT_T)*N); if (!p) { printf("\n"); return -1; } //灞忓箷杈撳叆鎴栧彉閲忕洿鎺ヨ祴鍊兼瘡涓鐢熺殑鍚勭鎴愮哗 骞惰绠楀钩鍧囧垎 tmp = p; for (i = 0; i < N; i++, tmp++) { printf("杈撳叆绗%d涓鐢熺殑%d涓垚缁:\n", i+1, M);...
  • ...瑕佹眰鐢╪ew鍜宒elete杩愮畻绗鍔ㄦ佸垎閰嶅唴瀛绌洪棿鐨勬柟娉曠紪鍐欒绋嬪簭銆俖鐧惧害...
    绛旓細void main(){ int n=0;while(1){ cout<<"杈撳叆涓涓鏁存暟锛"<<endl;cin>>n;if (n>0)break;} int *elements=NULL;//涓缁鎸囬拡 elements=new int [n];if(NULL==elements)exit(1);int i;int sum=0;cout<<"杈撳叆"<<n<<"涓暣鏁帮細"<<endl;for (i = 0; i < n; i++){ cin...
  • 鍔ㄦ佸垎閰嶅唴瀛鐨勫姩鎬佸垎閰嶅唴瀛樼殑鏂规硶(C/C++)
    绛旓細骞跺皢棣栧湴鍧鍊艰繑鍥炴寚閽坧1锛沴 鍔ㄦ佸垎閰浜嗗叿鏈100涓弻绮惧害瀹炲瀷鏁扮粍鍏冪礌鐨勬暟缁勶紝鍚屾椂灏嗗悇瀛樺偍鍖虹殑棣栧湴鍧鎸囬拡杩斿洖缁欐寚閽堝彉閲弍2锛涘浜庣敓鎴愪簩缁村強鏇撮珮缁寸殑鏁扮粍锛屽簲浣跨敤澶氱淮鎸囬拡銆備互浜岀淮鎸囬拡涓轰緥int **p=new int* [row]; //row鏄簩缁存暟缁勭殑琛岋紝p鏄寚鍚涓涓寚閽鏁扮粍鐨勬寚閽坒or(int i=0; i<row; i++)p...
  • C璇█涓殑鍔ㄦ佸唴瀛樺垎閰鐨勭敤娉曚妇渚
    绛旓細1銆乵alloc鍑芥暟锛氬叾浣滅敤鏄湪鍐呭瓨鐨鍔ㄦ瀛樺偍鍖轰腑鍒嗛厤涓涓闀垮害涓簊ize鐨勮繛缁┖闂淬傚叾鍙傛暟鏄竴涓棤绗﹀彿鏁村舰鏁帮紝杩斿洖鍊兼槸涓涓寚鍚戞墍鍒嗛厤鐨勮繛缁瓨鍌ㄥ煙鐨勮捣濮嬪湴鍧鐨鎸囬拡銆2銆乫ree鍑芥暟锛氱敱浜庡唴瀛樺尯鍩熸绘槸鏈夐檺鐨勶紝涓嶈兘涓嶉檺鍒跺湴鍒嗛厤涓嬪幓锛岃屼笖涓涓▼搴忚灏介噺鑺傜渷璧勬簮锛屾墍浠ュ綋鎵鍒嗛厤鐨勫唴瀛樺尯鍩熶笉鐢ㄦ椂锛屽氨瑕侀噴鏀惧畠锛...
  • 扩展阅读:指针malloc分配内存用法 ... 突然出现鬼的动图 ... 吓人的动图恶搞10秒 ... 二级指针分配内存 ... 指针数组动态分配内存 ... 动态分配内存关键字 ... 先温馨后有鬼吓人的动图 ... 很火的微信吓人动图 ... 动态分配内存在堆还是栈 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网