九宫格
定义一个二维数组,输入1~9几个数字,利用累加分别计算其中行,列,对角线的值,再判断她们是否相等。
注意:对角线有正反两条
源码
#include<bits/stdc++.h>
using namespace std;
int main(){
int arr[3][3];
for(int i=0;i<3;i++){
for(int j=0;j<3;j++){
cin>>arr[i][j];
}
}
int row=0,col=0,digx=0,digy=0;
for(int i=0;i<3;i++){
row+=arr[0][i];
col+=arr[i][0];
digx+=arr[i][i];
digy+=arr[i][2-i];
}
if(row==col&&row==digx&&row==digy){
cout<<"1"<<endl;
}
else cout<<"0"<<endl;
return 0;
}
奇怪的数列
定义两个数组code和codetmp,code用来储存变换之前的字符,codetmp用来储存变换之后的字符。用start表示开头的字符,用num记录相同字符连续出现的个数。
注意:每次循环过后,记得把codetmp中的数据复制到code中进行下一次变换。
源代码:
#include<bits/stdc++.h>
#include<string.h>
#include<string>
using namespace std;
int main(){
char code[10000];
memset(code,'\0',sizeof(code));//注意要初始化
char codetmp[10000];
memset(code,'\0',sizeof(codetmp));//注意要初始化
int index=0;
int n;
cin>>code;
int len=strlen(code);
cin>>n;
char start;
int num=0;
while(n--){//这个while循环针对code数组
bool flag=0;
start=code[0];//标记当前连续的那个字符
index=0; num=0;
len=strlen(code);
for(int i=0;i<len;i++){
if(code[i]==start){//如果 当前字符==当前连续字符
num++;
}
if(i==len-1){//如果已经是最后一个字符了
flag=1;
}
if(code[i]!=start){
/*先把num和字符start存起来*/
codetmp[index++]=num+'0';//codetmp是字符数组,所以要加上"0"
codetmp[index++]=start;
/*再把当前连续字符换成code[i]*/
start=code[i];
num=1;
}
}
if(flag){//如果已经是最后一个字符,因为我们还没有存num和start,的操作如下
codetmp[index++]=num+'0';
codetmp[index++]=start;
}
/*因为要保证while循环针对code数组,这里把codetmp数组复制到code数组*/
int t_len=strlen(codetmp);
for(int i=0;i<t_len;i++){
code[i]=codetmp[i];
}
}
cout<<code<<endl;
system("pause");
}
eg:
输入·:5
7
输出:13211321322115