亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我按自己思路做了一下,但是還有錯,求大神指點

我按自己思路做了一下,但是還有錯,求大神指點

C++
Qyouu 2023-04-01 13:09:33
要求采用指針方法訪問內存,編寫的自定義函數需要有主函數驗證其正確性void f(int a[],int n,int k){int i,j,num;a[n]=k;for(j=0;j<=n-1;j++){for(i=j+1;i<n;i++){if(a[j]>a[i]){num=a[j];a[j]=a[i];a[i]=num;}}}}int main(){int *a,n,i,k;printf("請輸入數組長度:");scanf("%d", &n);if (n > 0){a=(int *)malloc(n*sizeof(int));for(i=0;i<n;i++) {printf("請輸入數組中第%d個數:\n",i+1);scanf("%d",&a[i]);}printf("請輸入要插入的整數:");scanf("%d",&k);f(a,n,k);printf("升序排序后:");for (i=0;i<n;i++)printf("%d ",a[i]);printf("\n");}}
查看完整描述

2 回答

?
冉冉說

TA貢獻1877條經驗 獲得超1個贊


#include <stdio.h>void f(int a[],int n,int k){int i,t; for(i=n-1;i>-1&&a[i]>k;i--)   a[i+1]=a[i]; a[i+1]=k;  }int main(){int n=10,i,k,a[15]={23,24,27,28,31,34,42,45,49,53}; for(i=0;i<n;i++)   printf("%d ",a[i]); printf("\n"); scanf("%d",&k); f(a,n++,k); for(i=0;i<n;i++)   printf("%d ",a[i]); printf("\n"); return 0;  }


查看完整回答
反對 回復 2023-04-03
?
浮云間

TA貢獻1829條經驗 獲得超4個贊

//示例代碼如下#include <stdio.h>#define N 100void f(int a[],int n,int k){    int *p,*q,*s;    p=a;  //指向首元素    while(p<p+n){        if(k>=*p && k<*(p+1)){            s=p+1;  //指針s指向k待插入的位置            for(q=p+n-1;q>p;q--){                *(q+1)=*q;            }            *s=k;            break;        }        p++;    }}int main(){    int arr[N];    int n,i,value;    scanf("%d",&n);    printf("Input %d numbers: ",n);    for(i=0;i<n;i++)        scanf("%d",arr+i);    printf("Insert a value: ");    scanf("%d",&value);    f(arr,n,value);    printf("Output arr:\n");    for(i=0;i<n+1;i++)        printf("%d ",arr[i]);    printf("\n");    return 0;} //示例運行結果F:\c_work>a.exe5Input 5 numbers: 1 2 2 3 6Insert a value: 2Output arr:1 2 2 2 3 6 F:\c_work>a.exe5Input 5 numbers: 1 2 2 3 6Insert a value: 4Output arr:1 2 2 3 4 6 //修改了下的代碼,現在沒問題了,有問題的地方給你注釋了#include <stdio.h>#include <stdlib.h>void f(int a[],int n,int k){int i,j,num;a[n]=k;  //你這樣賦值意味著數組的長度增加1了,即有(n+1)個元素了,數組末元素是a[n]//for(j=0;j<=n-1;j++)for(j=0;j<=n;j++){//for(i=j+1;i<n;i++)for(i=j+1;i<n+1;i++){if(a[j]>a[i]){num=a[j];a[j]=a[i];a[i]=num;} }}}int main(){int *a,n,i,k;printf("請輸入數組長度:");scanf("%d", &n);if (n > 0){//a=(int *)malloc(n*sizeof(int));a=(int *)malloc((n+1)*sizeof(int));for(i=0;i<n;i++) {printf("請輸入數組中第%d個數:\n",i+1);scanf("%d",&a[i]);}printf("請輸入要插入的整數:");scanf("%d",&k);f(a,n,k);printf("升序排序后:");//for (i=0;i<n;i++)for (i=0;i<n+1;i++)printf("%d ",a[i]);printf("\n"); }}

查看完整回答
反對 回復 2023-04-03
  • 2 回答
  • 0 關注
  • 180 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號