第四章
5、#include “stdio.h”
main()
{char c;
int w,x,y,z;
w=x=y=z=0;
while((c=getchar())!=’\n’)
{if((c>’a’&&c<’z’)||(c>’A’&&c<’Z’))
w++;
else if (c==’’)
x++;
else if (c>’0’&&c<’9’)
y++;
else z++}
printf(“英文字母个数:%d\n”,w);
printf(“空格个数:%d\n”,x);
printf(“数字个数:%d\n”,y);
printf(“其他字母个数:%d\n”,z);}
第五章1.#include "stdio.h"
main()
{int a[11];
int i,j,t;
printf("input 10 number:\n");
for (i=1;i<11;i++)
scanf("%d",&a[i]);
printf("\n");
for (i=1;i<=9;i++)
for (j=1;j<=10-i;j++)
if (a[j] {t=a[j];a[j]=a[j+1];a[j+1]=t;} printf("the sorted number is:\n"); for (i=1;i<11;i++) printf("%4d",a[i]);} 2.#include "stdio.h" main() {int a[11],i,b; printf("imput 10 sorted number:\n"); for (i=0;i<10;i++) scanf("%d",&a[i]); printf("input an integer:\n"); scanf("%d",&b); for (i=9;i>=0&&a[i]>b;i--) a[i+1]=a[i]; a[i+1]=b; printf("sorted numbers:\n"); for (i=0;i<11;i++) printf("%5d",a[i]); } 5.#include "stdio.h" main() {int a[3][4],i,j,max,row,col; printf("input 3*4 matrix:\n"); for (i=0;i<3;i++) /*输入3*4矩阵*/ for (j=0;j<4;j++) scanf("%d",&a[i][j]); max=a[0][0]; row=0; col=0; for (i=0;i<3;i++) /*寻找矩阵中的最大值及其行列号*/ for (j=0;j<4;j++) if (max {max=a[i][j]; row=i, col=j;} printf("\n数组中最大的数是%d,其行号是%d,列号是%d\n",max,row,col);} 6.#define N 3 #define M 4 #include "stdio.h" main() {int a[N][M],i,j,k,max,row,col; printf("input %d*%d matrix: \n",N,M); for (i=0;i for (j=0;j scanf("%d",&a[i][j]); for (i=0;i {max=a[i][0]; row=i; col=0; for(j=1;j if (max {max=a[i][j]; col=j;} for (k=0;k if (a[k][col] break; if (k==N) /*得到鞍点*/ {printf("the point is %d,row=%d,col=%d\n",max,row,col);break;} } if (i==N) /*没有鞍点*/ printf("no point\n");} 8.#include "stdio.h" main() {int i,j,uppn,lown,dign,span,othn; /*uppn,lown,dign,span,othn分别存放英文大写字母、小写字母、数字、空格和其他字符的个数*/ char text[3][80]; uppn=lown=dign=span=othn=0; for(i=0;i<3;i++) {gets(text[i]); for(j=0;j<80&&text[i][j]!='\0';j++) {if(text[i][j]>='A'&&text[i][j]<='Z') uppn++; else if(text[i][j]>='a'&&text[i][j]<='z') lown++; else if(text[i][j]>='0'&&text[i][j]<='9') dign++; else if(text[i][j]==' ') span++; else othn++;} } for(i=0;i<3;i++) printf("%s\n",text[i]); printf("uppn=%d\n",uppn); printf("lown=%d\n",lown); printf("dign=%d\n",dign); printf("span=%d\n",span); printf("othn=%d\n",othn);} 9.#include "stdio.h" main() {int i,j; char str1[20],str2[20]; printf("input two strings:\n"); gets(str1); gets(str2); j=strlen(str1); /*求字符串1的长度*/ for (i=0;str2[i]!='\0';i++,j++) /*字符串合并*/ str1[j]=str2[i]; str1[j]='\0'; /*加上字符串结束标志*/ puts(str1);} 10.#include "stdio.h" main() {int i,n; char str1[20],str2[20]; printf("input two strings:(no more than 20 characters)\n"); gets(str1); gets(str2); n=strlen(str1) printf("%d\n",str1[i]-str2[i]); } 六:1.main() {int n; printf("input n(n>0):\n"); scanf("%d",&n); if (prime(n)) printf("%d is a sushu\n",n); else printf("%d is not a sushu\n",n);} int prime(int n) {int flag=1,i; for (i=2;i<=n/2&&flag==1;i++) if (n%i==0) flag=0; return(flag);} 2.#define N 3 convert(int array[3][3]) { int i,j,t; for (i=0;i for (j=i+1;j {t=array[i][j]; array[i][j]=array[j][i]; array[j][i]=t;} } main() {int i,j; int a[N][N]; printf("input a:\n"); for (i=0;i for (j=0;j scanf("%d",&a[i][j]); printf("Array a:\n"); for (i=0;i {for (j=0;j printf("%5d",a[i][j]); printf("\n");} convert(a); printf("a de zhuanzhi is:\n"); for (i=0;i {for (j=0;j printf("%5d",a[i][j]); printf("\n"); } } 3. #include #include main() {char str[100]; printf("input a string:\n") ; gets(str); inverse(str); printf("the reversed string is:%s\n",str); } inverse(char str[]) {char t; int i,j; for (i=0,j=strlen(str)-1;i { t=str[i]; str[i]=str[j]; str[j]=t; } } 4. #include concat(char str1[],char str2[]) { int i=0,j; while (str1[i]!='\0') i++; for (j=0;str2[j]!='\0';i++,j++) str1[i]=str2[j]; str1[i]='\0';} main() {char str1[100],str2[100]; gets(str1);gets(str2); concat(str1,str2); puts(str1);} 5. main() {char str[80]; printf("input a string (4 ge shu zi zi fu):\n"); scanf("%s",str); insert(str); printf("result is:\n%s\n",str); } insert(char str[]) {int i; for (i=strlen(str);i>0;i--) { str[2*i]=str[i]; str[2*i-1]=' ';} } 6. #include "stdio.h" int i,ndight,nwhite,nletter,nother; count(char str[]) { ndight=nwhite=nletter=nother=0; for (i=0;str[i]!='\0';i++) if (str[i]>='0'&&str[i]<='9') ndight++; else if ((str[i]>='A'&&str[i]<='Z')||(str[i]>='a'&&str[i]<='z')) nletter++; else if (str[i]==' ') nwhite++; else nother++; } main() {char text[80]; printf("input a string:\n"); gets(text); count(text); printf("ndight=%d,nletter=%d,nwhite=%d,nother=%d\n",ndight,nletter,nwhite,nother);} 7. #define N 10 #include sort(char str[]) {int i,j; char t; for (i=1;i for (j=0;j if (str[j]>str[j+1]) {t=str[j];str[j]=str[j+1] ;str[j+1]=t;}} main() {char str[N]; int i ; printf("Input 10 ge zi fu:\n"); gets(str); sort(str); printf("The sorted result:\n") ; for(i=0;i printf("%c",str[i]);} 8. #include #include #define N 10 void input_e(int num[],char name[N][8]) {int i; for (i=0;i { printf("input gong hao:"); scanf("%d",&num[i]); printf("input name:"); getchar(); gets(name[i]);} for (i=0;i printf("%5d%10s\n",num[i],name[i]);} void sort(int num[],char name[N][8]) /*选择法排序*/ {int i,j,min,temp1; char temp2[8]; for (i=0;i {min=i; for (j=i+1;j if (num[j] temp1=num[i]; strcpy(temp2,name[i]); num[i]=num[min]; strcpy(name[i],name[min]); num[min]=temp1; strcpy(name[min],temp2);} printf("the sorted result:\n"); for (i=0;i printf("%5d%10s\n",num[i],name[i]);} void search(int n,int num[],char name[N][8]) /*折半查找法*/ {int top,bott,mid,find; find=0; top=0; bott=N-1; if ((n find=-1; while ((find==0)&&(top<=bott)) {mid=(bott+top)/2; if (n==num[mid]) {find=1; printf("%d name is:%s\n",n,name[mid]);} else if (n bott=mid-1; else top=mid+1;} if ((find==-1)||(find==0)) printf("%d is not found.\n",n);} main() { int num[N],number,c,flag; char name[N][8]; input_e(num,name); sort(num,name); for (flag=1;flag;) {printf("please input chazhao de gonghao:"); /*输入查找的工号*/ scanf("%d",&number); search(number,num,name); printf("continue Y/N?"); /*是否继续查找*/ getchar(); c=getchar(); if (c=='N'||c=='n') flag=0;} } 9. #include "stdio.h" #define MAX 10 main() { char str[MAX]; char c; int i; i=0; printf("input number(16 jinzhi): "); /*输入一个十六进制的数*/ while((c=getchar())!='\n'&&i { str[i]=c; i++; } str[i]='\0'; printf("result is :%d\n",htod(str));} int htod(char s[]) {int i,n; n=0; for(i=0;s[i]!='\0';i++) {if (s[i]>='0'&&s[i]<='9') n=n*16+s[i]-'0'; if (s[i]>='a'&&s[i]<='f') n=n*16+s[i]-'a'+10; if (s[i]>='A'&&s[i]<='F') n=n*16+s[i]-'A'+10;} return(n);} 10. #define SW AP(a,b) t=a;a=b;b=t main() { int a,b,t; printf("input a,b:") ; scanf("%d,%d",&a,&b); SW AP(a,b); printf("result:a=%d,b=%d\n",a,b);} 11. #define SURPLUS(a,b) ((a)%(b)) main() {int a,b; printf("input a,b:"); scanf("%d,%d",&a,&b); printf("result is: %d\n",SURPLUS(a,b));} 12. main() {int a,b,c; printf("input a,b,c:"); scanf("%d,%d,%d",&a,&b,&c); printf("max=%d\n",max(a,b,c));} int max(int x,int y,int z) {int t; t=(x>y ? x : y); return(t>z?t:z);} #define MAX(x,y) ((x)>(y)?(x):(y)) main() {int a,b,c; printf("input a,b,c:"); scanf("%d,%d,%d",&a,&b,&c); printf("max=%d\n",MAX(MAX(a,b),c));} 13. #include "stdio.h" #define CHANGE 1 #define MAX 80 main() { char str[MAX]; int i; printf("input a string:\n"); gets(str); #if (CHANGE) { for (i=0;str[i]!='\0';i++) if (str[i]>='a'&&str[i]<'z'||str[i]>='A'&&str[i]<'Z') str[i]=str[i]+1; else if (str[i]=='z'||str[i]=='Z') str[i]=str[i]-25;} #endif printf("%s\n",str);} 七:1、main( ) { int a[10],i,temp,*p=a; printf("Please input array a:\n"); for(i=0;i<10;i++) scanf("%d",&a[i]); printf("array a:\n"); for(i=0;i<10;i++) printf("%4d",a[i]); for(i=0;i<5;i++) { temp=p[i]; p[i]=p[10-i-1]; p[10-i-1]=temp;} printf("\n Now array a:\n"); for(i=0;i<10;i++) printf("%4d",a[i]);} 2、main( ) { int a[3][3],*p,i,j; printf("please input matrix:\n"); for(i=0;i<3;i++) for(j=0;j<3;j++) scanf("%d",&a[i][j]); p=&a[0][0]; move(p); printf("\n Now matrix:\n"); for(i=0;i<3;i++) { for(j=0;j<3;j++) printf("%4d",a[i][j]); printf("\n");} } move(int *q) { int i,j,t; for(i=0;i<3;i++) for(j=i;j<3;j++) { t=*(q+3*i+j); *(q+3*i+j)=*(q+3*j+i); *(q+3*j+i)=t; } } 3、#include #include #include #include main( ) {int binary(); void insert(); char *temp,*ptr1[6]={"BASIC","DATA","PASCAL","SQL","USE"}; int i; ptr1[5]=malloc(20); printf("\n"); printf("original string:\n"); for(i=0;i<5;i++) printf("%s\n",ptr1[i]); printf("input search string:\n"); temp=malloc(20); gets(temp); i=binary(ptr1,temp,5); printf("i=%d\n",i); insert(ptr1,temp,5,i); printf("output strings:\n"); for(i=0;i<6;i++) printf("%s\n",ptr1[i]);} int binary(char *ptr[],char *str,int n) {int hig,low,mid; low=0; hig=n-1; if(strcmp(str,ptr[0])<0) return(0); if(strcmp(str,ptr[hig])>0) return(n); while(low<=hig) {mid=(low+hig)/2; if(strcmp(str,ptr[mid])<0) hig=mid-1; else if(strcmp(str,ptr[mid])>0) low=mid+1; else return(mid);} return(low);} void insert(char *ptr[],char *str,int n,int i) {int j; for(j=n;j>i;j--) strcpy(ptr[j],ptr[j-1]); strcpy(ptr[i],str);} 4、main( ) { int i; char *p[6],str[6][20]; for(i=0;i<6;i++) p[i]=str[i]; printf("Input 6 strings:\n"); for(i=0;i<6;i++) scanf("%s",p[i]); sort(p); printf("Now the strings:\n"); for(i=0;i<6;i++) printf("%s\n",p[i]);} sort(char *q[ ]) { int i,j; char *t; for(i=0;i<5;i++) for(j=0;j<5-i;j++) if(strcmp(*(q+j),*(q+j+1))>0) { t=*(q+j); *(q+j)=*(q+j+1); *(q+j+1)=t;} } 5、main( ) { int m; char str1[20],str2[20],*p1,*p2; printf("please input two strings:\n"); scanf("%s",str1); scanf("%s",str2); p1=str1; p2=str2; m=stringcmp(p1,p2); printf("result is %d:\n",m);} stringcmp(char *p1,char *p2) { int i=0; while(*(p1+i)==*(p2+i)) if(*(p1+(i++))=='\0') return(0); return((*p1+i)-*(p2+i));} 6、main( ) { char str1[30],str2[30],str3[100]; int i=0,j=0,k=0; printf("please input two strings:\n"); scanf("%s",str1); scanf("%s",str2); while(str1[i]!='\0' && str2[j]!='\0') { str3[k++]=str1[i++]; str3[k++]=str2[j++];} while(str1[i]!='\0') str3[k++]=str1[i++]; while(str2[j]!='\0') str3[k++]=str2[j++]; str3[k]='\0'; printf("\n%s\n",str3);} 八:1、struct complex { float x; /*实部*/ float y; /*虚部*/} main() { struct complex c1={5,3},c2={2,6}; float t1,t2; t1=c1.x*c2.x - c1.y*c2.y; t2=c1.x*2.y + c1.y*c2.x; printf(“The two complexs product is:”); printf(“%.2f%+.2f i\n”,t1,t2); } 2. struct student {char name[10]; /*姓名*/ int number; /*学号*/ float x; /*成绩*/ float y; /*成绩*/ } main( ) {struct student s[45]; int i; void max(); void average(); void sort(); for (i=0;i<45;i++) scanf(“%s%d%f%d”,s[i].name,&s[i].number,&s[i].x,&s[i].y); /*输入学生的姓名、学号、两门课程成绩*/ max(s,45); average(s,45); sort(s,45); } void max(struct student *a,int n) { float temp; char na[10]; int i ,num; temp=a[0].x+a[0].y;