C
文章平均质量分 59
C语言
YuJar
这个作者很懒,什么都没留下…
展开
-
数组_例题:用筛选法求1-100之间的素数
# include # define N 100int main(void){ int a[N], b[N]; //定义两个数组 int i, j, count = 0; a[0] = 1; //将1筛除 for(i=1; i a[i] = 0; //初始化所有数/*若筛中最小数的标志为0,则基为素数,将其存入素数数组b,素数个数+1*/ for(j=2; j if(a[j-1] ==原创 2014-04-14 10:58:00 · 3396 阅读 · 0 评论 -
C习题:应用递归算法,将一个int型整数转换为数字字符串。如123转换为“123”
/* 一种简单的写法,要求好像要用到数组,现有知识写感觉算法不行,太复杂! */#include r(int n){ if(n%10!=n) r(n/10); //这里是取整除结果; printf("%c",(n%10)+'0'); //先转换3再转换2,再转换1,原理同栈,先进后出!}void main(void){ r(123);}原创 2014-04-14 10:58:55 · 2663 阅读 · 1 评论 -
函数_习题:用函数求两个正数的最大公约数与最小公倍数
具体要求:写两个函数,分别求两个正数的最大公约数与最小公倍数,用主函数启用这两个函数并输出结果。两个正数由键盘输入。# include int gcd(int m, int n){ int t; if(m { t = m; m = n; n = t; } while(t!=0) { t = m%n; m = n; n = t; } return m;}int lcd(int m, int原创 2014-04-14 10:58:57 · 1848 阅读 · 0 评论 -
malloc函数
Malloc 向系统申请分配指定size个字节的内存空间。返回类型是 void* 类型。void* 表示未确定类型的指针。C,C++规定,void* 类型可以强制转换为任何其它类型的指针。 函数简介 原型:extern void *malloc(unsigned int num_bytes); 头文件:在TC2.0中可以用malloc.h或 alloc.h (注意:alloc.h 与 mall原创 2014-04-14 10:59:02 · 418 阅读 · 0 评论 -
指针的基本运算
由于指针所指向的内容是地址, 所以指针的运算实际上是地址的运算。指针有它自己特有的运算规律,与一般的整数是有区别的。间接存取运算: & 取地址运算符 * 取值运算符二者可以看作一对互逆运算符。在指针定义的时候“表示”“指向”, 在使用指针运算的时候,“*”表示取该指针变量所指向变量的值。 例如: int n =2, * p; p = &n; &(*p) 等效于p, (因为p = &n,则*原创 2014-04-14 10:59:06 · 1067 阅读 · 0 评论 -
关于指针基础含意的程序示例及说明
# include void main(void){ int n = 5, * p; p = &n; printf("%d\n", &n); printf("%d\n", p); //p = &n; printf("%d\n", &(*p)); //p = &n,则*p = n,即&(*p) = &n; printf("%d\n", *(&p)); //【个人理解:&p表示指针变量p的地址,则*(原创 2014-04-14 10:59:09 · 423 阅读 · 0 评论 -
用指针函数将两个字符串拼接
# include # include char *str(char *p1, char *p2){ char *p = p1; //将目标遗产地址赋给指针变量p;将数组s1的首地址赋给指针变量p, while(*p1++); //指针p1移到s1的串尾;当*p的值不是\0时, p就向后位移 直到*p为\0。 p1--; //因为p1现在的位置在\0,所以应向前移一个位置 while(*p1++原创 2014-04-14 10:59:11 · 16367 阅读 · 1 评论 -
指向函数的指针_示例
C语言中, 函数名本身就代表着该函数的入口地址。通过这个入口地址可以找到该 函数,该入口地址称为函数的指针。我们可以定义一个指针变量,使它的值等于函数的入口地址, 那么通过这个指针变量也可以调用此函数,这个指针变量称为指向函数的指针,简称为函数指针。定义形式如下: 数据类型 (*函数指针名) (形参); 指针函数与指向函数的指针是两个完全不同的概念,前者是函数,后者是指针,但是,指针函数的原型原创 2014-04-14 10:59:18 · 728 阅读 · 0 评论 -
利用函数指针选择合适的被调用函数_契比雪夫多项式
定义一个函数指针后,把一函数名(代表该函数入口地址)赋给函数指针,然后通过函数指针来间接调用该函数。由于一个函数指针可以先后指向不同的函数,因此可以利用这种方式来达到有条件地调用函数的目的。例如: 已知契比雪夫多项式的定义如下所示: x (n=1) 2*x*x-1 (n=2) 4*x*x*x-3*x (n=3) 8*x*x*x*x-8*x*x+1 (n=4) 要原创 2014-04-14 10:59:20 · 846 阅读 · 0 评论 -
函数指针作为函数的参数
指向函数的指针变量 作为函数的形式参数时,可以把相应函数的入口地址作为实参传递给函数。当函数指针所指向的目标不同时,在函数中就可以调用不同的函数,且不需要对函数体作任何修改。 # include int fun(int (*f)(int x), int a, int b)//函数指针(*f)(int x)作为fun函数的形参{ int t; t = (*f)(a) + (*f)(b); /*等同于原创 2014-04-14 10:59:22 · 644 阅读 · 1 评论 -
输入3个数a,b,c,按大小顺序输出_要求用到指针
# includevoid swap(int *, int *);int main(void){ int a, b, c; int *p1, *p2, *p3; printf("Input a, b ,c:"); scanf("%d %d %d", &a, &b, &c); p1 = &a; p2 = &b; p3 = &c; if(a>b) swap(p1, p2); if(a>c) swa原创 2014-04-14 10:59:24 · 3871 阅读 · 0 评论 -
编译预处理习题:用带参数的宏求三个数的最大数
三目运算符竟然还能如此使用。Fuck,亏我想半天!/* 三目运算符 并不局限于:a>b?a:b 可以是 => 表达式1?表达式2:表达式3 */# include #define MAX(a,b,c) a>b?(a>c?a:c):(b>c?b:c)int main(void){ int x = 13,y = 28,z = 69; printf("%d\n", MAX(x, y, z))原创 2014-04-14 10:58:53 · 1145 阅读 · 0 评论 -
全局变量及其作用域-外部变量:extern
全局变量是在函数外部定义的变量, 它不属于哪一个函数,它属于一个源程序文件.其作用域是从变量定义的位置开始,到整个源文件结束. 全局变量可以被作用域内的所有函数直接引用.如果在一个函数中改变了全局变量的值,那么后面的函数引用该变量时,得到的就是被改变后的值. 全局变量编译时,被分配在静态存储区,具有静态生存期,即变量值存在于程序的整个运期间.如果在定义全局变量的时候未进行初始化,则自动地被初始化为原创 2014-04-14 10:58:48 · 2817 阅读 · 1 评论 -
数组-字符串_习题:输入一个英文字符串转换其大小写后输出
# include # include int main(void){ char str[50]; int i; printf("请输入一个英文字符串:"); gets(str); //同 scanf("%s", str); for(i=0; i if(str[i]>='A' && str[i] str[i] = str[i] + 32; else if(str[i]>='a' &&原创 2014-04-14 10:58:03 · 2167 阅读 · 0 评论 -
数组_习题:编写一个4*4矩阵元素对角线之和的程序
# include int main(void){ int a[4][4] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}; int i, j, sum1, sum2;//定义sum1,sum2,分别存放两条对线元素的和; sum1=sum2=0; for(i=0; i { for(j=0; j printf("%-5d", a[i][j]);//原创 2014-04-14 10:58:07 · 38427 阅读 · 0 评论 -
数组_习题:输入一个数按原来的排序规律将它插入数列中
/*程序要求:有一个已排好的数组,现输入一个数,要求按原来的排序规律将它插入数组中;*/# include int main(void){ int a[6] = {9,27,52,69,80}; int i, t; printf("原数列为:"); for(i=0; i printf("%-5d", a[i]); printf("\n请输入任意一个整数:"); scanf("%d", &a[5原创 2014-04-14 10:58:09 · 1602 阅读 · 0 评论 -
数组_习题:从键盘读入五个字符串,按从小到大的排序
/*方法太笨,但是程序好歹实现了要求*/# include # include int main(void){ int i; char a[13], b[13], c[13], d[13], e[13], t[13]; printf("请输入第一个字符串:"); gets(a); printf("请输入第二个字符串:"); gets(b); printf("请输入第三个字符串:"); gets原创 2014-04-14 10:58:23 · 12993 阅读 · 0 评论 -
函数_习题:调用函数求1!+2!+...+n!
double fun(int x) //fun 函数的定义;{ int i, t = 1; for(i=1; i t*=i; return t;}# include int main(void) //main 函数的定义;{ int i, n; double sum =0; printf("计算1!+2!+...+n!,请输入n = "); scanf("%d", &n); for(i=1;原创 2014-04-14 10:58:25 · 12851 阅读 · 0 评论 -
用递归法求1+2+...+n的和
/* 2012年11月2日23时47分 用递归法求1+2+...+n的和!*/# include int sum(int n) //定义sum()函数;{ if(1 == n) return 1; else return n+sum(n-1);}int main(void){ int x; printf("Input a number:"); scanf("%d", &x); printf(原创 2014-04-14 10:58:30 · 4778 阅读 · 0 评论 -
函数_例题:编一函数求1^k+2^k+...n^k的和
/*程序功能:求1^k+2^k+...n^k的和*/# include double power(int m , int k) /*求m的n次方并返回*/{ int i; double pw = 1; for(i=1; i pw*=m; return (pw);}double sum_power(int k , int n) /*求1到n的k次方的和并返回*/{ int i; double su原创 2014-04-14 10:58:35 · 8862 阅读 · 1 评论 -
函数_习题:编写函数求1+(1+3)+(1+3+5)+...(1+3+5...+(2n-1))
# include int sum(int n){ int team, i, j, sum=0; for(i=1; i { team = 0; for(j=1; j { team = team+2*j-1; } sum = sum + team; } return sum;}int main(void){ int n; scanf("%d", &n); printf("原创 2014-04-14 10:58:41 · 4198 阅读 · 0 评论 -
C习题:输出2-1000的所有完数及其真因子
知识了解: 所谓真因子就是一个正整数除了它本身之外的约数;关于完数: 完数就是指一个数的所有真因子的乘积等于该数,如6=1+2+3;(“好数”(也叫好的数):是指一个除了1和它本身其他约数的积=该数本身,如6=2*3); 好数的写法与该程序类似,只需要改变将标记行语句改为t*=j;/* 程序目标: 输出2-1000的所有完数;*/ /* 该程序是求完数 */# include int main(v原创 2014-04-14 10:58:44 · 4906 阅读 · 0 评论 -
函数_习题:编写函数判定一个数是否为素数
# include int main(void){ int fun(int); //函数声明; int n; printf("素数判定,请输入一个整数:"); scanf("%d", &n); if(fun(n)) //函数返回值为1,为素数,否则不是素数; printf("%d是素数\n", n); else printf("%d不是素数\n", n); return原创 2014-04-14 10:58:46 · 5050 阅读 · 0 评论 -
用指向数组的指针作为函数形参_示例【重点】
假定有5个学生,每个学生有4门功课成绩。设计一个程序,查找某学生的成绩,设被查学生的序号为:0、1、2、3、4。要求以指向数组的指针为作函数形参。void search(int(*p)[4], int n); //函数声明;# include void main(void){ int n; int score[5][4] = {{73,86,80,85}, {90,68,72,83}, {80,7原创 2014-04-14 10:59:27 · 1688 阅读 · 0 评论 -
一个让我纠结半天的指针习题
# include void main(void) { int a[] = {1,2,3,4,5,6,7,8,9,10,11,12}; int *p = a+5, *q = NULL; // *q = *(p+5); //原题语句错误,因为q是个空指针,没有指向,而*q却代表所指向内容(即某个地址)的值,明显不对; q = (p+5); //修改后的正确语句,输出结果为:6 11; pri原创 2014-04-14 10:59:33 · 587 阅读 · 0 评论 -
动态内存分配_malloc函数的用法
# include # include void f(int *q, int *t){ *q = 69; *t = 100;}void main(void){ int *p = (int *)malloc(sizeof(int)*2);//分配了sizeof(int)*2个字节(8个字节),两个int型变量所需的存储空间 *p = 13; *(p+1) = 0; printf("%d %d\n"原创 2014-04-14 10:59:36 · 980 阅读 · 0 评论 -
二进制、八进制、十六进制 转为 十进制
一:最快的方法自然是 用计算器,依次:开始>附件>计算器>查看>科学型 就可以打开科学计算器 例1:二进制 101010 转 十进制 方法:点一下二进制,输入101010,点一下十进制 得出结果42 二:笔算,各种进制 先转成十进制 然后转换成其他进制。这个方法可以完成任意进制的转换 ★首先说一下,如何将二进制 转成十进制 一个二进制数,从最后一位开始算,依次列为第0、1、2...n位原创 2014-04-14 10:56:11 · 1034 阅读 · 0 评论 -
getch()功能与用法
getch(): 所在头文件:conio.h 函数用途:从控制台读取一个字符,但不显示在屏幕上 函数原型:int getch(void) 返回值:读取的字符 例如: char ch;或int ch; getch();或ch=getch(); 用getch();会等待你按下任意键,再继续执行下面的语句;(有时程序执行完出现闪退问题,可以用该语句避免) 用ch=getch();会等待原创 2014-04-14 10:57:08 · 62810 阅读 · 4 评论 -
数组_例题:打印杨辉三角形
/*时间: 2012年10月22日13时53分程序功能: 打印出6行的杨辉三角形理解程序: 参照上面数组元素与数字代入i,j即可理解算法!*/# include # define N 6int main(void){ int i, j, a[N][N]; printf("****杨辉三角形****:\n"); for(i=0; i { a[i][i] = 1; //此为1行1列,2行2列,3原创 2014-04-14 10:57:44 · 1438 阅读 · 0 评论 -
数组_例题:输入一行任意字符,求出其中字母、数字及其他字符的个数
/*程序功能:输入一行任意字符,求出其中英文字母、数字及其他字符的个数。*/# include # include int main(void){ char c, str[100]; int i, n1, n2, n3, n4, sum; n1=n2=n3=n4=0; printf("输入一行任意字符:"); gets(str); for(i=0;(c=str[i]); i++) { if(原创 2014-04-14 10:57:53 · 2766 阅读 · 0 评论 -
函数_习题:编写一个函数输出三个数中的最大数
# include int max(int x, int y, int z){ int t; if(x>y) t = x; else t = y; if(z>t) t = z; return t;}int main(void){ int a, b, c, n; printf("Input Three Number:"); scanf("%d %d %d", &a, &b, &c); n =原创 2014-04-14 10:58:32 · 12045 阅读 · 0 评论 -
函数_例题:用递归法求阶乘
# include double fun(int n){ if(n == 1) return 1; else return n*fun(n-1);}int main(void){ int n; printf("求n!,请输入n的值:"); scanf("%d", &n); printf("%d! = %.0lf\n", n, fun(n)); //之前把%d写成%n,半天没检查出错误,真服了原创 2014-04-14 10:58:37 · 1086 阅读 · 0 评论 -
指针_例题:用指针互换两个数
# include void f(int * p, int * q) //p, q接收a, b的地址(&a, &b);{ int t; // t为int型,因为*p, *q表示的是指针变量p, q所指向地址(&a, &b)的变量(a, b)的值; t = *p; //a表示 int *(也就是&a), *a表示int(也就是a); *p = *q; *q = t; return;}void m原创 2014-04-14 10:59:00 · 1881 阅读 · 0 评论 -
指针数组例题分析
# include void main(void){ char *str[4]; char * s; s = "ABCD!"; //s存放的是第一个字母'A'的地址; *str = "Hello!"; /* str表示的是&str[0],*p表示的是str[0]; str[0]本身就是一个int *类型(即指针变量); */ str[1] = "China!"; printf("%s\n",原创 2014-04-14 10:59:04 · 542 阅读 · 0 评论 -
指针应用_写一个函数求字符串的长度
在main函数中输入字符串,并输出其长度。# include # include int main (void){ int length(char *p); char str[13]; printf("Please input a string:"); gets(str); printf("%d\n", length(str));return 0;}int length(char *p){ ret原创 2014-04-14 10:59:31 · 2763 阅读 · 0 评论 -
指针_习题:输入一个字符串,将里面的数字、字母、其他符号筛选出来
输入一个字符串,将里面的数字、字母、其他符号筛选出来!# include # include void main(void){ char *p,str[20], sz[20], zm[20], qt[20]; int i = 0, n, a, b, c; a = b = c = 0; printf("Input string:"); gets(str); p = str; n = strlen(s原创 2014-04-14 10:59:52 · 2519 阅读 · 0 评论 -
Main函数参数argc,argv说明
C/C++语言中的main函数,经常带有参数argc,argv,如下:int main(int argc, char** argv)int main(int argc, char* argv[])这两个参数的作用: argc 是指命令行输入参数的个数(以空白符分隔) argv存储了所有的命令行参数 假如你的程序是hello.exe,如果在命令行运行该程序,(首先应该在命令行下用 cd 命令进入原创 2014-04-14 11:03:13 · 552 阅读 · 0 评论 -
C语言版贪吃蛇游戏
#include #include #include #include #include #include int snake_len=1;//蛇的长度int snake_loc[50][2]={31,12};//整条蛇的位置,最长为50int snake_head[2]={31,12};//蛇头位置,初始值为11,12;int food[2];//食物位置char snake_direc原创 2014-04-14 11:01:42 · 761 阅读 · 0 评论 -
动态内存分配举例_动态一维数组的构造
# include # include void main(void){ int len,i, *p; printf("输入要存放元素的个数:"); scanf("%d", &len); //输入长度构造动态一维数组 p = (int *)malloc(sizeof(int)*5); for(i=0; i scanf("%d",(p+i)); // p+i等同于&p[i]; // 将动态一维数原创 2014-04-14 10:59:38 · 1455 阅读 · 0 评论 -
指针_习题:运用指针设计一个函数_输入一个整数,输出其对应的16进制数
/* 运用指针设计一个程序_输入一个整数,输出其对应的16进制数,要求用到函数 */# include void tran(int *p){ printf("十进制 %d 转化成十六进制为:%#X\n", *p, *p);}int main(void){ int num; printf("请输入一个正整数:"); scanf("%d", &num); tran(&num); return 0;}/原创 2014-04-14 10:59:42 · 1943 阅读 · 0 评论