C语言数组下标是从0开始的,而strlen返回的是字符的个数,当你输入1个字符的时候,strlen返回的是1,而t[1]是'\0',你总不想在排序后,总把'\0'放在第一个吧,减1后指向最后一个字符会避免这种情况
创新互联专注为客户提供全方位的互联网综合服务,包含不限于成都做网站、成都网站建设、兰坪网络推广、重庆小程序开发、兰坪网络营销、兰坪企业策划、兰坪品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联为所有大学生创业者提供兰坪建站搭建服务,24小时服务热线:028-86922220,官方网址:www.cdcxhl.com
# includestdio.h
double jia(double x, double d)
{
double s;
s = x+d;
return s;
}
double jian(double x, double d)
{
double s;
s = x-d;
return s;
}
double cheng(double x, double d)
{
double s;
s = x*d;
return s;
}
double chu(double x, double d)
{
double s;
s = x/d;
return s;
}
int main(void)
{
double i, j, k;
char t;
k = 0;
printf("请输入要计算什么运算“+”“-”“*”“/”\n");
scanf("%c", t);
if(t == '+')
{
printf("请输入要相加的两个数\n");
scanf("%lf %lf", i, j);
k = jia(i, j);
printf("这两个数相加为%6.2lf\n", k);
}
else if(t == '-')
{
printf("请输入要相减的两个数\n");
scanf("%lf %lf", i, j);
k = jian(i, j);
printf("这两个数相减为%6.2lf\n", k);
}
else if(t == '*')
{
printf("请输入要相*的两个数\n");
scanf("%lf %lf", i, j);
k = cheng(i, j);
printf("这两个数相*为%6.2lf\n", k);
}
else if(t == '/')
{
printf("请输入要相/的两个数\n");
scanf("%lf %lf", i, j);
k = chu(i, j);
printf("这两个数相/为%6.2lf\n", k);
}
else
{
printf("对不起目前只支持“+”“-”“*”“/”\n");
}
return 0;
}
我们一行一行分析:
for (x = 5; x 0; x--) //从x=5开始,当x0的值为false时停止循环。每次循环后x自减。
if (x-- 5) printf("%d", x); //x--的值就等于x,也就是说第一次是不执行的。这个语句同时也会将x自减。
else printf("%d", x++); //x++的值也等于x,但同时也会将x自增。第一次会执行这个语句,输出为x-1(等于4),因为在判断语句中x自减了。
所以,第一轮输出为4。
第二轮,x因为for循环自减了,此时x-- 5也已满足,又因为在上一轮循环中加1,因此输出4+1-1-1=2;
第三轮与第二轮相似,不同之处在于没有执行printf("%d", x++),因此x的值减2,输出1