| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 729 人关注过本帖
标题:第六届全国信息技术应用水平大赛复赛试题A卷第二题,欢迎大家来指出不足
取消只看楼主 加入收藏
shen_131
Rank: 1
等 级:新手上路
帖 子:3
专家分:1
注 册:2012-10-28
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:1 
第六届全国信息技术应用水平大赛复赛试题A卷第二题,欢迎大家来指出不足
原题:
2. 编程解决如下问题(50分)。
请在整数n=742683613984中删除8个数字,使得余下的数字按原次序组成的新数最小。要求如下:
(1)整数n和删除数字的个数“8”在源程序中完成赋值,程序直接输出运行结果;
(2)程序结果输出先后被删除的数字(之间以逗号分隔)和删除后所得的最小数。
(提示:整数n可以以字符数组的方式定义、赋值和处理)

程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 20

void main()
{
    char m[N]="742683613984",temp[2]={'\0','\0'};
    int n[N];
    int num;        //m的长度
    int sum=0;        //结果
    int left,right;        //左右界限
    int chosen_num[4];    //选中的数的位置
    int num_key=8;

    num=strlen(m);
    for(int i=0;i<num;i++)
    {
        temp[0]=m[i];
        n[i]=atoi(temp);
    }

    left=0;
    right=num_key;

    for(int i=0;i<(num-num_key);i++)
    {
        chosen_num[i]=left;
        for(int j=left;j<=right;j++)
        {
            if(n[chosen_num[i]]>n[j])
                chosen_num[i]=j;
        }
        left=chosen_num[i]+1;
        right+=1;
    }
    for(int i=0;i<4;i++)
    {
        sum=sum*10+n[chosen_num[i]];
        n[chosen_num[i]]=-1;        //被选中的改为0,控制输出
    }
    for(int i=0;i<num-1;i++)
    {
        if(n[i]!=-1)
            printf("%d,",n[i]);
    }
    printf("\n");

    printf("%d\n",sum);
}
VS2010做的,运行正确
搜索更多相关主题的帖子: include 源程序 color 
2012-10-28 22:21
shen_131
Rank: 1
等 级:新手上路
帖 子:3
专家分:1
注 册:2012-10-28
收藏
得分:0 
回复 3楼 wp231957
可以在for循环外面定义一下i,然后直接for(i=0;..;...)就可以用VC6.0编译了
2012-10-30 13:59
快速回复:第六届全国信息技术应用水平大赛复赛试题A卷第二题,欢迎大家来指出不 ...
数据加载中...
 
   



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

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