當前位置:首頁 » 編程語言 » c語言交換任意數字
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言交換任意數字

發布時間: 2022-11-28 15:29:39

『壹』 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);}

(1)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語言交換兩個數字的代碼

首先要捋順一下,先看第一段程序。這段程序的目的就是為了將兩個變數的數值進行交換。此時要明白指針的使用方法,這里的交換函數是void swap(int &x, int &y),即無返回值的函數,函數傳遞的參數是int &x和int &y,這兩個東西是什麼呢?這兩個東西是定義的引用,而這個我們就可以理解為是兩個用來存儲傳遞進來的參數的地址的變數(這么說可能有點亂,其實就是將調用該函數是時傳遞進來的變數的地址給這兩個參數),所以如果在這個swap函數中對這兩個參數操作時,實際上就是對傳遞進來的那兩個變數進行操作。至於你問的關於整型的問題,這個也很好理解,在c語言里地址就是整型的,而這兩個變數定義的時候也是int整型的,所以無論是地址還是值都是整型的,而又因為*a和*b是一個指針指向的值,所以*a、*b是整型,而&a、&b是指針的地址,所以也是整型。

接下來看你第二段程序(你自己寫的這個):
看程序前請仔細查看關於函數方面的資料,至於你這個return為什麼是錯的這個問題其實很簡單,首先要了解一個函數的定義,定義函數簡單的可以分為有返回值和無返回值的,有返回值的定義類似這樣
int abc();
float bcd();
如上所示,函數名什麼的都好理解,函數名前面的"int"和"float"是指函數返回的類型,即你這個函數在執行完之後需要用return語句返回一個值,而這個返回類型就是指這個返回值的類型。
還有一種是不需要返回值的,即
void abc();
void cde();
這類函數在執行完成後不需在最後添加return語句來返回值,如果添加了也用不了。
而你寫的這個函數定義的是
int swap(int x,inty)
這里聲明的是一個需要返回整型變數的函數,而這個函數里你的返回值語句return後沒有跟任何變數或值,程序不知道你返回的是什麼東西,所以會報錯,這里一般都會填寫return 0;表示程序執行完成。當然這個0也可以換成整型的變數。

最後說一下你這個程序,你這個程序在執行完成後是不會將需要交換的變數a和b的值進行交換的。這個關繫到形參和實參的概念,請仔細查看書籍或看一些例子,你這個只是將形參的值交換了,真正的需要交換的值不會改變,也就是說你只是將a和b的兩個值復制了一份,然後將復制了的那個交換了,當swap函數完成後又將復制了的那份刪除掉了,所以說,不管怎樣最初的a和b都沒有受到任何影響。

『叄』 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;

}

運行結果:

(3)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語言中如何將兩個數進行互換

定義 A ,B, C,
把A保存到C
把B保存到A
把C保存到B
這要就OK了!
int a, b , c;
c = a;
a = b;
b = c;

『伍』 c語言如何編寫兩個數字數值交換

我們用C語言的時候,經常需要將兩個數字交換,那麼如何實現呢?下面我給大家分享一下。

工具/材料

Dev C++

  • 01

    首先我們在Dev C++軟體中新建一個C語言項目,如下圖所示

  • 02

    接下來我們在C語言文件中聲明兩個數字並輸出,如下圖所示

  • 03

    然後用一個中間變數對他們進行交換,如下圖所示

  • 04

    最後運行編寫好的C語言文件,我們就可以看到如下圖所示的交換結果了

『陸』 C語言怎麼用自定義函數將兩個數交換

要用函數實現兩個數的交換,則函數參數必須定義為指針形式,否則函數中對數值的修改將不會影響主調函數,這是C語言的規則。
所以,以整型為例,自定義函數書寫如下:
void
swap_int(int*a,int*b)
{
int
t;
t
=
*a;
*a=*b;
*b=t;
}

『柒』 C語言交換兩個數字

#include<stdio.h>
void
swap(int
&x,
int
&y)
{
int
t;
t=x;
x=y;
y=t;
}
void
main()
{
int
a=3,
b=4;
swap(a,b);
printf("a=%d
b=%d",a,b);
}
為什麼
&x,&y是整形?為什麼有時候*a
*b也能是整形???
//==================================================================
上邊這個程序能正常編解碼,應該報錯的
void
swap(int
&x,
int
&y)
的定義不正確
改成void
swap(int
*x,
int
*y),參數是整型指針,
而你的swap(a,b);傳遞的是整型變數而不是指針
改成swap(&a,&b);,
這是C語言的指針的知識,也是C語言最詭異的東西
//==================================================================
這是我自己寫的
為什麼return有錯誤呢?
#include<stdio.h>
int
swap(int,int);
main()
{
int
a,b;
scanf("%d%d",&a,&b);
swap(a,b);
printf("%d
%d",a,b);
}
int
swap(int
x,int
y)
{
int
t;
t=x,x=y,y=t;
return;
}
//=================================================
int
swap(int
x,int
y)的參數是整型變數,
傳遞的是形式參數
swap(a,b);
雖然傳遞了參數,但是傳遞的是形式參數,
在swap函數的處理是不會改變a,b,的值的
//================================================
建議參考C語言參數傳遞和C語言指針的知識

『捌』 c語言中如何實現任意數據類型變數值得交換

#include<stdio.h>
#define SCANF(m) scanf("%"#m"%"#m,&m##a,&m##b)
#define PRINTF(m) printf("交換結果:%"#m"\t%"#m"\n",m##a,m##b)
void swap(char,void*,void*,void*);
int main()
{
unsigned ua,ub,ut;
int da,db,dt;
float fa,fb,ft;
double lfa,lfb,lft;
char ca,cb,ct,ch;
printf("數據類型:");
printf("u-無符號整型\ti-有符號整型\tf-單精度實型\td-雙精度實型\tc-字元型\n");
printf("請選擇\n");
scanf("%c",&ch);
fflush(stdin);
printf("請輸入兩個指定類型的數據:");
switch(ch)
{
case 'u':SCANF(u);swap(ch,&ua,&ub,&ut);PRINTF(u);break;
case 'i':SCANF(d);swap(ch,&da,&db,&dt);PRINTF(d);break;
case 'f':SCANF(f);swap(ch,&fa,&fb,&ft);PRINTF(f);break;
case 'd':SCANF(lf);swap(ch,&lfa,&lfb,&lft);PRINTF(lf);break;
case 'c':SCANF(c);swap(ch,&ca,&cb,&ct);PRINTF(c);break;
}
}
void swap(char c,void *p1,void *p2,void *p3)
{
switch(c){
case 'u':*(unsigned *)p3=*(unsigned *)p1;*(unsigned *)p1=*(unsigned *)p2;*(unsigned *)p2=*(unsigned *)p3;break;
case 'i':*(int *)p3=*(int *)p1;*(int *)p1=*(int *)p2;*(int *)p2=*(int *)p3;break;
case 'f':*(float *)p3=*(float *)p1;*(float *)p1=*(float *)p2;*(float *)p2=*(float *)p3;break;
case 'd':*(double *)p3=*(double *)p1;*(double *)p1=*(double *)p2;*(double *)p2=*(double *)p3;break;
default :*(char *)p3=*(char *)p1;*(char *)p1=*(char *)p2;*(char *)p2=*(char *)p3;break;
}
} 這個是我幫我一個兄弟做的,你看行不?

『玖』 "將任意的兩位整數y的個位數和十位數交換",用c語言來表示

思路:先求出這個兩位數十位和個位數,把個位乘以10加上十位上的數就是交換後的數。

參考代碼:

#include<stdio.h>
intmain()
{
intn,m;
scanf("%d",&n);
m=(n%10)*10+n/10;
printf("%d ",m);
return0;
}
/*
運行結果:
36
63
*/

『拾』 C語言數值的交換

1
a
b中oxa23錯誤;c
4c1.5錯誤;d
10,000錯誤
2
c
for是關鍵字不能他用。
3
b
(1/2)*(a+b)*h中(1/2)直接為0,要想一樣應該為:(1.0/2)或(1/2.0)
4
d
k+1沒有改變k的值。
5
d
kk>=48
&&
kk<91,這個范圍的符號不僅有大寫字母還有別的。
6.正確,這是因為putchar()包含在改頭文件中。
n=n/10;