① 求一個c語言程序題:編寫一個函數SWAP()實現交換兩個數位置的功能
#include <stdio.h>
void swap(int *p, int *q);//用傳地址的方法交換
void main()
{
int i, j;
scanf("%d%d", &i, &j);//從鍵盤輸入兩個交換的數
swap(&i, &j);//傳入i,j的地址
printf("i = %d, j = %d\n", i, j);//輸出交換後的兩個值
}
void swap(int *p, int *q)
{
int temp;//定義臨時變數 存放中間值
temp = *p;
*p = *q;
*q = temp;
}
注意:不能直接寫void swap(int i, int j);
因為那隻是臨時變數,函數調用完後,便釋放空間,兩個值並沒有交換。
② C語言.定義一個函數實現交換兩個整數的功能,(用指針做函數參數)。
C語言.定義一個函數實現交換兩個整數的功能,(用指針做函數參數)。 #include<stdio.h>
void swap(int *p,int *q)
{ int t;
t=*p; *p=*q; *q=t;
}
main()
{ int a=5,b=4,*p,*q;
p=&a; q=&b;
swap(p,q);
printf("a=%d b=%d",a,b);
return 0;
}
..
C語言 指針做函數參數 的優點
首先你要認悶跡識函數傳參是怎麼進行的
函數傳參是復制形的,舉個例子說:
void modify(int a)
{
a++;
}
void main()
{
int a=5;
modify(a);
printf("%d",a);
}
這個程序的答案還是5。為什麼?
因為當調用陪備modify(a)時,在執行modify函數時,是另外開辟了一個內存空間,將main中a的值復制過來,modify函數中所有的操作都是相對於這個新開辟的內存空間而言的,對原來的a沒有任何改變。
現在就來說說指針,如果用指針傳參的話那就完全不一樣了,指針(pointer),說白了即是指向變數內存地址。同樣上面的例子:
void modify(int * a)
{
(*a)++;
}
void main()
{
int a=5;
modify(&a);
printf("%d",a);
}
這個答案當然是6
因為你傳進去的是a的地址,所以在modify函數中的操作都是對a地址上的內容進行操作,即是操作a所以modify函數不用返回這個數,main中a的值也會改變。因為大家都是操作同一個內存空間,而上面不用指針,modify操作的是另一個新開辟的內存空間,只是這個內存空間初始值和a一樣。
現在來說說傳參,其實你「為什麼函數參數是字元串的多用指針?」 那句我不是很明白,C中的字元串傳參好像就指針一種形式(除非用結構體)。
何時用指針,何時用拷貝。當傳的參數是一個結構體,而這個結構體比較大,這時最好用指針,因為如果用拷貝的話,單單花在拷貝的時間就要浪費很多,而如果這個函數經常被調用,那麼這效率問題就出現了。
你在子函數中要對你的主調用函數中變數進行操作時也可以用指針做參數,這樣子函數就可以不用return 如果不是用指針的話,就要再子函數的未尾加上一條return x;把這個數返回當返回值。
多看點書,多寫點程序,剛開螞亂並始學都會對指針比較迷茫。寫多了,自然而然就懂了。
c語言中如果函數的參數不用指針而用整數能否實現值交換?
不能
解釋:
1.就像是 你復印了一份文件, 對復印的文檔進行修改 那麼你的原文檔上面能有改動嗎?
C語言; 編寫一個函數,用指針方法實現功能
int find(char* source/*源串*/, char* target/*子串*/)找到返回在源串中的位置,未找到返回-1,如果要改為找到返回1,把return i改為return 1;{ int i,j; int s_len=strlen(source); int t_len=strlen(target); if(t_len>s_len) { return -1; } for(i=0;i<=s_len-t_len;i++) { j=0; int flag=1; if(source[i]==target[j]) { int k,p=i; for(k=0;k<t_len;k++) { if(source[p]==target[j]) { p++; j++; continue; } else { flag=0; break; } } } else { continue; } if(flag==1) { return i; } } return -1;}
C語言,用指向函數指針的知識實現兩個函數求和的功能
兩個函數求和?是兩個數求和的函數吧!
int add(int a, int b){ return a+ b;}
int main()
{
int sum;
int (*fn)(int , int );
fn = add;
sum = fn(3,5);
}
利用指針作函數參數,設計一函數實現將n個元素進行排序
將這n個元素存在數組里,然後用指針類型參數接收即作為形參,然後採用排序演算法對這些元素進行排序即可
C語言,編寫一函數,其功能是求一個長整數各位數字之和。要求使用指針函數實現
其功能是求一個長整數各位數字之和:
int function(long l){
int sum = 0;
String s = l+"";把長整數轉成字元串
for(int i=0;i<s.length();i++){
sum +=Integer.ValueOf(s.charAt(i));
}
return sum;
}
c程序,使用指針作為函數參數,編寫函數實現兩個字元串連接
char *mycat(char *a,const char *b){ char *t; if(!a || !b) return NULL; t=a; while(*a) a++; while(*a++=*b++); return t;}
編一個函數sort,使10個整數按升序排列,在main函數中輸入這10個數,並輸出排好序的數,函數參數用指針實現
#include<stdio.h>
void sort(int *a,int n)
{
int i,j,temp;
for(j=0;j<n;j++)
for (i=0;i<n-j-1;i++)
if (a[i]>a[i+1])
{
temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;
}
}
void main()
{
int i,j,temp;
int a[10];
for(i=0;i<10;i++)
scanf ("%d,",&a[i]);
sort(a,10);
for(i=0;i<10;i++)
printf("%d ",a[i] );
printf("\n");
}
c語言編程:用指針變數作函數參數求三個數和
#include "stdafx.h"#include "process.h"double getsum(double *a, double *b, double *c);聲明函數 參數為double類型的指針int main(int argc,char* argv[]){double *sum=new double;*sum = 0;double x = 1.33332;double y = 2.1;double z = 6.4;*sum=getsum(&x, &y, &z);用變數地址做參數調用函數printf("%g\n",*sum);delete sum;釋放空間sum = NULL;system("pause");return 0;}double getsum(double *a, double *b, double *c){ return (*a +*b+ *c );}
③ C語言用函數如何實現兩個數交換
#include"stdio.h"int swap(int *a,int *b){int temp;temp=*a;*a=*b;*b=temp;}
main(){int x,y;printf("請輸入x與y的值,用空格隔開 ");scanf("%d%d",&x,&y);printf("x=%d,y=%d ",x,y);swap(&x,&y);printf("交換後 x=%d,y=%d ",x,y);}
(3)c語言交換兩個數的函數擴展閱讀:
C語言是一門通用計算機編程語言,廣泛應用於底層開發。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。
盡管C語言提供了許多低級處理的功能,但仍陪漏純然保持著良好跨平台的特性,以一個標准規格寫出的C語言程序可在許多電腦平台上進行編譯,甚至包含一些嵌入式處搜冊理器(單片機或稱MCU)以及超級電腦等作業平台。
二十世紀八十年代,為了避免各開發廠商蘆咐用的C語言語法產生差異,由美國國家標准局為C語言制定了一套完整的美國國家標准語法,稱為ANSI C,作為C語言最初的標准。目前2011年12月8日,國際標准化組織(ISO)和國際電工委員會(IEC)發布的C11標準是C語言的第三個官方標准,也是C語言的最新標准,該標准更好的支持了漢字函數名和漢字標識符,一定程度上實現了漢字編程。
C語言是一門面向過程的計算機編程語言,與C++,Java等面向對象的編程語言有所不同。其編譯器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。
④ c語言怎樣交換兩個數組 用swap函數
void swap_array(int *pa,int *pb);
main(){
int x[]={0,1,2,3,4};
int y[]={5,6,7,8,9};
swap_array(x,y);
int i;
for(i=0;i<5;i++)
printf("%d",x[i]);
printf("\r\n",x[i]);
for(i=0;i<5;i++)
printf("%d",y[i]);
scanf("%d",&i);
}
void swap_array(int *pa,int *pb){
int n;
n= sizeof(pa);
int c;
int i;
for(i=0;i<=n;i++){
c=*pa;
*pa=*pb;
*pb=c;
++pa;
++pb;}
}
⑤ 在C語言中如何將兩個數進行互換
將兩個數進行互換的方法有兩種形式:
1、藉助中間變數完成,此方法直觀,易理解,使用最多
2、不需要中間變數,通過變數身的運算完成交換。
參考代碼:
方法1:
inta=2,b=3,t;
t=a;//先將a存儲到臨時變數t中
a=b;//將b存儲到a中
b=t;//將臨時變數中的原a值存儲到b中
printf("a=%db=%d ",a,b);
方法2:
inta=2,b=3,t;
a+=b;//把兩數之和存到a中
b=a-b;//用兩數和減去b可得原a,存儲到b中
a=a-b;//因為b現在是原a值,所以,用兩數和減去b(原a)可得原b,存儲到a中
此方法,還可以用異或運算來實現,原理相同。
⑥ c語言中swap是個什麼函數
swap函數一般是一個程序員自定義函數,是實現兩個變數數值的交換。
1、比如:
int a = 2;
int b =3;
swap(a,b); //一般用到變數數值交換,交換後a=3 b = 2;
2、通過使用臨時變數實現交換。
void swap1(int x,int y)
{
int temp;
temp=x;
x=y;
y=temp;
}
(6)c語言交換兩個數的函數擴展閱讀
C語言swap函數的使用
#include<stdio.h>
void swap(int *pa,int *pb)
{
int temp;
temp=*pa,*pa=*pb,*pb=temp;
}
void main()
{
int a=10,b=20;
swap(&a,&b);//傳遞的是實參變數a,b的地址
printf("a=%d,b=%d ",a,b);
}
⑦ C語言怎麼用自定義函數將兩個數交換
要用函數實現兩個數的交換,則函數參數必須定義為指針形式,否則函數中對數值的修改將不會影響主調函數,這是C語言的規則。
所以,以整型為例,自定義函數書寫如下:
void swap_int(int*a,int*b)
{
int t;
t = *a;
*a=*b;
*b=t;
}