摘要:在输入的过程中,我们经常用回车来将数据分成不同的部分。那么,我们应该怎么来识别回车呢?这里有一个十分牛B的处理方法:那就是用gets(str)。为什么用gets呢?因为它能够读入回车,像scanf呀,cin呀都是不可以读入回车的。那么怎么来判断gets读入的是不是回车呢?这里有一个牛B的处理方法:那就是用strcmp(str, "")==0;为什么呢是将str和“”来比较呢。因为只有一个回车独占一行的话,这是的str是空的。好了,说了这么多,还是来总结一下吧。while(gets(str), strcmp(str, "")!=0){ ……;}用上面的这个
阅读全文
摘要:由于默认状态在用scanf接受字符串时,会以空格和回车作为结束符。如何让scanf接受空格?那就用scanf("%[^\n]s",str);这个语句吧。^表示非,也就是[]中的东西在起作用,^\n表示,只要是非回车,就全部接收,所以,这个功能还有下面的用法scanf("%[Hoj]s",str);如果input:Hoiabjo那么str中字符,将是Hojo. 也就是说,只接受Hoj三种字符。如果只输入数字,那么可以用[0-9],而不需要[0123456789]但是这种用法不能和while结合起来用,不然就会出现错误了。为什么?我也不知道。View Cod
阅读全文
摘要:View Code #include<iostream>using namespace std;int main(){ freopen("God.txt","w", stdout); for(int i=0; i<10000; i++) { cout<<i<<","; if(i%30==0 && i!=0) cout<<endl<<endl; }}上面的freopen就是用来打表的了。无语呀,到现在才明白。第一个一定是:“文件名.txt”类似的。第二个一
阅读全文
摘要:在求两个数的最大公约数方法中,辗转相除法是比较快的一种方法。也就是著名的欧几里德方法。View Code int Gcd(int a, int b){ return b==0?a:gcd(b, a%b);}View Code #include "iostream"#include "cstdio"#include "cstring"#include "string"#include "algorithm"using namespace std;int Gcd(int a, int b)//殴几里
阅读全文
摘要:将数字字符串转化成整型数据我们将用到两个函数。1. c_str它的作用是将string对象转化成char*,为什么要这样做呢,这就要说起另外一个函数了。2.atoi (它是array to integer的缩写)它的作用是将数字字符串转化成整型数据。但是要注意atoi(const char * s), 这个是它的标准用法,如果是atoi(string s)这个就不行了。具体的用法是。View Code string str="-1234";int num = atoi(str.c_str());string str = "1234";int Num =
阅读全文
摘要:素数这个东西在编程的时候经常用到,下面给出一种快速打出一定量素数的代码。View Code bool NotPrime[40005];long long Prime[40005];void init()//得到素数{ long long i,j,num=0; for(i=2;i<=40000;i++) //注意是从2开始的,直到你想要的范围。 { if(!NotPrime[i]) //如果不是不是素数(也就是说是素数了) { Prime[num++]=i; //将素数i存储在prime数组中。 for(...
阅读全文
摘要:我们知道,char *s="aisdfj"; 是成立的。于是char *s[]={"one", "two", ……}也是成立的。就相当于把char *s看成另外一种类型的变量一样。其实,就这么简单。Sample Inputone + two =three four + five six =zero seven + eight nine =zero + zero =Sample Output39096View Code #include "stdio.h"#include "string.h"ch
阅读全文
摘要:问题:求矩阵相乘后的和。一、最基本的算法下面给出一个例子来说明一下矩阵是如何相乘的。矩阵A为 1 0 2 3 5 6矩阵B为 3 1 2 2 1 3C=A*B = 1*3+0*2+2*1 1*1+0*2+2*3 3*3+5*2+6*1 3*1+5*2+6*3最简单的算法就是用3个for循环就可以搞定了。假设A有ArowNum行, AvolBrow列。B必有AvolBrow行,假设B有BvolNum列。则循环如下: for(int i=0; i<ArowNum; i++) for(int j=0; j<BvolNum; j++) ...
阅读全文
摘要:今天做了一个题目,感觉字符数组的初始化有点奇怪,就亲自测试了一下,果不其然。确实很奇怪。这个就要和数组区分开了。一定不能将两者混淆了。下面给出测试的代码,并一一解析。View Code #include "iostream"#include "string"#include "cstring"using namespace std;#define size 10int main(){ char s1[size]="1", s2[size]={0}; for(int i=0; i<10; i++) cout&l
阅读全文
摘要:DescriptionYou have just moved from Waterloo to a big city. The people here speak an incomprehensible dialect of a foreign language. Fortunately, you have a dictionary to help you understand them.InputInput consists of up to 100,000 dictionary entries, followed by a blank line, followed by a message
阅读全文
摘要:1.题目:判断断一个由a-z这26个字符组成的字符串中哪个字符出现的次数最多。#include<stdio.h>#include "string.h"int main(){ int n, Case[26], j, max; char str[1001]; scanf("%d", &n); for(int i=0; i<n; i++) { scanf("%s", str); memset(Case, 0, sizeof(Case)); for(j=0; j<strlen(str); j++) Case[s
阅读全文
摘要:1.自定义数字从大到小的排序函数 int cmp(const void *a, const void *b) //qsort的自定义函数 { return *(int *)b - *(int *)a; } qsort(arry, N, sizeof(arry[0]), cmp); //qsort的具体调用 (1).qsort函数的具体调用形式如下: qsort(开始比较的数组地址,比较的宽度,数组的类型,比较的函数) 注意:qsort不支持3个参数,更别说两个了,四个参数一个也不能少 为何将“开始比较的数组地址”和“比较的宽度”强调?且看下面。 (2).q...
阅读全文