在C语言中如何将两个数进行互换?

Python016

在C语言中如何将两个数进行互换?,第1张

方法 1:(引进变量)

可以认为a、b、c各占一个小格,小格里可以放入数字。具体步骤为:

程序如下:

#include <stdio.h>

int main()

{

int a,b,c

scanf("%d %d",&a,&b)

c=a;

a=b

b=c

printf("a=%d b=%d\n",a,b)

return 0

}

方法 2:()

两个数的互换可以用式子:

a=b-ab=b-aa=b+a来实现。

程序如下:

#include<stdio.h>

int main()

{

int a,b

scanf("%d %d",a,b)

a = a + b

b = a - b

a = a - b

printf("a=%d,b=%d", a, b)

return 0

}

方法 3:(指针)

程序如下:

#include<stdio.h>

int fun(int *p, int *q)

{

int tmp = *p

*p = *q

*q = tmp

}

int main()

{

int a,b

scanf("%d %d",&a,&b)

printf("%d,%d\n", a, b)

fun(&a, &b)

printf("%d,%d\n", a, b)

return 0

}

C语言提供了几个标准库函数,可以将任意类型(整型、长整型、浮点型等)的数字转换为字符串。用itoa()函数将整数转换为字符串。

itoa()函数有3个参数:第一个参数是要转换的数字,第二个参数是要写入转换结果的目标字符串,第三个参数是转移数字时所用的基数。在上例中,转换基数为10。

#include <stdio.h>

int main()

{

int a[4]={1,2,3,4}

char b[4]

for(int i=0i<4i++)

b[i]=a[i]

for(int i=0i<4i++)

printf("%c",b[i])

return 0

}

字符串在存储上类似字符数组

它每一位单个元素都是能提取的,字符串的零位是它的长度,如s[0]=10,这提供给我们很多方便,例如高精度运算时每一位都能转化为数字存入数组。

通常以串的整体作为操作对象,如:在串中查找某个子串、求取一个子串、在串的某个位置上插入一个子串以及删除一个子串等。

两个字符串相等的充要条件是:长度相等,并且各个对应位置上的字符都相等。设p、q是两个串,求q在p中首次出现的位置的运算叫做模式匹配。串的两种最基本的存储方式是顺序存储方式和链接存储方式。

以上内容参考:百度百科-字符串

//..code

char A = '9'

int B = (int)(A)

printf("%d\n",B)

------>输出结果:9

//..code

char A = "59"

int B = atoi(A)

printf("%d\n",B)

------->输出结果:59

//..code

//传入字符串buf

char buf = "{15,124,0,0,9,24,100,224,106,72,1,33,33,33,17,14,26,46,10,235,2,57,82,99,240,178,227,32,50,48,57,0,247,166,5,34,45,105,248,218,33,127,163,228,241,20,0,65,4,162,115,125,64}"

uint8_t buffer[1024] = {0}//接收用缓存uint8_t数组

char temp[10] = "0"//用来存储字符串中的某一个数据,既atoi的对象

//开始对字符串进行处理

for(int i = 0i <sizeof(buffer)i++)

{

if(buf[i] == '{')//此判断不允许一个数值里存在多余空格,如105不能写成1 05

{

k = 0

n = 0

j = 0

memset(temp, 0x00, sizeof(temp))

memset(buffer, 0x00, sizeof(buffer))//..置0

continue

}

else if(buf[i] != ',' &&buf[i] != '}')

{

n += 1

temp[j] = buf[i]

j += 1

continue

}

else if(buf[i] == ',' || buf[i] == '}')

{

n = 0

j = 0

uint8_t serv = atoi(temp)//..字符转int

memset(temp, 0x00, sizeof(temp))

buffer[k] = serv

k += 1

continue

}

}

//for循环输出buffer。

1.本例中数组值只能是0-255,因为定义的接收数组的类型为uint8_t,如果需要更大数值,请修改buffer的类型。

2.由于定义buffer时大小为1024个0,输出buffer时前面为需要的数据,后面为0的1024个数据。