c语言第二次实验报告
1.实验题目
11-8 螺旋方阵
12-7 输出大写英文字母
13-6 数组循环右移
14-2 删除字符
15-7 递归求Fabonacci数列
2.设计思路、实现方法
11-8 运用二维数组经过多次循环得到螺旋矩阵
12-7 用条件判断大写字母然后写入数组接着再判断数组中的重复字母,将后面数组前移
13-6 将数组a[i]中的i加上右移几位余数组长度得到右移后位置
14-2 对数组一一进行判断若出现题目删除字母则将右侧数组左移
15-7 通过题目给出函数规律得出运算出答案
二、源程序
11-8 螺旋方阵
#include<stdio.h> int main() { int n,a=2,b=1,z[10][10],c=0,i,j,d; scanf("%d",&n); d=n; z[1][1]=1; for(j=2;j<=d;j++){ z[1][j]=z[1][j-1]+1; } do{ for(i=a;i<=d;i++){ z[i][d]=z[i-1][d]+1; c++; } for(j=d-1;j>=b;j--){ z[d][j]=z[d][j+1]+1; c++; } for(i=d-1;i>=a;i--){ z[i][b]=z[i+1][b]+1; c++; } for(j=a;j<=d-1;j++){ z[a][j]=z[a][j-1]+1; c++; } a++; b++; d--; }while(c!=n*n-n); for(i=1;i<=n;i++){ for(j=1;j<=n;j++){ printf("%3d",z[i][j]); } printf("\n"); } return 0; }
12-7 输出大写英文字母
#include<stdio.h> #include<string.h> #include<math.h> int main(){ char a[100],b[100]; int m,i,j,k,l,c=0; gets(a); m=strlen(a); for(i=0;i<m;i++){ if(a[i]>='A'&&a[i]<='Z') b[k++]=a[i]; else c++; } for(i=0;i<=k-1;i++){ for(j=i+1;j<=k-1;j++){ if(b[i]==b[j]){ for(l=j+1;l<=k;l++){ b[l-1]=b[l]; } k--; i--; } } } if(c==m) printf("Not Found"); else{ for(i=0;i<=k-1;i++){ printf("%c",b[i]); } } return 0; }
13-6 数组循环右移
#include <stdio.h> #define MAXN 10 int ArrayShift( int a[], int n, int m ); int main() { int a[MAXN], n, m; int i; scanf("%d %d", &n, &m); for ( i = 0; i < n; i++ ) scanf("%d", &a[i]); ArrayShift(a, n, m); for ( i = 0; i < n; i++ ) { if (i != 0) printf(" "); printf("%d", a[i]); } printf("\n"); return 0; } /* 你的代码将被嵌在这里 */ int ArrayShift( int a[], int n, int m ){ int i,b[100]; for(i=0;i<n;i++){ *(b+(i+m)%n)=*(a+i); } for(i=0;i<n;i++){ a[i]=b[i]; } return *a; }
14-2 删除字符
#include <stdio.h> #define MAXN 20 void delchar( char *str, char c ); void ReadString( char s[] ); /* 由裁判实现,略去不表 */ int main() { char str[MAXN], c; scanf("%c\n", &c); ReadString(str); delchar(str, c); printf("%s\n", str); return 0; } /* 你的代码将被嵌在这里 */ void delchar( char *str, char c ){ int len=0,i; while(*(str+len)!='\0'){ len++; } for(i=0;i<len;i++){ if(*(str+i)!=c){ printf("%c",str+i); } } printf("\0"); }
15-7 递归求Fabonacci数列
#include <stdio.h> int f( int n ); int main() { int n; scanf("%d", &n); printf("%d\n", f(n)); return 0; } /* 你的代码将被嵌在这里 */ int f( int n ){ int y[n],i; y[0]=0; y[1]=1; for(i=2;i<=n;i++){ y[i]=y[i-1]+y[i-2]; } return y[n]; }
三.遇到的问题及解决方法,心得体会
写螺旋矩阵代码时要注意什么时候改变行列,不然很容易出错,需要通过打草稿计算每次输入几组数值再转换方向;
数组右移的时候会超过数组本身长度所以要重新定义其位置;
心得体会:在打代码的时候能够发现自己很多不足,有时候一些代码往往可以用更简单的算法运算出来,因此我应该多多深入学习相关知识