你说的这些我都写过,有些在我的博客里面,有的在我的OJ账号里面。
因为是我以前写的,所以我就直接拿来给你参考。如果对于某个具体的题目的代码要解释,可以给个联系方式。在这里我就直接贴代码,都是c和c++语言写的。
有using namespace的是c++的,其他的是c语言的。我用的不是你的那个软件,我用的是codeblocks来编写的。软件只是个工具,方便编写和提高效率,用记事本照样可以i写程序。
A+B(超级简单的加法,有几个简单的我就不写了)
#include
int main()
{
int a,b;
while(~scanf("%d %d",&a,&b))
{
printf("%d\n",a+b);
}
return 0;
}
求N个数字的和(格式用图片说明)
#include
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
int i=1,k,sum=0;
if(n==0)break;
for(;i<=n;i++)
{
scanf("%d",&k);
sum+=k;
}
printf("%d\n",sum);
}
return 0;
}
高精度减法(输入数据后回车,再接着输入第二个数)(加减乘除我都有代码,我写过)
#include
#include
#define MAX 1000
using namespace std;
void InputNumber(char *num_1,char *num_2)
{
char *temp = new char [MAX];//用于存放输入的数据
memset(temp,0,sizeof(temp));cin>>temp;//清空容器并输入第一个数据
for(int i = num_1[0] = strlen(temp); i>0; i--)
num_1[i] = temp[ num_1[0] - i ] - '0';//逆序并转换成相应的数字
memset(temp,0,sizeof(temp));cin>>temp;//清空容器并输入第二个数据
for(int i = num_2[0] = strlen(temp); i>0; i--)
num_2[i] = temp[ num_2[0] - i ] - '0';//逆序并转换成相应的数字
delete [] temp;//释放临时容器
}
void CutNumber(char *num_1,char *num_2,char *sum)
{
sum[0] = max(num_1[0],num_2[0]);
for(int i=1; i <= sum[0]; i++)
{
sum[i] = num_1[i] - num_2[i];
if( sum[i] < 0 )
{
num_1[ i + 1 ]--;
sum[i] += 10;
}
}
}
void OutputNumber(char *sum)
{
for(int i = ++sum[0]; !sum[i] && 1 < i; sum[0]--,i--)
;//过滤前导0;避免结果全部是0,所以只留下一位不过滤
for(int i = sum[0]; i > 0; i--)
cout<<(int)sum[i];//输出结果
cout<}
int main(void)
{
while(true)
{
char *num_1 = new char [MAX];memset(num_1,0,sizeof(num_1));
char *num_2 = new char [MAX];memset(num_2,0,sizeof(num_2));
char *num_3 = new char [MAX];memset(num_3,0,sizeof(num_3));
InputNumber(num_1,num_2);//输入数据
CutNumber(num_1,num_2,num_3);//相减
OutputNumber(num_3);//输出结果
delete [] num_1;delete [] num_2;delete [] num_3;
}
return 0;
}
回文判断(输入一个字符串)
#include
int main()
{
char str1[105],str2[1005];
while(scanf("%s",str1)!=EOF)
{
int d=strlen(str1),i;
for(i=0;istr2[i]=str1[d-1-i];
if(strcmp(str1,str2)==0)
printf("yes\n");
else
printf("no\n");
}
return 0;
}
冒泡排序(没有数据的输入,我是在程序里面写好了,稍加修改可以对于你输入的数据排序,这个代码是体现排序的思想)
/*****************************************************************************************
算法:
1、相邻两个元素进行比较,即0号元素和1号元素、1号元素和2号元素、2号元素和3号元素,依此类推。
2、每轮比较之后,就会产生一个最值,并且这个最值总是在最后面才出现,如同鱼儿吐泡。
3、第一轮比较之后,最值在最后面;第二轮比较之后,次最值在倒数第二个位置,依此类推。
*****************************************************************************************/
#includeusing namespace std;
void Swap(int *elem_1, int *elem_2)
{
int temp = *elem_1;
*elem_1 = *elem_2;
*elem_2 = temp;
}
void Bubble_Sort(int *array,int len)
{
for(int i=0; ifor(int j=0; j if(array[j] > array[j+1])
Swap(array+j,array+j+1);
}
int main(void)
{
int array[10]={4,9,7,0,3,1,5,8,2,6};
Bubble_Sort(array,10);
for(int i=0; i<10; i++)
cout<return 0;
}
斐波那契数列
#include
int f(int n)
{
int s;
if(n==1)
s=2;
if(n==2)
s=3;
if(n==3)
s=5;
if(n>=4)
s=f(n-1)+f(n-2)-f(n-3);
return s;
}
int main()
{
int n,s;
scanf("%d",&n);
s=f(n);
printf("%d\n",s);
return 0;
}
进制转换(先输入十进制的数,然后在输入要转换什么进制,二进制就输入2)
比如输入1279后回车 再输入8,就代表将1279转换成8进制的。
#include
int main()
{
int n,r,s[100];
while(~scanf("%d%d",&n,&r))
{
int i=0;
while(n)
{
s[i++]=n%r;
n/=r;
}
s[i]='\0';
for(i--;i>=0;i--)
printf("%d",s[i]);
printf("\n");
}
return 0;
}
首先是库文件
C:
#include "stdio.h"
#include "stdlib.h"
C++:
#include
#include
#include
(1)
C:
int main()
{
int a,b;
scanf("%d %d",&a,&b); //输入
printf("%d",a+b); //输出
return 0;
}
C++:
using namespace std; 使用std名字空间,在c++中所有库函数都在std中
int main()
{
int a,b;
cin >>a>>b; //输入
cout <return 0;
}
(2)
C:
int main()
{
printf("Hello World");
return 0;
}
C++:
using namespace std;
int main()
{
cout <<"Hello World";
return 0;
}
(3)
#include
#include
#include
using namespace std;
int main()
{
long long ans=0,t,n;
cin >>n;
for(int i=0;i
cin >>t;
ans+=t;
}
cout <
}
(4)
#include
#include
#include
using namespace std;
int main()
{
int a,b;
cin>>a>>b;
cout <
}
(8)
#include
#include
#include
using namespace std;
int main()
{
int n;
cin >>n;
int num[n];
for(int i=0;i
sort(num.num+n);
for(int i=0;i
}
(10)
注意 乱序!
//矩阵乘法加快速幂
//时间复杂度为O(log N)
//杀鸡用牛刀……
#include
#include
#include
using namespace std;
int a[32][2][2], b[2][2];
int n, p, tmp;
int get_max(int x)
{
int i = 1;
while(i <= x) i *= 2;
i /= 2;
if (i) return i;
return 1;
}
void first()
{
a[0][0][0] = a[0][0][1] = a[0][1][0] = 1;
//a[1][0][0] = a[1][0][1] = a[1][1][0] = 1;
a[31][0][0] = a[31][0][1] = a[31][1][0] = 1;
for (int i = 1; i <= 30; ++i)
for (int j = 0; j < 2; ++j)
for (int k = 0; k < 2; ++k)
for (int t = 0; t < 2; ++t)
{
a[i][j][k] += (a[i-1][j][t]*a[i-1][t][k]) % p;
a[i][j][k] %= p;
}
}
int main()
{
freopen("a.in", "r", stdin);
int t;
scanf("%d", &t);
while(t-- > 0)
{
scanf("%d %d", &n, &p);
first();
while(n >= 1)
{
int tmp = get_max(n);
n -= tmp;
tmp = log2(tmp);
for (int i = 0; i < 2; ++i)
for (int j = 0; j < 2; ++j)
for (int k = 0; k < 2; ++k)
b[i][j] += (a[31][i][k]*a[tmp][k][j])%p;
for (int i = 0; i < 2; ++i)
for (int j = 0; j < 2; ++j)
a[31][i][j] = b[i][j]%p;
memset(b, 0, sizeof b);
}
printf("%d\n", a[31][1][0]);
memset(a, 0, sizeof a);
}
return 0;
}
先打这一点吧,在浏览器上打好累……
此外斐波那契数列有多种做法,你想要多快的.
【文件】--【新建】就可以新建一个文件,然后另存为xx.c文件,就可以开始编写程序了。编写完以后,【运行】---【编译】就可以编译程序,编译是会提示编译成功,或者有错误和警告,按照提示进行处理;【运行】---【运行】就 可以运行程序了。一般需要在程序后面加上两句:system("pause");//让画面暂停,查看程序运行结果return 0;//标准C需要返回一个整数
int main()
{
unsigned char t;
scanf("%d",&t);
switch(t)
{
case 'a':
case 'A':
printf("你是我的小苹果n");
break;
default: break;
}
}
//按下a键可显示"你是我的小苹果"
包含你说的大部分要求的2048
#include
#include
#include
#include
#include
#include
#include
using namespace std;
//srand( (unsigned)time( NULL ) ); //随机数种子 不能用在这里
int pane[4][4]; //棋盘
int N=1; //2的n次方
void showpane()//显示棋盘
{
cout< cout< for(int i=0;i<=3;i++) { cout< for(int j=0;j<=3;j++) { //SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED); if(pane[i][j]==0) cout< else cout< if(j==3) { cout< cout< } } } } void newgame() //开始游戏 { N=1; for(int i=0;i<=3;i++) //初始化棋盘 for(int j=0;j<=3;j++) pane[i][j]=0; srand( (unsigned)time( NULL ) ); int m=rand()%4; int n=rand()%4; int p=rand()%4; int q=rand()%4; pane[m][n]=pane[p][q]=2; showpane(); } int if2n(int x) //判断x是否是2的n次方 { int flag=0; for(int n=1;n<=11;n++) { if(x==pow(2,n)) { flag=1; if(n>N) N=n; return flag; } } return flag; } int upmove() //上移 { int flag=0; for(int j=0;j<=3;j++) for(int i=0;i<3;i++) { if(if2n(pane[i][j]+pane[i+1][j])==1) { pane[i][j]=pane[i][j]+pane[i+1][j]; pane[i+1][j]=0; flag=1; } } return flag; } int downmove() //下移 { int flag=0; for(int j=0;j<=3;j++) for(int i=3;i>0;i--) { if(if2n(pane[i][j]+pane[i-1][j])==1) { pane[i][j]=pane[i][j]+pane[i-1][j]; pane[i-1][j]=0; flag=1; } } return flag; } int leftmove() //左移 { int flag=0; for(int i=0;i<=3;i++) for(int j=0;j<3;j++) { if(if2n(pane[i][j]+pane[i][j+1])==1) { pane[i][j]=pane[i][j]+pane[i][j+1]; pane[i][j+1]=0; flag=1; } } return flag; } int rightmove() //右移 { int flag=0; for(int i=0;i<=3;i++) for(int j=3;j>0;j--) { if(if2n(pane[i][j]+pane[i][j-1])==1) { pane[i][j]=pane[i][j]+pane[i][j-1]; pane[i][j-1]=0; flag=1; } } return flag; } int testup() //能否上移测试 { int flag=0; for(int j=0;j<=3;j++) for(int i=0;i<3;i++) { if((if2n(pane[i][j]+pane[i+1][j])==1)&&pane[i+1][j]) { flag=1; } } return flag; } int testdown() //测试能否下移 { int flag=0; for(int j=0;j<=3;j++) for(int i=3;i>0;i--) { if((if2n(pane[i][j]+pane[i-1][j])==1)&&pane[i-1][j]) { flag=1; } } return flag; } int testleft() //测试能否左移 { int flag=0; for(int i=0;i<=3;i++) for(int j=0;j<3;j++) { if((if2n(pane[i][j]+pane[i][j+1])==1)&&pane[i][j+1]) { flag=1; } } return flag; } int testright() //测试能否右移 { int flag=0; for(int i=0;i<=3;i++) for(int j=3;j>0;j--) { if((if2n(pane[i][j]+pane[i][j-1])==1)&&pane[i][j-1]) { flag=1; } } return flag; } int panemax() //棋盘最大数 { int max=pane[0][0]; for(int i=0;i<=3;i++) for(int j=0;j<=3;j++) if(pane[i][j]>max) max=pane[i][j]; return max; } int ifwin() //判断是否胜利 { int flag=0; if(panemax()==2048) { cout< flag=1; } return flag; } int ifGameOver() //判断是否游戏结束 { int flag=0; if(testup()+ testdown() + testleft() + testright() == 0) { cout< flag=1; } return flag; } void addnewnumberup() //上移后添加新数 { srand( (unsigned)time( NULL ) ); int n; if(N==1) n=1; else n=(rand()%(N)+1); int newnumber=pow(2,n); for(int i=3;i>=0;i--) for(int j=0;j<=3;j++) if(pane[i][j]==0) { pane[i][j]=newnumber; return; } } void addnewnumberdown() //下移后添加新数 { srand( (unsigned)time( NULL ) ); int n; if(N==1) n=1; else n=(rand()%(N)+1); int newnumber=pow(2,n); for(int i=0;i<=3;i++) for(int j=0;j<=3;j++) if(pane[i][j]==0) { pane[i][j]=newnumber; return; } } void addnewnumberleft() //左移后添加新数 { srand( (unsigned)time( NULL ) ); int n; if(N==1) n=1; else n=(rand()%(N)+1); int newnumber=pow(2,n); for(int j=3;j>=0;j--) for(int i=0;i<=3;i++) if(pane[i][j]==0) { pane[i][j]=newnumber; return; } } void addnewnumberright() //右移后添加新数 { srand( (unsigned)time( NULL ) ); int n; if(N==1) n=1; else n=(rand()%(N)+1); int newnumber=pow(2,n); for(int j=0;j<=3;j++) for(int i=0;i<=3;i++) if(pane[i][j]==0) { pane[i][j]=newnumber; return; } } int GetDirection() //读取方向 { int ret = 0; do { int ch = _getch(); if(isascii(ch)) continue; ch = _getch(); switch(ch) { case 72: ret = 2; // top break; case 75: ret = 1; // left break; case 77: ret = 3; // right break; case 80: ret = 4; // down break; default: break; } } while (ret == 0); return ret; } int main() //主函数 { system("color f9"); int makesure=1; while(makesure) { system("cls"); newgame(); while(ifwin()+ifGameOver()==0) { int c=GetDirection(); switch(c) { case 2: if(testup()==1) { upmove(); addnewnumberup(); system("cls"); showpane(); } break; case 4: if(testdown()==1) { downmove(); addnewnumberdown(); system("cls"); showpane(); } break; case 1: if(testleft()==1) { leftmove(); addnewnumberleft(); system("cls"); showpane(); } break; case 3: if(testright()==1) { rightmove(); addnewnumberright(); system("cls"); showpane(); } break; default: break; } } cout< cout< cin>>makesure; while(makesure!=1&&makesure!=0) { cout<<"输入不正确,请重新输入!"< cin>>makesure; } } cout<<"再见!"< cout<<"本游戏来源网络"< cout<<"-+-+-+-+-+-+-+-+-+-+-+-"< cout<<"界面空白吗?如果空白请按1,否则按其他键." < int makesure2; cin>>makesure2; { if (makesure2==1); system("cls"); cout<<"按任意键关闭"< system("pause"); return 0; } int i,n,k; for(i=1;i<=300000000;i++)n=k/2; printf("."); for(i=1;i<=300000000;i++)n=k/2; printf("."); for(i=1;i<=300000000;i++)n=k/2; printf("."); for(i=1;i<=300000000;i++)n=k/2; printf("."); for(i=1;i<=300000000;i++)n=k/2; printf(".\n"); system("cls") ; system("pause"); return 0; }