复试编程训练二

灰太狼 2023-07-16 13:59 115阅读 0赞

11.冒泡法排序

  1. #include <stdio.h>
  2. int main()
  3. {
  4. int i,j,temp;
  5. int a[10]= {1,3,5,7,2,4,6,8,9,10};
  6. for(i=0; i<9; i++)
  7. for(j=0; j<i; j++)
  8. {
  9. if(a[j]>a[j+1])
  10. {
  11. temp=a[j];
  12. a[j]=a[j+1];
  13. a[j+1]=temp;
  14. }
  15. }
  16. for(i=0; i<10; i++)
  17. printf("%d ",a[i]);
  18. printf("\n");
  19. return 0;
  20. }

运行结果:
20200318210553156.PNG

12.3*4矩阵,编程求出其中值最大的那个元素的值,以及其所在的行号和列号

  1. #include <stdio.h>
  2. int main()
  3. {
  4. int i,j,max,maxi=0,maxj=0;
  5. int a[3][4]= {
  6. {1,2,3},{6,5,4},{9,7,8}};
  7. max=a[0][0];
  8. for(i=0; i<3; i++)
  9. for(j=0; j<4; j++)
  10. {
  11. if(a[i][j]>max)
  12. {
  13. max=a[i][j];
  14. maxi=i;
  15. maxj=j;
  16. }
  17. }
  18. printf("max=%d,maxi=%d,maxj=%d\n",max,maxi,maxj);
  19. return 0;
  20. }

运行结果:

20200318211154847.PNG

13.输入一行字符,统计其中有多少个单词,单词之间用空格分开

  1. #include <stdio.h>
  2. int main()
  3. {
  4. char string[81];
  5. int i,num=0,word=0; //一开始word=0,相当于加上第一个词
  6. char c;
  7. gets(string);
  8. for(i=0; (c=string[i])!='\0'; i++)
  9. {
  10. if(c==' ') //遇到空格时,相当于一个单词的开始
  11. word=0;
  12. else if(word==0) //空格的下一个字符,即本单词的第一个字符,进行num++
  13. {
  14. word=1;
  15. num++;
  16. }
  17. }
  18. printf("%d words",num); //num为单词个数
  19. printf("\n");
  20. return 0;
  21. }

运行结果:
20200319130111939.PNG

14.有3个字符串,要求找出其中的最大者

  1. #include <stdio.h>
  2. #include <string.h>
  3. int main()
  4. {
  5. char str[3][10],temp[10];
  6. for(int i=0; i<3; i++)
  7. gets(str[i]);
  8. if(strcmp(str[0],str[1])>0)
  9. strcpy(temp,str[0]);
  10. else
  11. strcpy(temp,str[1]);
  12. if(strcmp(str[1],temp)>0)
  13. strcpy(temp,str[1]);
  14. printf("the largest string is:%s\n",temp);
  15. return 0;
  16. }

运行结果:

20200318211933462.PNG

15.输入4个整数,找出其中最大的数

  1. #include <stdio.h>
  2. int max1(int a,int b)
  3. {
  4. if(a>b)
  5. return a;
  6. else
  7. return b;
  8. }
  9. int main()
  10. {
  11. int a,b,c,d,m;
  12. scanf("%d %d %d %d",&a,&b,&c,&d);
  13. m=max1(a,b);
  14. m=max1(m,c);
  15. m=max1(m,d);
  16. printf("max=%d\n",m);
  17. return 0;
  18. }

运行结果:
20200318212649536.PNG

16.5个学生,第5个比第四个大2岁,第四个比第三个大2岁,…,第一个为10岁。问第五个多大。递归实现。

  1. #include <stdio.h>
  2. int f(int n)
  3. {
  4. if(n==1)
  5. return 10;
  6. else
  7. return f(n-1)+2;
  8. }
  9. int main()
  10. {
  11. int n;
  12. scanf("%d",&n);
  13. printf("第%d个学生:%d岁\n",n,f(n));
  14. printf("\n");
  15. return 0;
  16. }

运行结果:

20200319130647156.PNG

17.用递归求n!

  1. #include <stdio.h>
  2. int main()
  3. {
  4. int i,n,sum=1;
  5. scanf("%d",&n);
  6. for(i=1; i<=n; i++)
  7. sum=sum*i;
  8. printf("%d!=%d\n",n,sum);
  9. return 0;
  10. }
  11. #include <stdio.h>
  12. int f(int n)
  13. {
  14. if(n==0||n==1)
  15. return 1;
  16. else
  17. return f(n-1)*n;
  18. }
  19. int main()
  20. {
  21. int n;
  22. scanf("%d",&n);
  23. printf("%d!=%d\n",n,f(n));
  24. printf("\n");
  25. return 0;
  26. }

运行结果:

20200318213132807.PNG

18.汉诺塔问题

  1. #include <stdio.h>
  2. void hanoi(int n,char one,char two,char three)
  3. {
  4. if(n==1)
  5. printf("%c-->%c\n",one,three);
  6. else
  7. {
  8. hanoi(n-1,one,three,two);
  9. printf("%c-->%c\n",one,three);
  10. hanoi(n-1,two,one,three);
  11. }
  12. }
  13. int main()
  14. {
  15. int m;
  16. scanf("%d",&m);
  17. hanoi(m,'A','B','C');
  18. printf("\n");
  19. return 0;
  20. }

运行结果:

20200319134827871.PNG

19.选择排序

  1. #include <stdio.h>
  2. int main()
  3. {
  4. int a[10]= {2,3,4,7,6,5,1,8,10,9};
  5. int i,j,k,temp;
  6. for(i=0; i<9; i++)
  7. {
  8. k=i;
  9. for(j=i+1; j<10; j++)
  10. {
  11. if(a[j]<a[k])
  12. k=j;
  13. }
  14. if(k!=i)
  15. {
  16. temp=a[i];
  17. a[i]=a[k];
  18. a[k]=temp;
  19. }
  20. }
  21. for(i=0; i<10; i++)
  22. printf("%d ",a[i]);
  23. printf("\n");
  24. return 0;
  25. }

运行结果:

20200318213624627.PNG

20.有一个字符串,内有若干字符,现输入一个字符,要求程序将字符串中的该字符删去。

  1. #include <stdio.h>
  2. void delete_string(char str[],char ch)
  3. {
  4. int i,j;
  5. for(i=0,j=0; str[i]!='\0'; i++)
  6. {
  7. if(str[i]!=ch)
  8. str[j++]=str[i];
  9. }
  10. str[j]='\0';
  11. }
  12. int main()
  13. {
  14. char str[20],ch;
  15. gets(str);
  16. ch=getchar();
  17. delete_string(str,ch);
  18. printf("%s",str);
  19. printf("\n");
  20. return 0;
  21. }

运行结果:

20200319131811180.PNG

发表评论

表情:
评论列表 (有 0 条评论,115人围观)

还没有评论,来说两句吧...

相关阅读

    相关 复试编程训练

    111.从键盘输入一个字符串,将其中的小写字母全部转换成大写字母,然后输出到一个磁盘文件"file.txt"中保存,输入的字符串以“!”结束。 include <

    相关 复试编程训练

    41.给一个百分制成绩,要求输出等级‘A’,‘B’,‘C’,‘D’,‘E’。90分以上为‘A’,80~89分为‘B’,70~79分为‘C’,60~69分为‘D’,60分以下为