㈠ 在c語言中如何將兩個數進行互換
將兩個數進行互換的方法有兩種形式:
1、藉助中間變數完成,此方法直觀,易理解,使用最多
2、不需要中間變數,通過變數身的運算完成交換。
參考代碼:
方法1:
int a=2,b=3,t;
t=a; //先將a存儲到臨時變數t中
a=b; //將b存儲到a中
b=t; //將臨時變數中的原a值存儲到b中
printf("a=%d b=%d\n", a,b );
方法2:
int a=2,b=3,t;
a += b ; //把兩數之和存到a中
b= a-b ; //用兩數和減去b可得原a,存儲到b中
a= a-b ; //因為b現在是原a值,所以,用兩數和減去b(原a)可得 原b,存儲到a中
此方法,還可以用異或運算來實現,原理相同。
㈡ 關於C語言交換兩個數(有關指針)
在C語言中,通過函數參數傳遞,進行兩個數的交換,必須採用傳遞指針的方式,同時,在函數中,一定要對兩個指針中的數據內容進行交換才能達到交換實參地址中數據的目的。
如:
//正確的交換函數
voidswap1(int*p1,int*p2)
{
intp;
p=*p1;//通過*引用地址中的數據,進行交換
*p1=*p2;
*p2=p;
}
//錯誤的交換函數
voidswap2(int*p1,int*p2)
{
int*p;
p=p1;//這里進行改變的是形參的值,而形參只是實參的一個副本,形參本身的變化,是不能改變實參的值的!!
p1=p2;
p2=p;
}
PS:要正確認識C語言中的實參與形參,形參在使用中只是實參的副本,若形參是指針,我們可以通過形參改變實參地址中的內容,但無法改變實參本身的值!
㈢ 輸入兩個整數,交換後輸出 C語言怎麼編程
利用C語言來實現交換兩個變數的值,需要定義三個變數:
#include<stdio.h>
int main()
{
int x,y,temp;//定義三個變數
printf("請輸入分別x和y的值 ");
scanf("%d %d",&x,&y);//終端輸入變數x、y
temp=y;//把y賦值給temp
y=x;//把x賦值給y
x=temp;//把y賦值給temp
printf("%d %d",x,y);//輸出交換後x和y的值
return 0;
}
結果如下圖所示:
(3)c語言兩個整數的互換擴展閱讀
其他解決該問題的方法
需要定義兩個變:
#include<stdio.h>
int main()
{
int x,y;//定義兩個變數
printf("請輸入分別x和y的值 ");
scanf("%d %d",&x,&y);//終端輸入變數x、y
x=y-x;
y=y-x;//把x賦值給y
x=y+x;//把y賦值給x
printf("%d %d",x,y);//輸出交換後x和y的值
return 0;
}
㈣ 輸入兩個整數,交換後輸出 C語言怎麼編程
利用C語言來實現交換兩個變數的值做純山,需要定義三個變數:褲亂
#include<stdio.h>
int main()
{
int x,y,temp;//定義三個變數
printf("請輸入分別x和y的值 ");
scanf("%d %d",&x,&y);//終端輸入變數x、y
temp=y;//把y賦值給temp
y=x;//把x賦值給y
x=temp;//把y賦值給temp
printf("%d %d",x,y);//輸出交換後x和y的值
return 0;
}
結果如下圖所示:
(4)c語言兩個整數的互換擴展閱讀
其他解決該問題的方法
需要定義兩個變:
#include<stdio.h>
int main()
{
int x,y;//定義兩個變數
printf("請輸入分別x和y的值 ");
scanf("%d %d",&x,&y);//終端輸入變數x、y
x=y-x;
y=y-x;//把x賦值給純中y
x=y+x;//把y賦值給x
printf("%d %d",x,y);//輸出交換後x和y的值
return 0;
}
㈤ 用C語言編寫程序實現兩個整數交換值
#include<stdio.h>
intmain()
{
intx,y,t;
printf("請輸入二個整數: ");
scanf("%d%d",&x,&y);
printf("輸入的二個數為:x=%d,y=%d ");
t=x;
x=y;
y=t;
printf("交換後的二個數為:x=%d,y=%d ");
return0;
}
㈥ c語言交換兩個數的函數
好像沒有return(x,y)這種寫法吧,這樣寫應該可以
void swap(int *x,int *y)
{
int c;
c=*x;
*x=*y;
*y=c;
}
㈦ c語言函數的使用,定義一個交換函數 實現2個數字的交換。
void Swap(int&x,int&y)
{
int temp=0;
temp=x;
x=y;
y=temp;
}
int main()
{
int a=1;
int b=2;
Swap(a,b);
cout<<"a="<<a<<endl;
cout<<"b="<<b<<endl;
system("pause");
return 0;
}
運行結果:
(7)c語言兩個整數的互換擴展閱讀:
用指針交換:
void Swap(int*x,int*y)
{
int temp=0;
temp=*x;
*x=*y;
*y=temp;
}
int main()
{
int x=1;
int y=2;
Swap(&x,&y);
printf("x=%d,y=%d ",x,y);
system("pause");
return 0;
}
運行結果:
X=2;Y=1
㈧ C語言 編寫程序,從鍵盤上輸入兩個不同的整數,讓兩個整數實現數據交換。怎麼解答 求大神
#include <stdio.h>
int main()
{
int a, b;
printf("請輸入兩個不同的整數:");
scanf("%d %d", &a, &b);
if (a != b)
{
int tmp = a;
a = b;
b = tmp;
printf("交換後的數為%d %d\n", a, b);
}
else
{
printf("兩個數相等,無需交換!\n");
}
return 0;
}
㈨ 從鍵盤輸入兩個整數,交換這兩個整數,用c語言寫,怎麼寫求答案啊,謝謝
用得最多的方法是:
#include<stdio.h>
intmain()
{int梁滾i,j,t;
scanf("%d%d",&i,&j);
printf("i=%dj=%d ",i,j);
t=i;i=j;j=t;橡核余//實現了變數值的交換
printf("i=%d氏輪j=%d ",i,j);
return0;
}
㈩ 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 );}