第九次作业(有好多都彻底不懂了)
第一个:题目出得很有意思,很好玩。把首尾的表示方法理解了,还将if语句熟练运用,加深了对if语句的了解。
#include<stdio.h> #include<string.h> void check(char str[]) { int i,len; len=strlen(str); for(i=0;i<len;i++) { if(str[i]!=str[len-1-i]) { printf("输入的%s不是对称的字符串;\n",str); return 0; } } printf("输入的%s是对称的字符串;\n",str); } int main() { char str[100]; printf("输入要判断的字符串:"); scanf("%s",str); check(str); return 0; }
作业2:就是直接按照老师上课的意思写,上课听懂了,所以就很好理解。唯一难一点的就是将字母变成字符串,还是不是很理解他的写法,用了很长时间去了解。
#include <stdio.h> #include <string.h> void bubble_sort_number(int num[],int max) { int i,j,temp; for(i=0;i<max-1;i++) { for(j=0;j<max-1-i;j++) { if(num[j]>num[j+1]) { temp=num[j]; num[j]=num[j+1]; num[j+1]=temp; } } } printf("升序排序结果为:"); for(i=0;i<max;i++) printf("%d ",num[i]); } void bubble_sort_string(char str[][100],int max) { int i,j; char temp[100]; for(i=0;i<max-1;i++) { for(j=0;j<max-1-i;j++) { if(strcmp(str[j],str[j+1])>0) { strcpy(temp,str[j]); strcpy(str[j],str[j+1]); strcpy(str[j+1],temp); } } } printf("升序排序结果为:"); for(i=0;i<max;i++) printf("%s ",str[i]); } int main() { int num[100],select,i,n; char str[100][100]; printf("输入1进行输入若干个数的排序功能,输入2进行输入若干学生姓名的排序功能\n"); scanf("%d",&select); printf("输入数量:"); scanf("%d",&n); if(select==1) { printf("依次输入%d个数字,用空格隔开:",n); for(i=0;i<n;i++) scanf("%d",&num[i]); bubble_sort_number(num,n); } if(select==2) { printf("依次输入%d个姓名,用空格隔开:",n); for(i=0;i<n;i++) scanf("%s",str[i]); bubble_sort_string(str,n); } return 0; }
作业3:上课虽然讲的不多,但是看上去跟冒泡的意思很像。然后我就迷迷瞪瞪的写了一下下,好像还能运行,那就交了吧。
#include <stdio.h> #include <string.h> void select_sort_number(int num[],int max) { int i,j,k,temp; for(i=0;i<max-1;i++) { k=i; for(j=i+1;j<max;j++) { if(num[k]>num[j]) { temp=num[k]; num[k]=num[j]; num[j]=temp; } } } printf("升序排序结果为:"); for(i=0;i<max;i++) printf("%d ",num[i]); } void select_sort_string(char str[][100],int max) { int i,j,k; char temp[100]; for(i=0;i<max-1;i++) { k=i; for(j=i+1;j<max;j++) { if(strcmp(str[k],str[j])>0) { strcpy(temp,str[k]); strcpy(str[k],str[j]); strcpy(str[j],temp); } } } printf("升序排序结果为:"); for(i=0;i<max;i++) printf("%s ",str[i]); } int main() { int num[100],select,i,n; char str[100][100]; printf("输入1进行输入若干个数的排序功能,输入2进行输入若干学生姓名的排序功能\n"); scanf("%d",&select); printf("输入数量:"); scanf("%d",&n); if(select==1) { printf("依次输入%d个数字,用空格隔开:",n); for(i=0;i<n;i++) scanf("%d",&num[i]); select_sort_number(num,n); } if(select==2) { printf("依次输入%d个姓名,用空格隔开:",n); for(i=0;i<n;i++) scanf("%s",str[i]); select_sort_string(str,n); } return 0; }
作业4:这个求助了一个大神,表示我还是没有怎么理解。(ps:第五个更不会,跟张照行一样,没看懂百度百科。他也说他讲不明白,无能为力了。)好像运行有问题。我尽力了。。。。
#include <string.h> void insert_sort_number(int num[],int number,int max) { int i,j; for(i=0;i<max;i++) if(number<num[i]) break; for(j=max-1;j>=i;j--) num[j+1]=num[j]; num[i]=number; printf("升序排序结果为:"); for(i=0;i<max;i++) printf("%d ",num[i]); } void insert_sort_string(char str[][100],char string[100],int max) { int i,j; for(i=0;i<max;i++) if(strcmp(string,str[i])<0) break; for(j=max-1;j>=i;j--) strcpy(str[j+1],str[j]); strcpy(str[i],string); printf("升序排序结果为:"); for(i=0;i<max;i++) printf("%s ",str[i]); } int main() { int num[100],select,i,n,insert_num; char str[100][100],insert_str[100]; printf("输入1进行输入若干个数的排序功能,输入2进行输入若干学生姓名的排序功能\n"); scanf("%d",&select); printf("输入数量:"); scanf("%d",&n); if(select==1) { printf("依次按照升序顺序输入%d个数字,用空格隔开:",n); for(i=0;i<n;i++) scanf("%d",&num[i]); printf("输入要插入的数字:"); scanf("%d",&insert_num); insert_sort_number(num,insert_num,n+1); } if(select==2) { printf("依次按照升序顺序输入%d个姓名,用空格隔开:",n); for(i=0;i<n;i++) scanf("%s",str[i]); printf("输入要插入的姓名:"); scanf("%s",insert_str); insert_sort_string(str,insert_str,n+1); } return 0; }