一、实验题目:
-
编写一个函数,求x的y次方,用主程序调用这个函数,并输出结果。
-
使用函数统计指定数字的个数:读入一个整数,统计并输出该数中"2"的个数。要求定义并调用函数countdigit (number, digit),它的功能是统计整数number中数字digit的个数。例如,countdigit(12292, 2) 的返回值是3。试编写相应程序。
-
有一个已排好序的数组,要求输入一个数后,按原来排序的规律将它插入数组中。(不妨假设为升序排序)。
-
编写程序要求将一个一维数组逆序存放并输出。
-
扫雷游戏是一款十分经典的单机小游戏。在n行m列的雷区中有一些格子含有地雷(称之为地雷格),其他格子不含地雷(称之为非地雷格)。玩家翻开一个非地雷格时,该格将会出现一个数字——提示周围格子中有多少个是地雷格。游戏的目标是在不翻出任何地雷格的条件下,找出所有的非地雷格。
现在给出n行m列的雷区中的地雷分布,要求计算出每个非地雷格周围的地雷格数。
注:一个格子的周围格子包括其上、下、左、右、左上、右上、左下、右下八个方向上与之直接相邻的格子。
输入格式
第一行是用一个空格隔开的两个整数n和m,分别表示雷区的行数和列数。
接下来n行,每行m个字符,描述了雷区中的地雷分布情况。字符‘’表示相应格子是地雷格,字符‘?’表示相应格子是非地雷格。相邻字符之间无分隔符。
输出格式
输出文件包含n行,每行m个字符,描述整个雷区。用‘’表示地雷格,用周围的地雷个数表示非地雷格。相邻字符之间无分隔符。
输入输出样例
输入 #1
3 3
??
???
??
输出 #1
10
221
11
输入 #2
2 3
?*?
??
输出 #2
21
*21
二、实验代码:
1
#include<stdio.h>
int mi(int x,int y);
int main()
{
int a,b;
scanf("%d%d",&a,&b);
printf("%d",mi(a,b));
return 0;
}
int mi(int x,int y)
{
int i,n=1;
for(i=1;i<=y;i++)
{
n=n*x;
}
return n;
}
2
#include<stdio.h>
int countdight(int n,int d);
int main()
{
int a,b;
scanf("%d%d",&a,&b);
printf("%d",countdight(a,b));
return 0;
}
int countdight(int n,int d)
{
int i=0;
while(n!=0){
if(n%10==d){
i++;
}
n=n/10;
}
return i;
}
3
#include<stdio.h>
int main()
{
int a[7]={1,10,100,1000,10000,100000};
int t,i;
for(i=0;i<6;i++){
printf("a[%d] = %d\n",i+1,a[i]);
}
scanf("%d",&a[6]);
for(i=6;i>0;i--){
if(a[i]<a[i-1]){
t=a[i];
a[i]=a[i-1];
a[i-1]=t;
}
}
for(i=0;i<7;i++){
printf("a[%d] = %d\n",i+1,a[i]);
}
return 0;
}
4
#include<stdio.h>
int main()
{
int n,i,k,t;
printf("Enter n:");
scanf("%d",&n);
int a[n];
for(i=0;i<n;i++){
scanf("%d",&a[i]);
}
for(i=0,k=n-1;i<k;i++,k--){
t=a[i];
a[i]=a[k];
a[k]=t;
}
for(i=0;i<n;i++){
printf("%d",a[i]);
if(i<n-1){
printf("\n");
}
}
return 0;
}
5
#include<stdio.h>
int main()
{
int m,n,h,s,i,x,y;
printf("enter n,m :");
scanf("%d%d",&n,&m);
char a[n+2][m+2];
int b[n+2][m+2];
s=1;
getchar();
for(h=1;h<n+1;h++){
while ((a[h][s]=getchar())!='\n')
s++;
a[h][s]='\0';
s=1;
}
for(x=1;x<n+2;x++){
for(y=1;y<m+2;y++){
b[x][y]=0;
if(a[x][y]=='*')
b[x][y]=-1;
else{
b[x][y]=0;
if(a[x-1][y-1]=='*')
b[x][y]++;
if(a[x-1][y]=='*')
b[x][y]++;
if(a[x-1][y+1]=='*')
b[x][y]++;
if(a[x][y-1]=='*')
b[x][y]++;
if(a[x][y+1]=='*')
b[x][y]++;
if(a[x+1][y-1]=='*')
b[x][y]++;
if(a[x+1][y]=='*')
b[x][y]++;
if(a[x+1][y+1]=='*')
b[x][y]++;
}
}
}
for(x=1;x<n+1;x++){
for(y=1;y<m+1;y++){
if(b[x][y]==-1)
printf("*");
else
printf("%d",b[x][y]);
}
printf("\n");
}
return 0;
}