学习程序有一些经典的求解算法我们必须得掌握,
像本例——求两个非0自然数的最大公约数——是学习C语言时必要理解的。
为解决它,通常的函数编写是这样的:
int fun(int a,int b){ int tmp; if(a<b) { tmp=a; a=b; b=tmp; } while(b!=0) { tmp=a; a=b; b=tmp%b; } return a;
}
这里给出一个解决上述问题的递归函数——
int fun(int a,int b){ int temp; if(a<b) { temp=a; a=b; b=temp; } if(b==0) r...
今天去参加二级考试,其中有一道填空题出得挺好,写在这里与大家分享,
若不吝赐教,路人可以留下言语
题目大意如下
::对于程序(注意0的ASCII码是48)
#include<stdio.h>int main(){ char c1,c2; scanf("%c",&c1); c2=c1+9; printf("%c%c\n",c1,c2); return 0;}
若输入48,则输出为:——
我好多同学都填了09,你认为呢?做做看。
想必大家都学过冒泡排序,假如给一个数组A,他有N个元素,
如果要求对他从小到大排列,则冒泡排序的函数可以这样写:
void sort1(int *A,int N){ int i,j,tmp; for(i=0;i<N-1;i++) for(j=0;j+1<N-i;j++) if(a[j]>a[j+1]) { tmp=a[j]; a[j]=a[j+1]; a[j+1]=tmp; }}
其实冒泡排序还有一种形式,在这里与大家分享一下。
void sort2(int *A,int N){ int i,j,tmp; for(i=0;i<N;i++) ...
/*请编写程序, 该程序的功能是:对于一维整型数组,输入数组元素, 并删去数组中所有相同的数,使各个元素均不相同。思路:把数组中元素按顺序排列(如从小到大),然后进行操作。*/#include<iostream>#define num 6using namespace std;
void sort(int a[],int n); int fun(int a[],int n); int main(){ int i,n,a[num]; for(i=0;i<num;i++) cin>>a[i]; cout<<endl<<"************"<<endl; sort(a,num); ...
如果您能通过计算得出下面程序的输出结果,那就说明:
1,您对ascii码有了不错的掌握;
2,您对数据在内存中的存储形式以及进制转换理解地很好;
3,您被计算机化了~\(≧▽≦)/~啦啦啦
程序如下:
#include <stdio.h>int main(int argc, char *argv[]){ char a=0xddff; printf("%d\n",a); char b='A'+'32'; //注意辨别 printf("%d %c",b,b); return 0;}
生有涯而思无涯……
下面的程序是计算出一个十进制数的二进制位中有多少个1:
#include <stdio.h>#include <stdlib.h>int func (int x){ int countx = 0; while ( x ) { countx ++; x = x&(x-1); //注意这里 } return countx;}int main(int argc, char *argv[]){ int a; scanf("%d",&a); printf("%d\n",func(a)); system("pause"); ...
自然对界 struct 是一种复合数据类型,其构成元素既可以是基本数据类型(如 int、long、float 等)的变量,也可以是一些复合数据类型(如 array、struct、union 等)的数据单元。对于结构体,编译器会自动进行成员变量的对齐,以提高运算效率。缺省情况下,编译器为结构体的每个成员按其自然对界(natural alignment)条件分配空间。
各个成员按照它们被声明的顺序在内存中顺序存储,第一个成员的地址和整个结构的地址相同。 自然对界(natural alignment)即默认对齐方式,是指按结构体的成员中size 最大的成员对齐。 例如: struct...