洗扑克牌(乱数排列)

说明 洗扑克牌的原理其实与乱数排列是相同的,都是将一组数字(例如1~N)打乱重新排列,只不过洗扑克牌多了一个花色判断的动作而已。 解法 初学者通常会直接想到,随机产生1~N的乱数并将之存入阵列中,后来产生的乱数存入阵列前必须先检查阵列中是否已有重复的数字,如果有这个数就不存入,再重新产生下一个数,运气不好的话,重复的次数就会很多,程式的执行速度就很慢了,这不是一个好方法。 以1~52的乱数排列为例好了,可以将阵列先依序由1到52填入,然后使用一个回圈走访阵列,并随机产生1~52的乱数,将产生的乱数当作索引取出阵列值,并与目前阵列走访到的值相交换,如此就不用担心乱数重复...
基础知识 | 2012-04-01 20:13 | 阅读 1736 次 | 评论 1 条

while((scanf("%d", &n))!=EOF)解决超时问题

水仙花数 时间限制:1000 ms | 内存限制:65535 KB 描述 我们知道,如果一个数是水仙花数,当且仅当它的各位数字的三次方的和与这个数相等。如153 = 1 ^ 3 + 5 ^ 3 + 3 ^ 3则153是水仙花数 输入 输入数据有若干组,每组一个三位数N(100<=N<=999) 输出 每组测试数据一行,如果这个数是水仙花数,则输出“Yes”,否则输出“No”. 样例输入 153 125 样例输出 Yes No 摘自:http://www.bianchengla.com/course/24/practise/pro...
C/C++ | 2012-03-19 20:28 | 阅读 8415 次 | 评论 1 条

迭代法求某数的平方根

编写C程序,用迭代法求x=a^(1/2)。求平方根的迭代公式为:Xn+1=1/2(Xn+a/Xn)要求前后两次求出的得差的绝对小于0.00001。给出的答案一般是: #include"stdio.h"#include"math.h"int main() { float x0,x1,a; scanf("%f",&amp;a); x1=a/2; do { x0=x1;x1=(x0+a/x0)/2; }while(fabs(x0-x1)>=0.00001); printf("%.3f\n",x1); r...
基础知识 | 2012-02-28 21:26 | 阅读 1623 次 | 评论 0 条

你能用输出%吗?

如题。这是我同学在实训时候发现的问题(我们用的是VC++6.0)。 #include<stdio.h>int main(){ printf("%\n"); printf("%%\n"); return 1;}只有第二行输出了1个“%”。为什么呢? 格式控制符%%,读%符号。但是为什么不能直接输出%呢?我们姑且把%和\认为是比较特殊的字符。(我的理解不是很有根据,希望大家给点意见)

分解质因数

#include<stdio.h>int main(){ int n,i; printf("please input the number\n"); scanf("%d",&amp;n); printf("%d=",n); for(i=2;i<=n;i++) { while(n!=i) { if(n%i==0) { printf("%d*",i); n=n/i; } ...
基础知识 | 2012-01-28 22:59 | 阅读 1012 次 | 评论 0 条

倒水问题(学校初试第4题)

三个12L、8L、5L的无刻度杯子,12L的已装满水,怎样倒可以倒出2个6L的水 12L的杯子为:a12,8L的杯子为:b8,5L的杯子为:c5.输出每次倒水后,每个杯子中水的容量。 a12 b8 c5 12 0 0 .............. .............. 6 6 0 思路: 1,若b8为空,把a12的水倒满b8或者倒完a12内的水。 2,若c5为空,把b8的水倒满c5或者倒完b8内的水。 3,若c5满,则把c5的水倒入a12中。 4,直到a12,b8的水为6L #include<stdio...

char *p=&quot;Hello world&quot;与char a[]=&quot;Hello world&quot;的区别

char *p="Hello world"; char a[]="Hello world"; "Hello world!\n"字符串字面量(string literal)——C语言源程序中用双引号包含的字符串的正式名称——有两种稍有区别的用法:(1)用作数组初始值(如同char a[] = "Hello world!\n";的声明),它指明数组中字符的初始值。(2)其他情况下,它会转化为一个无名的静态字符数组,可能会存储在只读内存中,这就导致它不能被修改。在表达式环境中,数组通常被立刻转换为一个指针。因此char *p = "Hello world!\n";声明把p初始化成指向无名数...
默认分类 | 2011-11-29 20:52 | 阅读 7026 次 | 评论 1 条

scanf();缓冲区问题及其解决方案。

例1 #include <stdio.h> main() {int i;int b; scanf("%d",&amp;i); getchar(); } 为什么只输入一个数字或字母都会退出? 例2 #include <stdio.h> main() {int i;int b; scanf("%d",&amp;i); scanf("%d",&amp;b); } 为什么输入一个数字不会退出,输入一个字母会退出? 例3 #include <stdio.h> main() {int i;int b; scanf("%d",&amp;i); getch(); } 为什么输入一个数字或者字母都不会退出...
C语言问题 | 2011-10-26 21:50 | 阅读 1392 次 | 评论 0 条

关于Win32

Win32 console Application 默认以main()为程序入口点而Win32 Application 则是WinMain() 参考:http://bbs.bccn.net/viewthread.php?tid=352959&amp;pid=2024112&amp;page=1

const的用法(转帖)

摘自:http://www.newsmth.net/pc/pccon.php?id=10002714&amp;nid=359712 const类型定义:指明变量或对象的值是不能被更新,引入目的是为了取代预编译指令 **************常量必须被初始化*************************cons的作用(1)可以定义const常量 例如:const int Max=100;int Array[Max]; (2)便于进行类型检查 例如:void f(const int i) { .........}编译器就会知道i是一个常量,不允许修改;(3)可以保护被修饰的东西,防止...
C/C++ | 2011-10-18 21:22 | 阅读 1284 次 | 评论 1 条

程序员从初级到中级10个秘诀

PS:本文从网上转载了,具体是什么网站,忘记了。 Justin James曾发表过一篇博文《10 tips for advancing from a beginner to an intermediate developer》,为我们分享如何才能完成程序员从初级到中级的蜕变,现将中文译文转载于此,供大家借鉴。 在一封与TechRepublic会员交流的邮件当中,他提到了面向程序员的博客、文章及杂志分成两类:面向初学者类(“hello world”这种类型的教程)以及面向专家类(MSDN杂志)。这个观点很好,有关程序员如何从初级跃升到中级的信息极少。以下是为了实现这种转变需要你去做...
成长 | 2011-09-15 17:21 | 阅读 1948 次 | 评论 1 条

指针,二级指针

#include<stdio.h>void main(){ int a[5]={2,4,6,8,10},*p,**k; p=a; k=&amp;p; printf("%d",*(p++)); printf("%d\n",**k);}程序输出() A.4B.22C.24D.46 大家思考一下,给出答案。 答案是:C.24 题目出处:http://bbs.bccn.net/viewthread.php?tid=349295&amp;extra=&amp;page=1
C语言问题 | 2011-09-11 09:16 | 阅读 1335 次 | 评论 4 条

小代码里的错误

编写程序,求下面级数前n项中偶数项的和ES。在求和过程中,以第一个绝对值大于9999的项为末项,计算并输出和数ES。(其中^表示幂运算)题目出自:http://bbs.bccn.net/viewthread.php?tid=349405&amp;pid=2005275&amp;page=1#pid20052751!-2!+3!-4!+……+(-1)^(n-1)*n!+ …… #include<stdio.h>void main(){ int OS=0,ES=0,SUM=0,n=1,temp=1;//奇数项和:OS,偶数项和:ES,奇偶数项和:SUM while(temp<...
C语言问题 | 2011-09-07 22:04 | 阅读 1357 次 | 评论 4 条

如何对齐凌乱代码

在编写代码的时候,有时只考虑了程序的算法,而忘记了代码的缩进格式。导致写出的代码非常凌乱。此时可以选择你所需要对齐的代码(个人建议选择一个完成的函数包括函数最后的“}”)。按Alt+F8组合键来对齐代码。 参考于:《Visual C++ 开发实战1200例(第I卷)》——清华大学出版社 第23-24页

scanf(&quot;%d\n&quot;);问题

# include <stdio.h>void main(){ int n; scanf("%d\n",&amp;n); printf("you typed %d\n",n);} 以上的代码要怎么样输入? 原因: \n在scanf格式串中不表示等待换行符,而是读取并放弃连续的空白字符。(事实上,scanf格式串中的任何空白字符都表示读取并放弃空白字符。而且,诸如%d这样的格式也会丢掉前边的空白,因此你通常根本不需要在scanf格式串中加入显式的空白。) 因此,“%d\n”中的\n会让scanf读取到非空白字符串为止,而它可能需要读到下一行才能找到...
C语言问题 | 2011-08-31 16:13 | 阅读 1848 次 | 评论 9 条

VC6.0编译器Select the stop Build command before closing the workspace问题

使用VC6.0编译器,关闭时,出现: You cannot close the workspace while a build is in progress. Select the stop Build command before closing the workspace 解决方案: One advice is to update to the latest service pack (SP6).更新服务包。1. Do not build simultaneously in multiple instances.2. Do not run any other instance ...

for的妙用

从键盘输入一个整数(1~20)则以该数字为矩阵的大小,把1,2,3…n*n 的数字按照顺时针螺旋的形式填入其中。例如:输入数字2,则程序输出:1 24 3输入数字3,则程序输出:1 2 38 9 47 6 5输入数字4, 则程序输出: 1 2 3 412 13 14 511 16 15 610 9 8 7 #include<stdio.h>#define N 21void main(){ int i,j,k,n,sum=1,s; int a[N][N]={0}; printf("Input n (n<=20):"); sc...
C/C++ | 2011-08-26 21:06 | 阅读 928 次 | 评论 2 条

用VC++6.0编译时显示Error spawning cl.exe应该如何解决

实际上这个问题很多情况下是由于路径设置的问题引起的,“CL.exe”是VC使用真正的编译器(编译程序),其路径在“VC根目录\VC98\Bin”下面,你可以到相应的路径下找到这个应用程序。因此问题可以按照以下方法解决:点击VC“TOOLS(工具)”—>“Option(选择)”—>“Directories(目录)”重新设置“Excutable Fils、Include Files、Library Files、Source Files”的路径。很多情况可能就一个盘符的不同(例如你的VC装在C,但是这些路径全部在D),改过来就OK了。 以上答案摘自:http://zhidao.baidu.c...

为已声明指针分配空间问题及malloc(),calloc(),free()函数的原型

#include<stdio.h>#include<malloc.h>void main(){ char *p1; *p1=malloc(sizeof(char));} 错误信息: error C2440: '=' : cannot convert from 'void *' to 'char' 错误原因:这里声明的指针是p,而不舍得*p。 修改: #include<stdio.h>#include<malloc.h>void main(){ char *p1; p1=malloc(sizeof(char));}还是有错误,错误信息如下: e...
C语言问题 | 2011-08-25 22:25 | 阅读 2144 次 | 评论 0 条

指针声时,易错问题及其分析

摘自《你必须知道的495个C语言问题》1.5 问:char *p1,p2;这样声明有声明问题? 答:这样的声明没有任何问题,但是它可能不是你想要的。指针声明中的*号并不是基本类型的一部分,它只是包含被声明标示符的声明符(declarator)的一部分。也就是说,在C语言中,声明的语法和解释并非: 类型 标示符; 而是: 基本类型 生成基本类型的东西; 其中“生成基本类型的东西”——声明符——或者是一个简单标示符,或者是如同*p、a[10]或f()这样的符号,表明被声明的变量是指向基本类型的指针、基本类型的数组或者返回基本类型的函数。(当然,更加复杂的声...
C语言书摘 | 2011-08-25 21:46 | 阅读 794 次 | 评论 0 条
浏览47997次