100道题,代码菜鸟教程里都有,只是记录一些输出和自己的理解(又是等成绩焦虑到要死的一天)
代码菜鸟里都有,只是记录一些输出和自己的理解
判断输入的值在那个范围中
- <10w return i*0.1
- 10w<i<20w return 10w*0.1+(i-10w)*0.075
- …
需要思考数学方面
1、则:x + 100 = n2, x + 100 + 168 = m2
2、计算等式:m2 - n2 = (m + n)(m - n) = 168
3、设置: m + n = i,m - n = j,i * j =168,i 和 j 至少一个是偶数
4、可得: m = (i + j) / 2, n = (i - j) / 2,i 和 j 要么都是偶数,要么都是奇数。
5、从 3 和 4 推导可知道,i 与 j 均是大于等于 2 的偶数。
6、由于 i * j = 168, j>=2,则 1 < i < 168 / 2 + 1。
7、接下来将 i 的所有数字循环计算即可。
类似分类讨论
图形设计
九九乘法表
一个乱码期盼
计算题,兔子,规律
- 1
- 1
- 1+1//老的+新生
- 2+1//
- 3+2
- 5+3
- 8+5
- 13+8
- …
- 大于2之后为 上一轮的和+上上轮的和
- f1=f1+f2
- f2=f1+f2
素数 两个for
for (i=101; i<=200; i++) {for (j=2; j<i; j++) {// 如果 j 能被 i 整除再跳出循环if (i%j==0) break;}// 判断循环是否提前跳出,如果 j<i 说明在 2~j 之间,i 有可整除的数/*优化,减少循环次数*/if (j>=i) {count++;printf("%d ",i);// 换行,用 count 计数,每五个数换行if (count % 5 == 0) printf("\n");}}
水仙花,笔试做过
int main() {int i,x,y,z;for(i=100;i<1000;i++){x=i%10;y=i/10%10;z=i/100%10;if(i==(x*x*x+y*y*y+z*z*z))printf("%d\n",i);}return 0; }
一个数分解成质数的和
分段
最大公约数和最大公倍数
(1)最小公倍数=输入的两个数之积除于它们的最大公约数,关键是求出最大公约数;
(2)求最大公约数用辗转相除法(又名欧几里德算法)
1)证明:设c是a和b的最大公约数,记为c=gcd(a,b),a>=b,
令r=a mod b
设a=kc,b=jc,则k,j互素,否则c不是最大公约数
据上,r=a-mb=kc-mjc=(k-mj)c
可知r也是c的倍数,且k-mj与j互素,否则与前述k,j互素矛盾,
由此可知,b与r的最大公约数也是c,即gcd(a,b)=gcd(b,a mod b),得证。
2)算法描述:
第一步:a ÷ b,令r为所得余数(0≤r 第二步:互换:置 a←b,b←r,并返回第一步。
while((c=getchar())!='\n'){if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))letters++;else if(c>='0'&&c<='9')digits++;else if(c==' ')spaces++;elseothers++;}
t=a;while(n>0){s+=t;a=a*10;t+=a;n--;}
因子之和 //第14题
s=0;h=100; {s=h/2; h=h-s}
猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个
第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下
的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少- 倒推,从第十天1
- day9 day10=day9/2-1 day9=(day10+1)*2
- day8 = (day9+1)*2
- …d1=(d2+1)*2
- d2=d1
emmm
分成上下两个三角空白 然后for循环
分母为二,分子为一
- a=a+i/j
- temp=分母
- 分子i=分子i+分母j
- 分母j=temp
m=m*a//a是a! m=a!
sum+=m
递归 sum=j*fact(j-1)
void palin(n) int n; {char next;if(n<=1) {next=getchar();printf("相反顺序输出结果\40:\40");putchar(next);} else {next=getchar();palin(n-1);putchar(next);} }
分析题目,用递推
a=x/10000; /*分解出万位*/b=x%10000/1000; /*分解出千位*/c=x%1000/100; /*分解出百位*/d=x%100/10; /*分解出十位*/e=x%10; /*分解出个位*/
用上面的,然后ae&&bd
switch case
// 删除字符串中指定字母函数 char* deleteCharacters(char * str, char * charSet) {int hash [256];if(NULL == charSet)return str;for(int i = 0; i < 256; i++)hash[i] = 0;for(int i = 0; i < strlen(charSet); i++)hash[charSet[i]] = 1;int currentIndex = 0;for(int i = 0; i < strlen(str); i++){if(!hash[str[i]])str[currentIndex++] = str[i];}str[currentIndex] = '\0';return str; }
判断质素
int prime[MAX];int isPrimeNaive(int n) {if(n <= 1)return 0;for(int i = 2; i < n; i++)if(n % i == 0)return 0;return 1; }int isPrime(int n) {if(n<= 1)return 0;if(n == 2)return 1;if(n%2 == 0)return 0;int limit = (int)sqrt((double)n);for(int i = 3; i <= limit; i=i+2){if(n % i == 0)return 0;}return 1; }void sieve() {prime[0] = 0;prime[1] = 0;for(int i = 2; i < MAX; i++)prime[i] = 1;int limit = (int)sqrt((double)MAX);for(int i = 2; i <= limit; i++){if(prime[i])for(int j = i*i; j <= MAX; j+=i)prime[j] = 0;} }int isPrimeSieve(int n) {if(prime[n])return 1;elsereturn 0; }
一个简单的调用
类似于数据结构中的转换
void reverse(char* s) {// 获取字符串长度int len = 0;char* p = s;while (*p != 0){len++;p++;}// 交换 ...int i = 0;char c;while (i <= len / 2 - 1){c = *(s + i);*(s + i) = *(s + len - 1 - i);*(s + len - 1 - i) = c;i++;} }
100内素数
int i,j,k,n=0;for(i=2;i<=100;i++){k=(int)sqrt(i);//降低时间,也可以不要,就j<100sqrt平方根for(j=2;j<=k;j++)if(i%j==0) break;if(j>k){printf("%d ",i);n++;if(n%5==0)//一行5个printf("\n");}}
排序
int i,j,a[N][N],sum=0;printf("请输入矩阵(3*3):\n");for(i=0;i<N;i++)for(j=0;j<N;j++)scanf("%d",&a[i][j]);//输入for(i=0;i<N;i++)sum+=a[i][i];//对角线元素printf("对角线之和为:%d\n",sum);return 0;
插入
逆序输出,先排序,再交换,或者直接从大到小
static的用法会存储上一次的数据
局部变量:
局部变量就是在函数内定义的变量,普通的局部变量,生存周期是随着函数的结束而结束,每次函数重新执行,局部变量都是新的值,不会保留上次的值。当用static修饰后,局部变量的生存周期就是当程序结束才会结束。再次调用函数时,用static修饰的变量会保留上一次的值。
应用:在函数内,我们想保留某些变量上一次的值,就可以用static去修饰该变量。比如:想统计该函数被执行的次数时,就可以定义被static修饰的int型变量,每执行一次该变量就++。
总结:用static修饰的局部变量,改变了生存周期,但是没有改变其作用域。改变其生存周期的原因是被static修饰的局部变量被存放在.bss段或者.data段,而普通的局部变量是存放在栈上的。全局变量:
全局变量用static修饰改变了作用域,没有改变生存周期。普通的全局变量是可以被其他的.c文件引用的,一旦被static修饰,就只能被定义该全局变量的.c文件引用,使得该全局变量的作用范围减小。
作用:当一个全局变量不想被其他.c文件引用时,可以用static修饰,这样其他的文件就不能通过extern的方式去访问,这样主要是为了数据安全。
总结:改变其作用域,没有改变生存周期。函数:
函数用static修饰,改变了作用域。普通的函数是可以通过头文件声名的方式被其他文件调用,被static修饰后就只能在本文件里被调用,这样是为了数据的安全。
作用:有些函数并不想对外提供,只需要在本文件里调用,这时候就可以用static去修饰。
总结:改变了作用域,没有改变其生存周期。
auto定义:初始值不变
#include <stdio.h>
int main()
{int i,num;num=2;for(i=0;i<3;i++){printf("num 变量为 %d \n",num);num++;{auto int num=1;printf("内置模块 num 变量为 %d \n",num);num++;}}return 0;
}
num 变量为 2
内置模块 num 变量为 1
num 变量为 3
内置模块 num 变量为 1
num 变量为 4
内置模块 num 变量为 1
static 会记录上一次的值,
调用外部函数
register定义变量时间会短,register用来声明变量,然后声明出来的变量是直接放在cpu的寄存器当中,而非就是通过内存寻址访问,这样效率更高。register受限于cpu寄存器的大小
宏定义
#ifdef MAXprintf("更大的数字是 %d\n",MAXIMUM(a,b)); #elseprintf("更小的数字是 %d\n",MINIMUM(a,b)); #endif
头文件
&与
|或
^异或
右移,箭头方向
~按位取反
graphics.h里的方法 circle画⚪
line 画线
rectangle(x0,y0,x1,y1);//方
杨辉三角
for(i=0;i<10;i++) {a[i][0]=1;a[i][i]=1;}for(i=2;i<10;i++)for(j=1;j<i;j++)a[i][j]=a[i-1][j-1]+a[i-1][j];for(i=0;i<10;i++) {for(j=0;j<=i;j++)printf("%5d",a[i][j]);printf("\n");}
putpixel(i,j,1);//画点
ellipse(250,250,0,360,top,bottom);//椭圆
#include "graphics.h" #include "math.h" #include "dos.h" #include "conio.h" #include "stdlib.h" #include "stdio.h" #include "stdarg.h" #define MAXPTS 15 #define PI 3.1415926 struct PTS {int x,y; }; double AspectRatio=0.85; void LineToDemo(void) {struct viewporttype vp;struct PTS points[MAXPTS];int i, j, h, w, xcenter, ycenter;int radius, angle, step;double rads;printf(" MoveTo / LineTo Demonstration" );getviewsettings( &vp );h = vp.bottom - vp.top;w = vp.right - vp.left;xcenter = w / 2; /* Determine the center of circle */ycenter = h / 2;radius = (h - 30) / (AspectRatio * 2);step = 360 / MAXPTS; /* Determine # of increments */angle = 0; /* Begin at zero degrees */for( i=0 ; i<MAXPTS ; ++i ){ /* Determine circle intercepts */rads = (double)angle * PI / 180.0; /* Convert angle to radians */points[i].x = xcenter + (int)( cos(rads) * radius );points[i].y = ycenter - (int)( sin(rads) * radius * AspectRatio );angle += step; /* Move to next increment */}circle( xcenter, ycenter, radius ); /* Draw bounding circle */for( i=0 ; i<MAXPTS ; ++i ){ /* Draw the cords to the circle */for( j=i ; j<MAXPTS ; ++j ){ /* For each remaining intersect */moveto(points[i].x, points[i].y); /* Move to beginning of cord */lineto(points[j].x, points[j].y); /* Draw the cord */}} } int main() {int driver,mode;driver=CGA;mode=CGAC0;initgraph(&driver,&mode,"");setcolor(3);setbkcolor(GREEN);LineToDemo(); }
判断+swap
查找最大并记录位置+swap
换位置
/*笔试常考*/ #include <stdio.h> void main() {int num[50],n,*p,j,loop,i,m,k;printf("请输入这一圈人的数量:\n");scanf("%d",&n);p=num;//开始给这些人编号for (j=0;j<n;j++){*(p+j)=j+1;}i=0;//i用于计数,即让指针后移m=0;//m记录退出圈子的人数k=0;//k报数1,2,3while(m<n-1)//当退出的人数不大于总人数时,即留下的人数至少是一个人//这句不能写成m<n,因为假设有8人,当退出了6人时,此时还是进行人数退出,即m++,//这时是7<8,剩下的一个人自己喊1,2,3那么他也就退出了,将不会有输出{if (*(p+i)!=0)//如果这个人的头上编号不是0就开始报数加1,这里采用的方法是报数为3的人头上编号重置为0{k++;}if (k==3){ k=0; //报数清零,即下一个人从1开始报数*(p+i)=0;//将报数为3的人编号重置为0m++; //退出人数加1}i++; //指针后移if (i==n)//这句很关键,如果到了队尾,就要使指针重新指向对头//并且它只能放在i++后面,因为只有i++了才有可能i==n{i=0;}}printf("现在剩下的人是:");for (loop=0;loop<n;loop++){if (num[loop]!=0){printf("%2d号\n",num[loop]);}}}
字符长度的方法
int length(char *s) { int i=0;while(*s!='\0'){ i++; s++; } return i; }
两个方法
/*创建列表*/ #include<stdio.h> #include<stdlib.h> #include<malloc.h> typedef struct LNode{int data;struct LNode *next; }LNode,*LinkList;LinkList CreateList(int n); void print(LinkList h); int main() {LinkList Head=NULL;int n;scanf("%d",&n);Head=CreateList(n);printf("刚刚建立的各个链表元素的值为:\n");print(Head);printf("\n\n");system("pause");return 0; } LinkList CreateList(int n) {LinkList L,p,q;int i;L=(LNode*)malloc(sizeof(LNode));if(!L)return 0;L->next=NULL;q=L;for(i=1;i<=n;i++){p=(LinkList)malloc(sizeof(LNode));printf("请输入第%d个元素的值:",i);scanf("%d",&(p->data));p->next=NULL;q->next=p;q=p;}return L; } void print(LinkList h) {LinkList p=h->next;while(p!=NULL){printf("%d ",p->data);p=p->next;} }
反向输出一个链表
链接两个链表
#include <stdlib.h> #include <stdio.h> struct list {int data;struct list *next; }; typedef struct list node; typedef node *link; link delete_node(link pointer,link tmp) {if (tmp==NULL) /*delete first node*/return pointer->next;else{if(tmp->next->next==NULL)/*delete last node*/tmp->next=NULL;else /*delete the other node*/tmp->next=tmp->next->next;return pointer;} } void selection_sort(link pointer,int num) {link tmp,btmp;int i,min;for(i=0;i<num;i++){tmp=pointer;min=tmp->data;btmp=NULL;while(tmp->next){if(min>tmp->next->data){min=tmp->next->data;btmp=tmp;}tmp=tmp->next;}printf("\40: %d\n",min);pointer=delete_node(pointer,btmp);} } link create_list(int array[],int num) {link tmp1,tmp2,pointer;int i;pointer=(link)malloc(sizeof(node));pointer->data=array[0];tmp1=pointer;for(i=1;i<num;i++){tmp2=(link)malloc(sizeof(node));tmp2->next=NULL;tmp2->data=array[i];tmp1->next=tmp2;tmp1=tmp1->next;}return pointer; } link concatenate(link pointer1,link pointer2) {link tmp;tmp=pointer1;while(tmp->next)tmp=tmp->next;tmp->next=pointer2;return pointer1; } int main(void) {int arr1[]={3,12,8,9,11};link ptr;ptr=create_list(arr1,5);selection_sort(ptr,5); }emmm
是一个判断奇数偶数数
奇数for (a ;a>1;a-2)sum=double 1/a
偶数for (a ;a>0;a-2)sum=double 1/a
?
找年龄最大,比较指针中存储的数据大小 m=p->age;
字符串排序 头文件里有方法 if(strcmp(str1,str2)>0)swap(str1,str2);
海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子平均分为五份,多了一个,这只 猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了 一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的, 问海滩上原来最少有多少个桃子?
#include<stdio.h>
#include<stdlib.h>
int main()
{int x,i=0,j=1;while(i<5){x=4*j;for(i=0;i<5;i++){if(x%4!=0){break;}x=(x/4)*5+1;}j++;}printf("%d\n",x);return 0;
}
没看懂C 练习实例81 | 菜鸟教程 (runoob.com)
进制转换
#include<stdio.h>
#include<stdlib.h>
int main()
{int n=0,i=0;char s[20];printf("请输入一个8进制数:\n");gets(s);while(s[i]!='\0'){n=n*8+s[i]-'0';i++;}printf("刚输入的8进制数转化为十进制为\n%d\n",n);return 0;
}
只考虑最后一位数,其他几位随意组合
????????????
字符串链接 有个方法
char* strconnect(char *str1,char *str2) {char*str;str=(char*)malloc(strlen(str1)+strlen(str2)+1);str[0]='\0';strcat(str,str1);strcat(str,str2);return str; }
emmm
密码,类似于
某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下: 每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。
取出每一位数,然后按照要求再装填回去
?
时间
数字炸弹 ififfiif
结构体
struct programming {float constant;char *pointer; };
计算字符串中子串出现的次数 。面试
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{int i,j,k,TLen,PLen,count=0;char T[50],P[10];printf("请输入两个字符串,以回车隔开,母串在前,子串在后:\n");gets(T);gets(P);TLen=strlen(T);PLen=strlen(P);for(i=0;i<=TLen-PLen;i++){for(j=0,k=i;j<PLen&&P[j]==T[k];j++,k++);if(j==PLen)count++;}printf("%d\n",count);system("pause");return 0;
}
- 从键盘输入一些字符,逐个把它们送到磁盘上去,直到输入一个#为止。
#include<stdio.h>
#include<stdlib.h>
int main()
{FILE*fp=NULL;char filename[25];char ch;printf("输入你要保存到的文件的名称:\n");gets(filename);if((fp=fopen(filename,"w"))==NULL){printf("error: cannot open file!\n");exit(0);}printf("现在你可以输入你要保存的一些字符,以#结束:\n");getchar();while((ch=getchar())!='#'){fputc(ch,fp);}fclose(fp);system("pause");return 0;
}
- 大小写转换(人麻了,等考研成绩的一天,我是个小废物)
#include<stdio.h>
#include<stdlib.h>
#include<string.h>int main()
{FILE*fp=NULL;char str[50];int i,len;printf("输入一个字符串:\n");gets(str);len=strlen(str);for(i=0;i<len;i++){if(str[i]<='z'&&str[i]>='a')str[i]-=32;}if((fp=fopen("test","w"))==NULL){printf("error: cannot open file!\n");exit(0);}fprintf(fp,"%s",str);fclose(fp);system("pause");return 0;
}
矩阵交换
#include <iostream>
using namespace std;
int main()
{int a[5][5], m, n, i, j;for (i=0; i<5; i++)for (j=0; j<5; j++)cin >> a[i][j];cin >> m >> n;for (j=0; j<5; j++){i = a[m-1][j];a[m-1][j] = a[n-1][j];a[n-1][j] = i;}for (i=0; i<5; i++){for (j=0; j<5; j++){cout << a[i][j] << " ";}cout << endl;}return 0;
}
一只小猴子一天摘了许多桃子,第一天吃了一半,然后忍不住又吃了一个;第二天又吃了一半,再加上一个;后面每天都是这样吃。到第10天的时候,小猴子发现只有一个桃子了。问小猴子第一天共摘了多少个桃子。
#include<stdio.h>int main()
{int i = 1;int j = 1;for (j = 10; j > 1;j --){i++;i = 2 * i;}printf("第一天摘了 %d 个桃子。", i);
}
100道题,代码菜鸟教程里都有,只是记录一些输出和自己的理解(又是等成绩焦虑到要死的一天)相关推荐
- python菜鸟教程100实例-python菜鸟教程官网
广告关闭 腾讯云双11爆品提前享,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高满返5000元! 之后的某节会讲到如何给mac中的python安装其他模块,比如比较常用的numpy ...
- python菜鸟教程100例-对菜鸟教程的Python一百例的个别改进
开篇语 好吧,其实是我小妹子Python公选课结课,所以我来帮忙做个大作业(简单到哭的大作业好吗?)!她的大作业就是老师把菜鸟教程的Python一百例扒下来做成文档,然后让学生自己找三个验证下!我们当 ...
- php验证码代码菜鸟教程,PHP验证码的生成
define('CAPTCHA_NUMCHARS',6); //验证码的字符个数 define('CAPTCHA_WIDTH',100); //验证码的宽度 define('CAPTCHT_ ...
- Python字符串函数说明(菜鸟教程里面的)
觉得这边很详细 就截图了
- Python3 菜鸟教程 笔记7 -- 模块、输入和输出
$ 模块(摘要) 传送门:https://www.runoob.com/python3/python3-module.html @ __name__属性 一个模块被另一个程序第一次引入时,其主程序将运 ...
- DL之RNN:人工智能为你写代码——基于TF利用RNN算法实现生成编程语言代码(C++语言)、训练测试过程全记录
DL之RNN:基于TF利用RNN算法实现生成编程语言代码(C语言).训练&测试过程全记录 目录 输出结果 监控模型 训练&测试过程全记录 训练的数据集展示 输出结果 1.test01 ...
- SAP系统和微信集成的系列教程之八:100行代码在微信公众号里集成地图搜索功能
本系列的英文版Jerry写作于2017年,这个教程总共包含十篇文章,发表在SAP社区上. 系列目录 (1) 微信开发环境的搭建 (2) 如何通过微信公众号消费API (3) 微信用户关注公众号之后,自 ...
- python菜鸟教程h-python菜鸟教程,python好玩又简单的代码
如果是零基础的话推荐你看以下几本书,入门来说都还不错:"笨办法"学Python(第3版)HeadFirstPython(中文版)父与子的编程之旅:与小卡特一起学Python pyt ...
- python有趣的代码-python菜鸟教程,python好玩又简单的代码
如果是零基础的话推荐你看以下几本书,入门来说都还不错:"笨办法"学Python(第3版)HeadFirstPython(中文版)父与子的编程之旅:与小卡特一起学Python pyt ...
最新文章
- 参数化模型(parametric model)和非参数化模型non-parametric model)的区别?哪些模型是参数化模型,哪些模型是非参数化模型?
- java 线性表排序_Java线性表的排序
- python中的单继承,多继承和mro顺序
- 如何用Java创建不可变的Map
- Vxworks系统学习之一----任务
- 从NetCore报错到MySql安全
- apache无权限访问(You don't have permission to access /docs/index.html on this server)
- 广告终结者:使用AdBlock Plus屏蔽百度、CSDN广告
- SpringSecurity授权管理介绍
- 产业洞察 | 鸿蒙不会用于手机,网民有点心凉!解密操作系统造得出用不起的魔咒...
- Django教程(自强学堂)
- 洛谷-P1107 [BJWC2008]雷涛的小猫
- Smartbi:水泥行业实现数字化转型升级势在必行
- 学习《User and entity behavior analysis under urban big data》(UEBA)
- 第五天实验---MGRE环境下的OSPF实验
- openwrt控制天翼网关定时重启
- css中的单位换算_CSS中各种长度单位总结
- MetaSploit攻击实例讲解------Metasploit自动化攻击(包括kali linux 2016.2(rolling) 和 BT5)...
- 案例:典型电商应用与缓存。
- HTML调用百度地图API,实现地图标注位置
热门文章
- 192.168.8.1手机登陆_192.168.8.1登录入口手机登陆?
- PTA - 时间换算
- php替换视频教程,替换掉视频运动中的文字 | 修改视频文字的内容(附带软件与详细教程)...
- 【机器视觉C#联合Halcon】
- json字符串换java对象时遇到NoSuchMethodException的问题
- 与花有关的古诗词【用逐浪字体设计就是这么美!】
- ThreadX内核源码分析(SMP) - 核间互斥(arm)
- 一个html页面(包括js代码)导入另一个html页面
- 前端笔试面试题目整理(持续更新)
- 软件著作权申请中源代码文档的编辑方法