| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 575 人关注过本帖
标题:请教高手 一道三级考试的题目 谢谢啦 研究好久了
只看楼主 加入收藏
guima
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2011-9-9
结帖率:0
收藏
已结贴  问题点数:20 回复次数:9 
请教高手 一道三级考试的题目 谢谢啦 研究好久了
是关于四位数问题的
题目是:200个四位数,若一个四位数的千位上的数值小于等于百位上的,百位上的小于等于十位上的,十位上的小于等于个位上的,并且原四位数是偶数,统计满足条件的个数 并且从小到大存入数组b中

我写的是:
int i,thou,hun,ten,data,j;
int k,flag;
for(i=0;i<200;i++)
{
thou=a[i]/1000;
hun=a[i]%1000/100;
ten=a[i]%100/10;
data=a[i]%10;
if((thou<=hun)&&(hun<=ten)&&(ten<=data))
{flag=1;}
else
{flag=0;
break;}
if(flag==1&&a[i]%2==0)
{b[cnt]=a[i];
cnt++;}
}
for(i=0;i<cnt-1;i++)
for(j=i+1;j<cnt;j++)
if(b[i]>b[j])
{k=b[i];
b[i]=b[j];
b[j]=k;}

这道题原来的答案没有flag 我只是想自己编写 用了标志变量flag
但是我不知道哪里错了 就是结果不对 语法却没有错误


搜索更多相关主题的帖子: 统计 
2011-09-09 22:10
guima
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2011-9-9
收藏
得分:0 
int i,thou,hun,ten,data,j;
int k;
for(i=0;i<200;i++)
{
thou=a[i]/1000;
hun=a[i]%1000/100;
ten=a[i]%100/10;
data=a[i]%10;
if((thou<=hun)&&(hun<=ten)&&(ten<=data)&&a[i]%2==0)
{b[cnt]=a[i];
cnt++;}
}
for(i=0;i<cnt-1;i++)
for(j=i+1;j<cnt;j++)
if(b[i]>b[j])
{k=b[i];
b[i]=b[j];
b[j]=k;}

这就是标准答案 比我上面的只是少个flag 高手大侠们请指点啊 谢谢



2011-09-09 22:29
pauljames
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:千里冰封
威 望:9
帖 子:1555
专家分:10000
注 册:2011-5-8
收藏
得分:3 

经常不在线不能及时回复短消息,如有c/单片机/运动控制/数据采集等方面的项目难题可加qq1921826084。
2011-09-09 22:34
edwardflee
Rank: 4
等 级:业余侠客
帖 子:145
专家分:234
注 册:2011-7-27
收藏
得分:3 
break换成continue试试?

学C的秘诀=每天都来泡论坛
2011-09-09 22:44
韩54521风
Rank: 4
等 级:业余侠客
帖 子:75
专家分:212
注 册:2011-6-11
收藏
得分:3 
我写的是:
int i,thou,hun,ten,data,j;
int k,flag;
for(i=0;i<200;i++)
{
printf("输入a[i]的值",i);
scanf("%d",a[i]);
thou=a[i]/1000;
hun=a[i]%1000/100;
ten=a[i]%100/10;
data=a[i]%10;
if((thou<=hun)&&(hun<=ten)&&(ten<=data))
{flag=1;}
else
{flag=0;
break;}
if(flag==1&&a[i]%2==0)
{b[cnt]=a[i];
cnt++;}----------------------------/*cnt变量有定义过吗?*/
}
for(i=0;i<cnt-1;i++)
for(j=i+1;j<cnt;j++)
if(b[i]>b[j])
{k=b[i];
b[i]=b[j];
b[j]=k;}     -------/*应该没有写完吧,最好把整个源程序写出来*/
2011-09-09 22:47
guima
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2011-9-9
收藏
得分:0 
cnt在主函数有定义

谢谢大家啊 4楼说的对

break和continue的区别没有搞清楚

快考试了啊

一上机就错误百出

再次谢谢大家
2011-09-09 22:55
依稀记得
Rank: 2
等 级:论坛游民
帖 子:10
专家分:15
注 册:2011-8-27
收藏
得分:3 
breake 换成 continue
你用break就跳出for循环了,用continue在条件不符合时,继续循环。
2011-09-09 23:00
听风的声音
Rank: 2
等 级:论坛游民
帖 子:7
专家分:11
注 册:2011-9-8
收藏
得分:3 
#include<stdio.h>
int main()
{
    int a[200],b[200];
    int thou,hun,ten,data,i,flag=0;
    a[0]=1000;//选择1000到1199之间的200个4位数进行判断
    for(i=1;i<200;i++)//分别给每个4位数初始化
        a[i]=a[i-1]+1;
    for(i=0;i<200;i++)
    {
        thou=a[i]/1000;
        hun=a[i]%1000/100;
        ten=a[i]%100/10;
        data=a[i]%10;
        if((thou<=hun)&&(hun<=ten)&&(ten<=data)&&(a[i]%2==0))
        {
            flag+=1;//记录符合条件的四位数的个数
            b[flag]=a[i];//将符合条件的数字放入数组中
            
        }
    }
    printf("其中符合条件的四位数有%d个,分别为以下这些数字:\n",flag);
    for(i=1;i<=flag;i++)
        printf("%d ",b[i]);
    printf("\n");
    return 0;
}
已经在机子上运行了,楼主可以试试看。


   
   

[ 本帖最后由 听风的声音 于 2011-9-9 23:36 编辑 ]
2011-09-09 23:17
A13433758072
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广东潮州
等 级:小飞侠
威 望:1
帖 子:1182
专家分:2784
注 册:2010-7-22
收藏
得分:3 
int cnt=0; if((thou<=hun)&&(hun<=ten)&&(ten<=data))
{if(a[i]%2==0) { cnt++; b[cnt]=a[i]; } }
else

continue;

}

for(i=0;i<cnt-2;i++)
for(j=i+1;j<cnt;j++)
if(b[i]>b[j])
{k=b[i];
b[i]=b[j];
b[j]=k;}

[ 本帖最后由 A13433758072 于 2011-9-10 07:12 编辑 ]

一步一个脚印...............................默默地前进.....
诚邀乐于解答c菜鸟问题,的热心网友加入,  QQ群38490319
2011-09-10 00:06
yixiu868
Rank: 2
等 级:论坛游民
帖 子:28
专家分:22
注 册:2010-10-25
收藏
得分:3 
程序代码:
#include <stdio.h>
main(){
    int i = 0;
    int b[400] = {0};
    int cout = 0, j = 0;
    for(i = 1112; i <= 8888; i = i + 2){
        int thou, hun, ten, data;
        thou = i / 1000;
        hun = (i - thou * 1000) / 100;
        ten = (i % 100) / 10;
        data = i % 10;
        if(thou <= hun && hun <= ten && ten <= data && (data % 2 == 0)){
            b[cout] = i;
            cout++;   
        }       
    }
    printf("%d\n", cout);
    for(i = 0; i < cout; ++i){
        printf("%6d", b[i]);
        j++;
        if(j % 5 == 0){
            printf("\n");
            j = 0;
        }
    }
    getchar();
    return 0;
}
2011-09-10 19:37
快速回复:请教高手 一道三级考试的题目 谢谢啦 研究好久了
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018765 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved