C语言改错:输入若干个正整数,判断每个数从高位到低位各位数字是否按值从小到大排列.输入若干个正整数,判断每个数从高位到低位各位数字是否按值从小到大排列.如输入:13457则输出:13457
来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/22 14:19:45
C语言改错:输入若干个正整数,判断每个数从高位到低位各位数字是否按值从小到大排列.输入若干个正整数,判断每个数从高位到低位各位数字是否按值从小到大排列.如输入:13457则输出:13457
C语言改错:输入若干个正整数,判断每个数从高位到低位各位数字是否按值从小到大排列.
输入若干个正整数,判断每个数从高位到低位各位数字是否按值从小到大排列.
如输入:13457则输出:13457 yes
如输入:
14357则输出:14357 No
想问一下有那里不对啊……
#include
int fun(int m);
int main(void)
{ int n;
scanf("%d",&n);
while(n>0)
{
if(fun(n)=1)
printf("%d yes\n",n);
else
printf("%d
No\n",n);
scanf("%d",&n);
}
return 0;
}
int fun(int m)
{ int k;
k=m/10;
while(m);
if(m%10/10>k)
return 0;
else
{ m=m/10;
k=m%10;
}
return 1;
}
int fun(int m)
{ int k;
k=m%10;
while(m);
if(m/10%10>k)
return 0;
else
{ m=m/10;
k=m%10;
}
return 1;
}
要是子函数改成这样对吗?
C语言改错:输入若干个正整数,判断每个数从高位到低位各位数字是否按值从小到大排列.输入若干个正整数,判断每个数从高位到低位各位数字是否按值从小到大排列.如输入:13457则输出:13457
if(fun(n)=1)改为if(fun(n)==1),细心啊.
错了这个,还有很多问题.逻辑有严重问题.
建议重新写一个,把数字当成字符看,判断前一个字符是不是大于等于后一个字符.
上面的仍旧不对,我已经尽量少改了,有些地方不是很规范,但楼主应该是新手,我就不纠正了,不然楼主会混淆的.
#include <stdio.h>int fun(int m);
int main(){
\x09int n;
\x09scanf("%d",&n);
\x09while(n>0){
\x09\x09if(fun(n)==1)//这里要用两个等于,不是一个.不然就变成赋值了
\x09\x09\x09printf("%d yes\n",n);
\x09\x09else
\x09\x09\x09printf("%d No\n",n);
scanf("%d",&n);
\x09}
return 0;
}
int fun(int m){
\x09int k;
\x09k=m/10;
\x09while(m){
\x09\x09if(m%10<k%10){//每个都去最后一位,从小到大是小于不是大于
\x09\x09\x09return 0;
\x09\x09}else{
\x09\x09\x09m=m/10;
\x09\x09\x09k=m/10;//向前移位应用/而不是%
\x09\x09}
\x09}
\x09return 1;
}