指针数组 数组指针

/* *指针数组,数组指针 */#include <stdio.h>#include <stdlib.h>#include <string.h>char *getline(void); //读取文字int str_compare(const void *, const void *);#define NLINES_MAX 1000 //文字行的最大数目char *linePtr[NLINES_MAX]; //字符指针的数组int main(){ //读取行 int n = 0; for(; n<NLINES_MAX &amp;&amp; (linePtr[...
基础编程 | 2012-10-29 16:17 | 阅读 1192 次 | 评论 0 条

统计一个行文字大小写字母、空格、数字及其他

//:输入一个字符串,统计大写字母,小写字母,空格,数字以及其他个数#include <stdio.h>const int N = 100;int main(){ char *p, string[N]; int uplet, lowlet, space, digit, other; uplet = lowlet = space = digit = other = 0; printf("输入字符串:"); gets(string); p = string; while(*p!=''){ if(*p>='A' &amp;&amp; *p...
基础编程 | 2012-10-29 15:08 | 阅读 1328 次 | 评论 0 条

约瑟夫环简单模拟

/* *有n个人围成一圈,顺序排号,从第一个人开始报数, *凡报到3的人退出圈子,最后留下的是第几号。 */#include <stdio.h>const int N = 100;int main(){ int num[N], *p, i, cnt, k; int n; printf("输入一个正整数:"); scanf("%d", &amp;n); p = num; for(i=0; i<n; i++){ *(p+i) = i+1; } i = 0, cnt = 0, k = 0; while(cnt<n-1){ ...
基础编程 | 2012-10-29 14:46 | 阅读 990 次 | 评论 0 条

数组块平移

/* *有n个整数,使前面各数顺序向后移动m个位置,最后m个数变成最前面m个数 */#include <stdio.h>#include <stdlib.h>int *f(int *p, int n, int m);int main(){ int array[10] = {2,9,8,0,7,6,5,3,4,1}; int *q, i; printf("原来的数组:n"); for(i=0; i!=10; i++){ printf("%4d", array[i]); } printf("n"); q = f(array, 10, 3...
基础编程 | 2012-10-29 12:33 | 阅读 1022 次 | 评论 0 条

指向函数的指针与返回指针的函数

1.指向函数的指针变量一般定义形式为 数据类型 (*指针变量名)(参数列表)函数的调用可以通过函数名调用,也可以通过函数指针调用,例如,int max(int, int)与int (*p)(int, int); p = max是等价的。指针变量p是专门用来存放函数的入口地址的。p=max(a,b);这种写法是错误的。用函数指针变量调用函数时,只需将(*p)代替函数名即可。2.返回指针值的函数,一般定义形式为 类型名 *函数名(参数列表)#include <stdio.h>float *search(float (*pointer)[4], int n);int main...
基础知识 | 2012-10-29 09:50 | 阅读 988 次 | 评论 0 条

指针运算

p = &amp;a[10];(i)p++。使p指向下一个元素,即a[1]。(ii)*p++。由于++和*同优先级,结合方向为自右至左,因此等价为*(p++),作用是先得p指向的变量的值(即*p),然后再使p+1=>p。(iii)*(p++)与*(++p)不同。前者是先取*p值,然后使p加1;后者是先使p加1,再去*p。(iv)(*p)++。表示p所指向的元素值加1。注意:是元素值加1,而不是指针值加1。(v)如果p当前指向a数组中第i个元素,则*(p--)相当于a[i--];*(++p)相当于a[++i];*(--p)相当于a[--i];
基础知识 | 2012-10-28 20:34 | 阅读 820 次 | 评论 0 条

指针不同的交换方式

#include <stdio.h>int main(){ int *p1, *p2, a, b, c, d; printf("输入4个整数:"); scanf("%d%d%d%d", &amp;a, &amp;b, &amp;c, &amp;d); p1 = &amp;a; p2 = &amp;b; printf("a = %d, b = %dn", a, b); printf("p1 = %d, p2 = %dn", *p1, *p2); { int *p; p = p1; p1 = p2; ...
基础编程 | 2012-10-28 19:56 | 阅读 855 次 | 评论 0 条

十六进制转换为十进制

//:十六进制转换为十进制#include <stdio.h>#include <math.h>int main(){ int n, dec = 0; int cnt = 0; printf("输入一个16进制数:"); scanf("%x", &amp;n); while(n){ dec += (n % 10) * (int)pow(10.0, cnt); n /= 10; cnt++; } printf("%dn", dec); return 0;}
基础编程 | 2012-10-28 19:29 | 阅读 1205 次 | 评论 0 条

二分查找

//:二分查找#include <stdio.h>int main(){ typedef struct{ char name[20]; int no; }employee; employee array[10]; int i, j, temp, findNo, min, max, middle; for(i=0; i<10; i++){ printf("输入工号:"); scanf("%d", &amp;array[i].no); printf("输入姓名:"); s...
基础编程 | 2012-10-28 19:16 | 阅读 872 次 | 评论 0 条

牛顿迭代法解方程

//:牛顿迭代法#include <stdio.h>#include <math.h>int main(){ float a, b, c, d; float x1, x2, f1, f2; printf("输入4个数:"); scanf("%f%f%f%f", &amp;a, &amp;b, &amp;c, &amp;d); x1 = 0; x2 = 1; while(fabs(x1-x2)>1e-6){ x1 = x2; f1 = a * x1* x1 * x1 + b * x1 * x1 + c * x1 + d;...
基础编程 | 2012-10-28 18:28 | 阅读 1242 次 | 评论 0 条

字符串中最长单词

//:字符串中最长单词#include <stdio.h>int main(){ char array[100], c; int word = 0, max = 0; int i, cnt = 0, flag; gets(array); for(i=0; (c=array[i])!=''; i++){ if(' '==c){ word = 0; }else if(0==word){ word = 1; cnt = 1; }else if(1==word...
基础编程 | 2012-10-28 18:19 | 阅读 1283 次 | 评论 0 条

连接两个字符串

//:两个字符串连接#include <stdio.h>void contact(char array[], char arrayb[]);int main(){ char array[100], arrayb[20]; gets(array); gets(arrayb); contact(array, arrayb); puts(array); return 0;}void contact(char array[], char arrayb[]){ int i, j, cnt = 0; for(i=0; array[i]!=''; i++...
基础编程 | 2012-10-28 16:52 | 阅读 1086 次 | 评论 0 条

最大公约数,最小公倍数

//:最大公约数,最小公倍数#include <stdio.h>int main(){ int num1, num2, temp; int a, b; printf("input two numbers:"); scanf("%d%d", &amp;num1, &amp;num2); if(num1 < num2){ temp = num1; num1 = num2; num2 = temp; } a = num1, b = num2; while(b){ temp =...
基础编程 | 2012-10-28 16:30 | 阅读 1205 次 | 评论 0 条

古老的数学游戏汉诺塔

//:hanoi典型的递归调用#include <stdio.h>void hanoi(int n, char a, char b, char c);void move(char a, char b);int main(){ int n; printf("input an unsigned integer:"); scanf_s("%d", &amp;n); printf("========game begin========n"); hanoi(n, 'A', 'B', 'C'); return 0;}void hanoi(int n, char a...
基础编程 | 2012-10-28 15:23 | 阅读 974 次 | 评论 0 条

scanf与gets区别

scanf( )函数和gets( )函数都可用于输入字符串,但在功能上有区别。若想从键盘上输入字符串"hi hello",则应该使用__gets__函数。 gets可以接收空格;而scanf遇到空格、回车和Tab键都会认为输入结束,所有它不能接收空格。 char string[15]; gets(string); /*遇到回车认为输入结束*/ scanf("%s",string); /*遇到空格认为输入结束*/ 所以在输入的字符串中包含空格时,应该使用gets输入。 ...
库函数 | 2012-10-27 11:10 | 阅读 1368 次 | 评论 2 条

scanf, scanf_I, wscanf, wscanf_I

Read formatted data from the standard input stream. These are versions of scanf, _scanf_l, wscanf, _wscanf_l with security enhancements as described in Security Enhancements in the CRT. ...
库函数 | 2012-10-27 10:45 | 阅读 1690 次 | 评论 0 条

O(n^2)排序法

/* *冒泡排序法 */#include <iostream>using namespace std;int main(){ int a[10]; int i, j, temp; cout << "输入10个整数:n"; for(i=0; i<10; i++){ cin >> a[i]; } /*排序*/ for(i=0; i<9; i++){ for(j=0; j<9-i; j++){ if(a[j]>a[j+1]){ temp = a[j]; ...
基础编程 | 2012-10-27 10:15 | 阅读 1122 次 | 评论 0 条
浏览19224次
文章归档