
C语言
绝地反击T
世界那么大,我想去看看。
展开
-
结合递归实现二分查找
#include//结合递归实现二分查找 int fun(int k[],int a,int b,int key){ int m; if(a>b) { return -1; } else { m=(a+b)/2; if(key==k[m]) { return m; } else if(key>k[m]) { return fun(k,m+原创 2015-05-21 09:29:35 · 1268 阅读 · 0 评论 -
n个实数(仅包含正实数和负实数)组成的数组A进行重新排序, //使得其中的所有的负实数都要在正实数之前
#include#include//对n个实数(仅包含正实数和负实数)组成的数组A进行重新排序,//使得其中的所有的负实数都要在正实数之前 int main(){ //初始化8个元素的数组 int a[]={-2,1,-3,3,4,-9,-8,2}; //i从最前面开始,j从最后面开始 int i=0,j=7; // while(i<j) { while(a[i]<原创 2015-05-04 18:00:10 · 3800 阅读 · 0 评论 -
判断闰年还是非闰年
1、能被4除尽不能被100除尽,2、能被400除尽。#include//int fun(int n){ if((n%4==0&&n%100!=0)||(n%400==0)) { return 1; } else { return 0; }}int main(){ int n; while(scanf("%d",&n)!=EOF) { if(f原创 2015-04-09 20:41:52 · 1094 阅读 · 0 评论 -
蓝桥杯:求一个5位数的最大循环素数
1193是个素数,对它循环移位后发现:1931,9311,3119也都是素数,这样特征的数叫:循环素数。你能找出具有这样特征的5位数的循环素数吗?当然,这样的数字可能有很多,请写出其中最大的一个。注意:答案是个5位数,不要填写任何多余的内容。#include#include//判断是否是素数int isPrime(int n){ int flag=1; for(原创 2015-04-09 12:17:19 · 5091 阅读 · 0 评论 -
已知直角三角形的斜边是某个整数,求满足这个条件的不同直角三角形的个数。
勾股定理,西方称为毕达哥拉斯定理,它所对应的三角形现在称为:直角三角形。 已知直角三角形的斜边是某个整数,并且要求另外两条边也必须是整数。 求满足这个条件的不同直角三角形的个数。【数据格式】输入一个整数 n (0要求输出一个整数,表示满足条件的直角三角形个数。例如,输入:5程序应该输出:1再例如,输入:100程序应该输出:原创 2015-04-09 10:29:54 · 5533 阅读 · 3 评论 -
利用头文件<string.h>求输入的字符串是否是回文字符串
#include#include//求字符串长度的头文件 #define MAX 100int func(char s[]){ int flag=1; int i,j,slen=strlen(s);//求出字符串长度 for(i=0,j=slen-1;i<j;i++,j--) { if(s[i]!=s[j])//前后对比字符 { flag=0;原创 2015-04-08 15:36:39 · 778 阅读 · 0 评论 -
求一个正整数的各位数字之和
/* 此为方法一!!!!!!#includeint main(){ int n,sum=0; printf("请输入一个正整数n:"); scanf("%d",&n); while(n) { sum=sum+n%10; n=n/10; } printf("n的各位数字之和为:%d\n",sum); } *///此为方法二!!!!!!!!原创 2015-04-08 15:27:30 · 20441 阅读 · 1 评论 -
输入一个整数矩阵,计算位于矩阵边缘的元素之和
输入一个整数矩阵,计算位于矩阵边缘的元素之和.所谓矩阵边缘的元素,就是第一行和最后一行的元素以及第一列和最后一列的元素。源代码:#include#includeint main(){ int m,n;//矩阵的长和宽 int sum = 0; printf("输入矩阵的长和宽\n"); scanf("%d%d",&m,&n); int a[m][n];//存储矩阵的值原创 2015-04-07 16:24:10 · 11346 阅读 · 5 评论 -
递归与while循环实现求n!
#include#include//递归实现 int diGui(int n){ if(n<=0) { return 1; } else { return n*diGui(n-1); }} int diGui2(int n){ return n>0?n*diGui(n-1):1;}//非递归,while循环实现 int While(int n){ i原创 2015-04-07 15:10:24 · 3487 阅读 · 0 评论 -
while、do-while、for、goto、递归五种方式求一个整数的位数
#include#include//whileint While(int n){ int wei = 0; while(n) { n/=10; wei++; } return wei; }//do-whileint doWhile(int n){ int wei = 0; do { n/=10; wei++; }while(n); return原创 2015-04-06 14:14:12 · 1535 阅读 · 0 评论 -
求n以内的所有素数并输出
#include#include#include//求n以内的所有素数 int prime(int n)//调用此方法的数n一定大于了2。所以要输出2这个特殊的素数 { int i; int flag = 1; for(i=2;i<=(int)sqrt(n);i++) { if(n%i==0) { flag = 0; break; } } retur原创 2015-04-05 16:00:20 · 9216 阅读 · 0 评论 -
数字逆转的几种方式,(略有区别)
第一种方式:int main(){ int n; int res = 0; scanf("%d",&n); while(n) { res = res*10+n%10; n/=10; } printf("逆转后的数字是%d\n",res); return 0;} 第二种方式:int main(){ int n; int res = 0; scanf原创 2015-04-05 15:13:15 · 3184 阅读 · 0 评论 -
两种方式求1--100以内所有相邻奇偶数之积的和
分析:求100以内所有相邻奇偶数之积的和1 2 3 4 5 6 7 8 9 10 11 ...100即如下: 1*2+3*4+5*6+... 方法一: (2*1-1) 2*1 + (2*2-1) 2*2 +(2*3-1) 2*3 得出结论:(2n-1)*2n(循环50次)方法二:原创 2015-04-05 12:18:50 · 5025 阅读 · 0 评论 -
腾讯面试题:走到50台阶的可能数(台阶可以一次走一阶或者二阶),三种方式实现
//腾讯面试题,有50个台阶,一次走一步或者两步,有多少种可能 //走到50阶的可能是走到49阶的可能加上走上走到48的可能 //分析/* 台阶数 可能数 1 1 直接走一个台阶就ok 2 2 走1 1或者直接走2个台阶 3 3原创 2015-04-04 11:36:25 · 3911 阅读 · 0 评论 -
do-while循环小记
#include#include#includeint main0() { char ch1 = getchar(); char ch2 = getchar();//getchar会把回车符当做一个字符 printf("[%c][%c]\n",ch1,ch2);}int main4(){ char ch;//定义一个字符 do { ch = getchar();原创 2015-04-03 10:12:54 · 1047 阅读 · 0 评论 -
哥德巴赫猜想
世界三大数学猜想编辑即费马猜想、四色猜想和哥德巴赫猜想。费马猜想的证明于1994年由英国数学家安德鲁·怀尔斯(Andrew Wiles)完成,遂称费马大定理;四色猜想的证明于1976年由美国数学家阿佩尔(Kenneth Appel)与哈肯(Wolfgang Haken)借助计算机完成,遂称四色定理;哥德巴赫猜想尚未解决,目前最好的成果(陈氏定理)乃于1966年由中国数学家陈景润取得。这三个原创 2015-04-03 09:26:35 · 1559 阅读 · 0 评论 -
C语言函数编程:二维数组打印平面图形-->死
// 二维数组打印平面图形:死 //在命令行里面输入:color 3y#include#include//定义字符数组打印 死 字 char si[10][15] = { {'$','$','$','$','$','$','$','$','$','$','$','$','$','$','$'}, {' ',' ',' ','$',' ',' ','$','$',' ',' '原创 2015-04-02 20:45:26 · 2895 阅读 · 0 评论 -
双for、单for初始化二维数组
#include#include#define N 4//void fun2(){ printf("二维数组方式【双重for循环】初始化二维数组\n"); int a[N][N]; for(int i=0;i<N;i++) { for(int j=0;j<N;j++) { a[i][j] = i*N+原创 2015-04-02 10:58:36 · 1549 阅读 · 0 评论 -
用3个for和2个for位三位数组赋值
#include#include//三维数组在内存里面也是线性排列void fun3(int a[5][4][3]){ //三个for循环赋值 int num = 0; for(int i=0;i<5;i++) { for(int j=0;j<4;j++) { for(int k=0;k<3;k++) { a[i][j][k]=++num; p原创 2015-04-02 10:36:59 · 1112 阅读 · 0 评论 -
二维数组转置小记
#include#includeint main(){ int a[3][4]={1,2,3,4,5,6,7,8,0,1,2,3}; for(int i=0;i<3;i++) { for(int j=0;j<4;j++) { printf("%-5d",a[i][j]); }原创 2015-04-02 10:10:54 · 585 阅读 · 0 评论 -
生成一个n*n的方阵,然后输出此方阵对角线上元素之和
//输入一个正整数n(1//公式为a[i][j]=i*n+j+1 (0=源代码:#include#include#define N 10//输入一个正整数n(1<n<10),根据以下公式生成一个n*n的方阵,然后输出此方阵对角线上元素之和//公式为a[i][j]=i*n+j+1 (0=<i<n,0=<j<n)int main(){ int a[N][N]={0};原创 2015-04-02 10:01:59 · 18575 阅读 · 0 评论 -
最标准的杨辉三角和一般的杨辉三角
1、最标准的杨辉三角/*编写程序打印杨辉三角形 1 变形 1 0 0 0 1 1 1 1 0 01 2 1 1 2 1 0 。。。。。。 1 3 3 1 思路: 我们定义一个二维数组,所有元素先初始化为0 给数组的第1列和对角线元素赋值为1 其余元素a[i][j]=a[i-1][j-原创 2015-03-30 11:35:35 · 1160 阅读 · 0 评论 -
变量初始化问题以及char的最值问题
变量如果不初始化,可以编译成功,但是执行的时候,很可能报错每当一个应用程序打开时,操作系统为其分配内存,变量有内存地址和内存单元,当应用程序初始化运行时,就会往内存单元里面写数据,当操作系统回收的时候,并不清空内存单元,所以存在大量的垃圾数据。如果变量不初始化,就会默认读取垃圾数据,有些垃圾数据就导致程序崩溃数据类型的极限 #include代表所有数据类型的极限值原创 2015-03-30 11:07:15 · 971 阅读 · 0 评论 -
一维数组、二维数组用数学公式初始化以及二维数组的行坐标可省
#include#include//二维数组赋值void show2(){ int a[3][4]; int k=0; for(int i=0;i<3;i++) { for(int j=0;j<4;j++) { a[i][j]=i*4+(j+1);//数学公式 赋值 // a[i原创 2015-03-29 16:32:09 · 2903 阅读 · 0 评论 -
goto语句的简单使用
#include#include//system的头文件 #include//Sleep的头文件 int main(){ A:printf("\nGO GO GO"); Sleep(500);//休眠0.5秒 goto A; return 0; }原创 2015-03-29 16:11:25 · 1546 阅读 · 0 评论 -
C语言--数组首地址问题小记
#include#includeint main(){ int a[5]={1,2,3,4,5}; //以十六进制打印数组的首地址 这里a与&a,&a[0]一样的结果 printf("%x\n",a); printf("%x\n",&a); printf("%x\n",&a[0]); //以十进制打印数组的首地址 printf("%d\n",a); //输出第一个原创 2015-03-29 16:00:02 · 1393 阅读 · 0 评论 -
编程实现求1!+2!+…+10!(完全递归,while辅助递归,双for三种方式)
#include//递归实现:原理是f(n)=f(n-1)+n!=f(n-1)+n*(n-1)!=f(n-1)+n*(f(n-1)-f(n-2)) (最终把!去掉转换成函数fun(n...)) int fun(int n) { if(n<=0) { return 0 ; } else if(n==1)//n==1,2是递归的出口 { return 1;原创 2015-03-28 11:12:52 · 6536 阅读 · 0 评论 -
利用标志flag,设计一个函数,检测一个数是否为质数(素数)
#include#include//设计一个函数,检测一个数是否为质数(素数) //只能被1和自身整除的数才是质数 int zhishu(int data){ if(data<=1)//小于等于1都不是素数 { return 0; } else if(data==2 || data==3)//这2个可以直接判断是质数 { return 1; } else {原创 2015-03-27 17:52:43 · 3873 阅读 · 1 评论 -
利用continue关键字打印300以内不能被3整除的正整数
#include#includeint main(){ int sum = 0; for(int i=0;i<=300;i++) { if(i%3==0) { //能被3整除 什么也不做 continue;//提前结束 ,下面的代码就无需执行判断 } printf("%d\t",i); sum=sum+i; } printf("sum=%d\n原创 2015-03-27 17:34:32 · 1386 阅读 · 0 评论 -
C语言编程:变换命令行的颜色color
#include#include#include//Sleep()在这个里面 //在命令行下面输入一下命令 //color 3d 只是临时的//color 3r 这个会有提示信息(没有这个值对应的颜色) //color 3fint main(){ char str[20];//定义字符串存储颜色指令 char str2[40];//定义字符串存储标题 int i;//原创 2015-03-27 17:19:31 · 20739 阅读 · 1 评论 -
C语言和java实现且面条(均用递归实现)
/* 一根高筋拉面,中间切一刀,可以得到2根面条。 如果先对折1次,中间切一刀,可以得到3根面条。 如果连续对折2次,中间切一刀,可以得到5根面条。 那么,连续对折10次,中间切一刀,会得到多少面条呢? -------------------------------------------对折0次,得到2根:1*2 = 2对折1次,得到2 * 2 - 1 = 3原创 2015-03-27 16:51:30 · 1027 阅读 · 0 评论 -
求13x+12y=100;x+45=90的解,找到一个满足的解就行(break跳出循环)
#include#include//break语句不能用在循环语句和switch语句之外的语句int main(){ //x>0,y>0 ,求:x,y 且是整数 //13x+12y=100:即13i+12j=100,即12j=100-13i for(int i=0;i<100;i++) { printf("%d\n",i); if((100-13*i)%12==0 &&原创 2015-03-27 11:27:27 · 1019 阅读 · 0 评论 -
随机数初始化数组然后用选择法(三种,细微的区别)对数组进行排序
#include#include#include//时间头文件 int main(){ time_t ts;//设置时间变量 unsigned int randdata = time(&ts);//获取时间,转换为无符号int srand(randdata);//设置随机数种子 int a[10]; //用随机数初始化数组 for(int i=0;i<10;i++) {原创 2015-03-27 11:11:33 · 1823 阅读 · 0 评论 -
c语言编程:实现数字的翻转
方法一:(易理解的)#include#includeint main(){ int n; scanf("%d",&n);//输入要翻转的数字 int result = 0;//保存翻转后的结果 while(1)//while(true)也可以 { int i = n%10;//每次都是得到最低位上的数字 result = result*10+i; n = n/原创 2015-03-26 21:24:48 · 31686 阅读 · 2 评论 -
数据分离技术之输出水仙花数
#include#includeint main(){ for(int i=100;i<1000;i++) { int ge=i%10;//取出各位 int shi=i/10%10;//取出十位 int bai=i/100;//i/100%10一样的结果 :取出百位 if(ge*ge*ge+shi*shi*shi+bai*bai*bai == i) {原创 2015-03-26 11:07:11 · 730 阅读 · 0 评论 -
递归实现十进制转二进制
#include#include//输入一个十进制,自己写一个函数转换为二进制//10进制转2进制:方法是除以2取余,逆序排列 //如果想转换为 8进制,则把代码中的2改为8就OK //下面这个是递归!!! void change2(int num)//如果输入num为10 { if(num==0) { return ; } else { /* 不能这样写原创 2015-03-26 10:39:23 · 19029 阅读 · 4 评论 -
用两种while循环求2的n次方,n是传入的值。
#include//求2的n次方,n是传入的值 int main(){ int n;//需要输入的n的值 int sum = 1;//保存和 scanf("%d",&n); printf("2^%d次方是=",n); //方法一 while(n) { sum = sum*2; n--; } //方法二 while(1) { sum*=2; n--;原创 2015-03-26 09:52:05 · 8557 阅读 · 2 评论 -
递归和for循环实现1+2+3+...+100
#include//递归实现1+2+。。。+100int addNum(int n){ if(n==0) { return 0; } return addNum(n-1)+n; } int main(){ int sum = addNum(100); printf("sum=%d\n",sum); return 0; }原创 2015-03-24 17:35:15 · 11253 阅读 · 0 评论 -
对角线之格式输出曲线:printf("%*d\n",i,i),星号的作用
#includeint main(){ for(int i=1;i<10;i++) { printf("%*d\n",i,i);//第一个i控制字符的间隔 } for(int i=1;i<10;i++) { printf("%*d\n",10-i,i);//10-i控制字符的间隔 } return 0; } 结果显示:printf("#原创 2015-03-24 17:19:24 · 3073 阅读 · 0 评论 -
switch的用法(用到头文件Windows中的MessageBoxA和ShellExecuteA)
#include#include#includeint main(){char ch = getchar();switch(ch){case 'a': //内容 标题 MessageBoxA(0,"你是一直好鸟吗?","好鸟",0);//0确定break;case 'b':MessageBoxA(0,原创 2015-03-24 16:19:50 · 2884 阅读 · 0 评论