基本思路就是先将为0的元素移动到数组的最后面,然后再利用冒泡法对非零的数值进行排序。下面是代码:#includevoid Afunc(int *p,int size);void Afunc(int *p,int size){/* 把零元素移动到数组的最后 */ int i, j, temp, k;i = 0; j = size - 1; do{if(p[i] == 0){temp = p[i];p[i] = p[j];p[j] = temp;j--;}elsei++;}while(i p[k + 1]) { temp = p[k]; p[k] = p[k + 1]; p[k + 1] = temp; } }}int main(void){int a[10] = {12,0,31,14,5,0,0,17,0,-12};Afunc(a,10);int i;for(i = 0; i 10; i++)printf("%d ",a[i]);printf("\n");}
创新互联公司是一家专注于成都网站建设、网站制作与策划设计,竹溪网站建设哪家好?创新互联公司做网站,专注于网站建设十载,网设计领域的专业建站公司;建站业务涵盖:竹溪等地区。竹溪做网站价格咨询:13518219792
size是由string vector 和bitset定义的函数,分别用于返回字符个数,元素个数和二进制位的数。string和vector的size成员函数用以返回size_type类型的值。bitset返回size_t的值。
用法,例如string
string st("fddddddddgs");
cout"the size of"st"is"st.size();
打印st中的字符个数
size其实就是计算不同类型容器中的元素个数的。
sizeof是C语言的一种单目操作符,就像C语言的其他操作符++、--等。
它并不是函数。
sizeof操作符以字节形式给出了其操作数的存储大小。
操作数可以是一个表达式或括在括号内的类型名,如double,int等。
如sizeof(double)的值应该是8,即double型数据在内存中占8个字节。
运算符:sizeof
优先级:2
含义:长度运算符
(单目运算符)
结合方向:自右至左
根据我的经验C函数库里是没有size()函数的,但是有个叫sizeof()的操作符,其实它的用法跟一般函数的用法一样,返回的是一个对象或者类型所占的内存字节数,很多人误认为它是函数,其实不然,函数与操作符的区别就在于,函数是程序运行是动态计算出一个对象或者类型所占的内存字节数,然而sizeof()操作符是在编译的时候就把字节数计算好,然后把这个字节数编译进行程序,而不是整个函数的代码!!!
(1)sizeof不是函数,它只是一个操作符(operator)。
(2)sizeof的作用是返回一个对象或者类型所占的内存字节数,它的返回值的类型是size_t类型,而size_t是在头文件stddef.h中定义的。size_t 这是一个依赖于编译系统的值,一般定义为
「typedef unsigned int size_t;」,也就是无符号整型。
(3)sizeof有三种语法形式,如下:
1) sizeof( object ); // sizeof( 对象 );
2) sizeof( type_name ); // sizeof( 类型 );
3) sizeof object; // sizeof 对象;
所以,
int i;
sizeof( i ); // ok
sizeof i; // ok
sizeof( int ); // ok
sizeof int; // error
既然写法3可以用写法1代替,为求形式统一以及减少我们大脑的负担,只用写法1就行了!
(4)说回你的提问,既然sizeof的返回值是unsigned int型,那么很明显可以用 %u 、%o 、%x 来输出,这三个都是无符号整型的格式符,分别对应十进制、八进制、十六进制。
(5)而%zd是修饰符z与有符号十进制整型格式符%d组合而成的格式符,表示按 size_t 的类型来输出。那么,肯定,%zd 可以用来输出 sizeof 的返回值。
(6)而%d是按有符号整型来输出数值,所以与unsigned int的表示范围是不一样的,如果 sizeof 的返回值超出了 %d 的表示范围的话,是会输出一个不正确的数值的。
总结一下:sizeof 的返回值可以用 %u 、 %o 、 %x 、 %zd 来正常输出,而用 %d 的时候需要注意返回值是否会超出 %d (即 signed int 型)的表示范围。
另外,有的操作系统或编译器里,size_t 的类型可能是 long unsigned int 型,所以 输出 sizeof 的返回值的时候, 应该用 %lu 等。
以上,如有帮助,烦请点采纳,谢谢!
(1)sizeof不是函数,它只是一个操作符(operator)。
(2)sizeof的作用是返回一个对象或者类型所占的内存字节数,它的返回值的类型是size_t类型,而size_t是在头文件stddef.h中定义的。size_t 这是一个依赖于编译系统的值,一般定义为
「typedef unsigned int size_t;」,也就是无符号整型。
(3)sizeof有三种语法形式,如下:
1) sizeof( object ); // sizeof( 对象 );
2) sizeof( type_name ); // sizeof( 类型 );
3) sizeof object; // sizeof 对象;
所以,
int i;
sizeof( i ); // ok
sizeof i; // ok
sizeof( int ); // ok
sizeof int; // error
既然写法3可以用写法1代替,为求形式统一以及减少我们大脑的负担,只用写法1就行了!
(4)说回你的提问,既然sizeof的返回值是unsigned int型,那么很明显可以用 %u 、%o 、%x 来输出,这三个都是无符号整型的格式符,分别对应十进制、八进制、十六进制。
(5)而%zd是修饰符z与有符号十进制整型格式符%d组合而成的格式符,表示按 size_t 的类型来输出。那么,肯定,%zd 可以用来输出 sizeof 的返回值。
(6)而%d是按有符号整型来输出数值,所以与unsigned int的表示范围是不一样的,如果 sizeof 的返回值超出了 %d 的表示范围的话,是会输出一个不正确的数值的。
总结一下:sizeof 的返回值可以用 %u 、 %o 、 %x 、 %zd 来正常输出,而用 %d 的时候需要注意返回值是否会超出 %d (即 signed int 型)的表示范围。
另外,有的操作系统或编译器里,size_t 的类型可能是 long unsigned int 型,所以 输出 sizeof 的返回值的时候, 应该用 %lu 等。
以上,如有帮助,烦请点采纳,谢谢!