一.实验题目,设计思路,实现方法11-8 螺旋方阵 所谓“螺旋方阵”,是指对任意给定的N,将1到N×N的数字从左上角第1个格子开始,按顺时针螺旋方向顺序填入N×N的方阵里。本题要求构造这样的螺旋方阵。
12-8 删除重复字符本题要求编写程序,将给定字符串去掉重复的字符后,按照字符ASCII码顺序从小到大排序后输出。
13-6 数组循环右移本题要求实现一个对数组进行循环右移的简单函数:一个数组a中存有n(>0)个整数,将每个整数循环向右移m(≥0)个位置。
14-6 通讯录的录入与显示通讯录中的一条记录包含下述基本信息:朋友的姓名、出生日期、性别、固定电话号码、移动电话号码。 本题要求编写程序,录入N条记录,并且根据要求显示任意某条记录。
0a1⋯an−1)变换为(an−m⋯an−1a0a1⋯an−m−1)(最后m个数循环移至最前面的m个15-8 十进制转换二进制要求实现一个函数,将正整数n转换为二进制后输出。
二 设计思路:
11-8 螺旋方阵 所谓“螺旋方阵”:实现方法这 :这一题最关键的是数字在数组中存放的位置,用到for循环来控制数字的位置,通过for循环的连用来控制数字出现的位置。12-8 删除重复字符本:实现方法:先对输入的字符进行排序,让后将排好序的字符进行比较相同的字符只取一放入新的数组中,从而达到字符删除的目的。
13-6 数组循环右移:
实现方法:利用三层for循环来控制,最外层循环来控制循环往后移动的位数,第二层循环控制每位的移动,最内层循环用来控制循环后新数组最开始那位是多少。
14-6 通讯录的录入与显示
实现方法:利用结构体实现通讯录里面信息的存储,再利用for循环对信息进行输入,定义数组控制编号。
15-8 十进制转换二进制:
利用递归的方法解决,如果数字为1或者0,直接输出该数字,如果数字不是这两个数字则继续调用该函数。
三.源程序11-8 螺旋方阵 for(i=0;i<(n+1)/2;i++) { for(j=i;j<(n-i);j++) a[i][j]=s++; for(j=i+1;j<(n-i);j++) a[j][n-i-1]=s++; for(j=n-i-2;j>=i;j--) a[n-i-1][j]=s++; for(j=n-i-2;j>=(i+1);j--) a[j][i]=s++; }12-8 删除重复字符 for(j=0;j<c;j++){ min=j; for(i=j+1;i<c;i++) if(str[min]>str[i]) min=i; t=str[min]; str[min]=str[j]; str[j]=t; } /*以上是用于对字符串的排序,根据ascii码的大小进行调整*/ for(i=0;i<c;i++){ for(j=i;j<c;j++){ if(((' '<=str[j]&&str[j]<='~'))&&(str[j]==str[i])){ str_pr[k]=str[j]; for(int x=0;x<c;x++){ if(str_pr[k]==str[x]){ str[x]=0; } } k++; } } } /*去除排好字符组中的重复字符,并带入新的str_pr字符组*/ for(i=0;i<k;i++){ printf("%c",str_pr[i]); }13-6 数组循环右移 for(i=0;i<m;i++) //移动次数 { temp=a[n-1]; //保存最后一位数 for(k=n-1;k>=0;k--) { a[k]=a[k-1]; //向后移动 if(k==0) { a[k]=temp; } } }
14-6 通讯录的录入与显示
struct friends{ char name[20]; char birthday[20]; char sex[20]; char tel[20]; char sel[20];}f[10];int main(){ int n,k,i,a[20]; scanf("%d",&n); for(i=0;i<n;i++) scanf("%s %s %s %s %s",f[i].name,f[i].birthday,f[i].sex,f[i].tel,f[i].sel); scanf("%d",&k); for(i=0;i<k;i++) scanf("%d",&a[i]); for(i=0;i<k;i++) { if(a[i]>=0&&a[i]<n) printf("%s %s %s %s %s\n",f[a[i]].name,f[a[i]].tel,f[a[i]].sel,f[a[i]].sex,f[a[i]].birthday); else printf("Not Found\n"); } return 0;}
15-8 十进制转换二进制
void dectobin( int n ){ int t; if(n==0||n==1) printf("%d",n%2); else { t=n; dectobin(n=n/2); printf("%d",t%2); }}
四.遇到的问题及解决方法,心得体会对for循环的使用还是有些生硬,多级for循环的使用就不太会,对结构体的定义使用还有一些模糊,,感觉对知识的熟练程度还不够。
转载于:https://www.cnblogs.com/luomeili/p/8330149.html
