复试编程训练五

比眉伴天荒 2023-07-17 04:44 128阅读 0赞

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

  1. #include <stdio.h>
  2. int main()
  3. {
  4. float score;
  5. scanf("%f",&score);
  6. while(score<0||score>100)
  7. scanf("%f",&score);
  8. switch((int)(score/10))
  9. {
  10. case 10:
  11. case 9:
  12. printf("A");
  13. break;
  14. case 8:
  15. printf("B");
  16. break;
  17. case 7:
  18. printf("C");
  19. break;
  20. case 6:
  21. printf("D");
  22. break;
  23. case 5:
  24. case 4:
  25. case 3:
  26. case 2:
  27. case 1:
  28. case 0:
  29. printf("E");
  30. break;
  31. }
  32. printf("\n");
  33. return 0;
  34. }

运行结果:

20200320153439471.PNG

42.已有一个已排好序的数组,输入一个数要求按原来排序的规律将它插入数组中。

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

运行结果:

20200320154245583.PNG

43.输出以下杨辉三角形(10行)

1

1 1

1 2 1

1 3 3 1

1 4 6 4 1

1 5 10 10 5 1

  1. #include <stdio.h>
  2. #define N 10
  3. int main()
  4. {
  5. int i,j,a[N][N];
  6. for(i=0; i<N; i++)
  7. {
  8. a[i][0]=1; //第一列为1
  9. for(j=1; j<=i; j++)
  10. {
  11. if(i>j) //其它值由计算得出
  12. a[i][j]=a[i-1][j]+a[i-1][j-1];
  13. else
  14. a[i][j]=1; //每行最后一位为1
  15. }
  16. }
  17. for(i=0; i<N; i++) //打印杨辉三角
  18. {
  19. for(j=0; j<=i; j++)
  20. printf("%d ",a[i][j]);
  21. printf("\n");
  22. }
  23. printf("\n");
  24. return 0;
  25. }

运行结果:

20200320163248313.PNG

44.找出二维数组中的鞍点,即该位置上的元素在该行为最大,在该列为最小,也可能没有鞍点。

  1. #include <stdio.h>
  2. #define N 3
  3. int main()
  4. {
  5. int i,j,k,a[N][N],max,maxj,flag;
  6. for(i=0; i<N; i++)
  7. for(j=0; j<N; j++)
  8. scanf("%d",&a[i][j]);
  9. for(i=0; i<N; i++)
  10. {
  11. max=a[i][0]; //找本行最大
  12. maxj=0;
  13. for(j=0; j<N; j++)
  14. {
  15. if(a[i][j]>max)
  16. {
  17. max=a[i][j];
  18. maxj=j;
  19. }
  20. }
  21. flag=1; //判断是否为本列最小
  22. for(k=0; k<N; k++)
  23. if(a[k][maxj]<max)
  24. {
  25. flag=0;
  26. continue;
  27. }
  28. if(flag)
  29. {
  30. printf("a[%d][%d]=%d\n",i,maxj,a[i][maxj]);
  31. break;
  32. }
  33. }
  34. if(!flag)
  35. printf("It is not exist!");
  36. printf("\n");
  37. return 0;
  38. }

运行结果:

20200320161355144.PNG

45.折半查找(15个数由小到大放到数组中,查一个数)

  1. #include <stdio.h>
  2. int main()
  3. {
  4. int a[15]= {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15},i,j,mid,num;
  5. scanf("%d",&num);
  6. i=0;
  7. j=14;
  8. while(i<=j)
  9. {
  10. mid=(i+j)/2;
  11. if(num==a[mid])
  12. {
  13. printf("在第%d个位置",mid+1);
  14. break;
  15. }
  16. else if(num<a[mid])
  17. j=mid+1;
  18. else
  19. i=mid+1;
  20. }
  21. if(i>j)
  22. printf("not exist!");
  23. printf("\n");
  24. return 0;
  25. }

运行结果:

20200320155029556.PNG

46.输出以下图案

****

****

****

****

  1. #include <stdio.h>
  2. int main()
  3. {
  4. for(int i=0; i<5; i++)
  5. {
  6. for(int j=0; j<i; j++)
  7. printf(" ");
  8. printf("****\n");
  9. }
  10. printf("\n");
  11. return 0;
  12. }

运行结果:

20200320155749212.PNG

47.有一篇文章,共有3行文字,每行80个字符,要求分别统计出其中英文大写字母,小写字母,数字,空格及其他字符的个数。

  1. #include <stdio.h>
  2. int main()
  3. {
  4. char word[3][100];
  5. int i,j,a,b,c,d,e;
  6. a=b=c=d=e=0;
  7. for(i=0; i<3; i++)
  8. {
  9. gets(word[i]);
  10. for(j=0; j<80&&word[i][j]!='\0'; j++)
  11. {
  12. if(word[i][j]>='A'&&word[i][j]<='Z') //大写字母个数
  13. a++;
  14. else if(word[i][j]>='a'&&word[i][j]<='z') //小写字母个数
  15. b++;
  16. else if(word[i][j]>='0'&&word[i][j]<='9') //数字个数
  17. c++;
  18. else if(word[i][j]==' ') //空格个数
  19. d++;
  20. else //其他字符个数
  21. e++;
  22. }
  23. }
  24. printf("大写字母个数:%d\n小写字母个数:%d\n数字个数:%d\n空格个数:%d\n其他字符个数:%d",a,b,c,d,e);
  25. printf("\n");
  26. return 0;
  27. }

运行结果:

20200321131406181.PNG

48.译密码 A->Z a->z

B->Y b->y

C->X c->x

第i个译成(26-i+1)个字母,非字母字符不变,输出密码和原文。

  1. #include <stdio.h>
  2. int main()
  3. {
  4. char a[10],b[10];
  5. int i;
  6. gets(a);
  7. for(i=0; a[i]!='\0'; i++)
  8. {
  9. if(a[i]>='A'&&a[i]<='Z')
  10. b[i]=155-a[i]; //'A'+'Z'=155
  11. else if(a[i]>='a'&&a[i]<='z')
  12. b[i]=219-a[i]; //'a'+'z'=219
  13. else
  14. b[i]=a[i];
  15. }
  16. b[i]=0;
  17. printf("密码为:\n");
  18. puts(a);
  19. printf("译后原文:\n");
  20. puts(b);
  21. printf("\n");
  22. return 0;
  23. }

运行结果:

2020032113230960.PNG

49.将两个字符串连接起来

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

运行结果:

20200321130502408.PNG

50.将两个字符串s1和s2相比较:若s1>s2,输出一个正数;s1=s2,输出0;s1<s2,输出一个负数。

  1. #include <stdio.h>
  2. int main()
  3. {
  4. int i=0,num;
  5. char s1[10],s2[10];
  6. gets(s1);
  7. gets(s2);
  8. while(s1[i]==s2[i]&&s1[i]!='\0')
  9. i++;
  10. if(s1[i]==s2[i])
  11. num=0;
  12. else
  13. num=s1[i]-s2[i];
  14. printf("%d",num);
  15. printf("\n");
  16. return 0;
  17. }

运行结果:

20200321133106387.PNG

发表评论

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

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

相关阅读

    相关 复试编程训练

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