C语言第9次作业
1.编写函数判断用户输入的字符是否是对称的字符串(即顺读和倒读都一样的字符串)。例如“XYZYX”和“xyzzyx”都是对称的。
#include<stdio.h> int main() { char str[100]; int i=0,a,b,j,k; gets(str); while(str[i]!='\0') i++; if(i%2==0) { a=i/2-1;b=i/2; } else { a=i/2-1;b=i/2+1; } for(j=a,k=b;j>=0,k<=i;j--,k++) { if(str[j]!=str[k]) break; } if(k==i+1) printf("Yes\n"); else printf("No.\n"); }
2. 编写函数用冒泡排序法将用户输入的若干个数(或学生姓名)按升序排序。
#include <stdio.h> #include <string.h> void f1() { char a[100]; int length,j,i,temp; printf("请输入:"); scanf("%s",a); length=strlen(a); for(j=0;j<length;j++) { for(i=length-1;i>0;i--) { if(a[i]<a[i-1]) { temp=a[i]; a[i]=a[i-1]; a[i-1]=temp; } } } printf("将其升序排序为:"); for(i=0;i<length;i++) printf("%c",a[i]); } int main() { f1(); return 0; }
3. 编写函数用选择排序法将用户输入的若干个数(或学生姓名)按升序排序。
#include<stdio.h> int max(int a[]) { int i,j,t; for(i=0;i<10;i++) for(j=i+1;j<10;j++) if (a[i]>a[j]) { t=a[i]; a[i]=a[j]; a[j]=t; } } int main() { int a[10],i; printf("输入十个数字:"); for(i=0;i<10;i++) scanf("%d",&a[i]); max(a); for(i=0;i<10;i++) printf("%d ",a[i]); return 0; }
4. 编写函数用插入排序法将用户输入的若干个数(或学生姓名)按升序排序。
#include<stdio.h> int main() { int a[100]; int i,temp,j; printf("请输入:"); scanf("%d",a); for(i=1;i<100;i++) { temp=a[i]; j=i-1; while(j>=0&&temp<a[j]) { a[j*1]=a[j]; j--; } a[j*1]=temp } printf("升序排序为:") }
我尽力了,真的。