(题目来源--西工大计算机微信公众号)
1.求最小数,给定三个数(int型),输出最小的数
Input:
5 2 55
output:
2
参考代码:
#include<stdio.h>
int main(){
int a,b,c,temp;
scanf("%d %d %d",&a,&b,&c);
if(a>=b){
if(b>=c)
temp=c;
else
temp=b;
}
else if(a>=c)
temp=c;
else
temp=a;
printf("%d",temp);
return 0;
}
2.十进制转换为二进制
input:
1030
otput:
10000000110
#include<stdio.h>
int main(void)
{
int i=0,n,a[100];
printf("请输入一个十进制整数.\n");
scanf("%d",&n);
while (n>0)
{
a[i]=n%2;
i=i+1;
n=n/2;
}
printf("十进制整数转换为二进制数是:\n");
for(i--;i>=0;i--)
printf("%d",a[i]);
printf("\n");
return 0;
}
3.迷宫问题:
#include <iostream>
using namespace std;
int main()
{
int a[20][20];
int num;
cin>>num;
int m,n;
cin>>m>>n;
char s;
cin>>s;
switch(s)
{
case 'w':
if(m==0)
{
cout<<"N"<<endl;
}
else
{
cout<<"Y"<<endl;
}
break;
case 's':
if(m==num-1)
{
cout<<"N"<<endl;
}
else
{
cout<<"Y"<<endl;
}
break;
case 'a':
if(n==0)
{
cout<<"N"<<endl;
}
else
{
cout<<"Y"<<endl;
}
break;
case 'd':
if(n==num-1)
{
cout<<"N"<<endl;
}
else
{
cout<<"Y"<<endl;
}
break;
}
return 1;
}
4.又一个迷宫问题:
#include <iostream>
using namespace std;
int main()
{
int a[20][20];
int num;
cin>>num;
for(int i=0;i<num;i++)
{
for(int j=0;j<num;j++)
{
cin>>a[i][j];
}
}
int m,n;
cin>>m>>n;
char s;
cin>>s;
switch(s)
{
case '3'://w
if(m==0)
{
cout<<"N"<<endl;
}
else
{
m=m-1;
if(a[m][n]==0)
{
cout<<"Y"<<endl;
}
else
{
cout<<"N"<<endl;
}
}
break;
case '1'://s
if(m==num-1)
{
cout<<"N"<<endl;
}
else
{
m=m+1;
if(a[m][n]==0)
{
cout<<"Y"<<endl;
}
else
{
cout<<"N"<<endl;
}
}
break;
case '0'://a
if(n==0)
{
cout<<"N"<<endl;
}
else
{
n=n-1;
if(a[m][n]==0)
{
cout<<"Y"<<endl;
}
else
{
cout<<"N"<<endl;
}
}
break;
case '2'://d
if(n==num-1)
{
cout<<"N"<<endl;
}
else
{
n=n+1;
if(a[m][n]==0)
{
cout<<"Y"<<endl;
}
else
{
cout<<"N"<<endl;
}
}
break;
}
return 1;
}
5.字符串替换问题:
#include <iostream>
#include <string>
using namespace std;
int main()
{
string a[3];
for(int i=0;i<3;i++)
{
getline(cin,a[i]);
}
int pos=a[0].find(a[1]);
a[0].replace(pos,a[1].length(),a[2]);
cout<<a[0]<<endl;
return 1;
}
6.六数码问题:
真的不会!!!!!
7.计算单词的个数:
#include<stdio.h>
int main()
{
char s[81],c;
int i,num=0,word=0;
printf("请输入一行英文:\n");
gets(s);
for(i=0;(c=s[i])!='\0';i++)//判断句子是否到未
if(c==' ') word=0;//是空格就为0
else if(word==0)//不是空格就判断之前有没有空格
{
word=1;//复位用来判断空格是否存在的开关
num++;//如果之前有空格,单词数加1
}
printf("本行中共有%d个单词.\n",num);
}
8.连阴雨问题:
#include <iostream>
#include <string>
#include <cstring>
using namespace std;
char map[100][100];
int visited[100][100];
int ans=0;
int m,n;
struct
{
int x;
int y;
}offset[8]={
{
-1,-1
},
{
-1,0
},
{
-1,1
},
{
0,-1
},
{
0,1
},
{
1,-1
},
{
1,0
},
{
1,1
}
};
void dfs(int i,int j)
{
int x,y,u;
visited[i][j]=1;
for(u=0;u<8;u++)
{
x=i+offset[u].x;
y=j+offset[u].y;
if(x>=0&&x<m&&y>=0&&y<n)//
{
if(map[x][y]=='W'&&visited[x][y]==0)
{
dfs(x,y);
}
}
}
}
int main()
{
int i,j;
cin>>m>>n;
cin.ignore();
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
visited[i][j]=0;
}
}
for(i=0;i<m;i++)
{
cin.getline(map[i],100);
}
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
if(map[i][j]=='W'&&visited[i][j]==0)
{
dfs(i,j);
ans++;
}
}
}
cout<<ans;
return 0;
}