专升本C语言试题分析(五)

专升本C语言试题分析(五)

前言

尝试对C语言专升本题目进行分析,有不对的地方欢迎指正,在边学习边成长!

一、题目

编写程序,从键盘输入一个字符串,判断其是不是回文,若是则输出” YES” ,否则输出” NO” 。 ( 回文是指字符串正向、 反向的拼写都一样。 例“ abcba” 、 “ qwertrewq” 是回文, “ abcdef” 、 “ bagpap” 不是回文) 。

二、分析步骤

函数内部的编写

代码如下(示例):


    gets(str);
    n = strlen(str);
    for(i = 0;i<n/2;i ++ ){    //比到一半就不比了
      if(str[i] != str[n-1-i])     //比较两端的字符
	  { 
	     printf("No!\n");
	     break;                         //两端字符串比较不相时跳出循环(不是回文)
	  }
	}

总编写

代码如下(示例):

#include <stdio.h>
#include <string.h>
int main()     
{
    int i,n;
    char str[80];
    gets(str);
    n = strlen(str);
    for(i = 0;i<n/2;i ++ ){    //比到一半就不比了
      if(str[i] != str[n-1-i])     //比较两端的字符
	  { 
	     printf("No!\n");
	     break;                         //两端字符串比较不相时跳出循环(不是回文)
	  }
	}
      if(i == n/2)
	printf("Yes!\n");
	return 0;
}

总结

以上就是今天要讲的内容,思路大致是,使用getchar()拿到一个字符串,然后测量这个字符串的长度,在知道长度n的情况下,通过循环比较对称位置的字符是否一样,两端字符串比较不相时跳出循环(不是回文),如果i等于n/2,那么代表这个字符串是回文。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
【程序1】 题目:有1,2,3,4个数字,能组成多少个互不相同且无重复数字的三位数都是多少 1.程序分析:可填在百位,十位,个位的数字都是1,2,3,4.组成所有的排列后再去 掉不满足条件的排列. 2.程序源代码: main() { int i,j,k; printf("\n"); for(i=1;i<5;i++) /*以下为三重循环*/ for(j=1;j<5;j++) for (k=1;k<5;k++) { if (i!=k&&i!=j&&j!=k) /*确保i,j,k三位互不相同*/ printf("%d,%d,%d\n",i,j,k); } } ============================================================== 【程序2】 题目:企业发放的奖金根据利润提成.利润(i)低于或等于10万元时,奖金可提10%;利润高 于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提 成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于 40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于 100万元时,超过100万元的部分按1%提成,从键盘输入当月利润i,求应发放奖金总数 1.程序分析:请利用数轴来分界,定位.注意定义时需把奖金定义成长整型. 2.程序源代码: main() { long int i; int bonus1,bonus2,bonus4,bonus6,bonus10,bonus; scanf("%ld",&i); bonus1=100000*0.1;bonus2=bonus1+100000*0.75; bonus4=bonus2+200000*0.5; bonus6=bonus4+200000*0.3; bonus10=bonus6+400000*0.15; if(i<=100000) bonus=i*0.1; else if(i<=200000) bonus=bonus1+(i-100000)*0.075; else if(i<=400000) bonus=bonus2+(i-200000)*0.05; else if(i<=600000) bonus=bonus4+(i-400000)*0.03; else if(i<=1000000) bonus=bonus6+(i-600000)*0.015; else bonus=bonus10+(i-1000000)*0.01; printf("bonus=%d",bonus); }

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HairyFellow

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值