工大在线

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: liu19880426
打印 上一主题 下一主题

[分享] 第六届编程大赛试题

[复制链接]

94

主题

5

好友

1182

积分

荣誉会员

Rank: 8Rank: 8

该用户从未签到

西工币
7832 枚
好评度
2 点
声望
648 点
注册时间
2008-1-3
帖子
841
积分
1182
UID
13745

终身成就奖 特殊贡献奖 论坛元老 音乐天才 金牛座 辰龙 MVP 音乐达人

11#
发表于 2008-4-29 10:17:07 |只看该作者
1.(1):C  (2):E  (3):B  (4):G  (5):A
回复

使用道具 举报

94

主题

5

好友

1182

积分

荣誉会员

Rank: 8Rank: 8

该用户从未签到

西工币
7832 枚
好评度
2 点
声望
648 点
注册时间
2008-1-3
帖子
841
积分
1182
UID
13745

终身成就奖 特殊贡献奖 论坛元老 音乐天才 金牛座 辰龙 MVP 音乐达人

12#
发表于 2008-4-29 10:17:46 |只看该作者
2..(二进制)
#include<stdio.h>
void printb(int,int);
int main()
{
int x;printf("Input number:");
scanf("%d",&x);
printf("number of decimal form:%d\n",x);
printf(" it's binary form:");
printb(x,sizeof(int)*8); /*x:整数 sizeof(int):int型在内存中所占的字节数
sizeof(int)*8:int型对应的位数*/
putchar('\n');
}

void printb(int x,int n)
{
if(n>0)
{
putchar('0'+((unsigned)(x&(1<<(n-1)))>>(n-1))); /*输出第n位*/
printb(x,n-1); /*归调用,输出x的后n-1位*/
}
}
3.
#include<stdio.h>
int main()
{
int i,x,y,last=1; /*变量last保存求X的Y次方过程中的部分乘积的后三位*/
printf("Input X and Y(X**Y):");
scanf("%d**%d",&x,&y);
for(i=1;i<=y;i++) /*X自乘Y次*/
last=last*x%1000; /*将last乘X后对1000取模,即求积的后三位*/
printf("The last 3 digits of %d**%d is:%d\n",x,y,last%1000); /*打印结果*/
}
运行结果:253
回复

使用道具 举报

94

主题

5

好友

1182

积分

荣誉会员

Rank: 8Rank: 8

该用户从未签到

西工币
7832 枚
好评度
2 点
声望
648 点
注册时间
2008-1-3
帖子
841
积分
1182
UID
13745

终身成就奖 特殊贡献奖 论坛元老 音乐天才 金牛座 辰龙 MVP 音乐达人

13#
发表于 2008-4-29 10:18:18 |只看该作者
4.
#include "stdio.h"
main()
{
  int a[3]={5,2,1};
  int b[3];
  int s;
  int i;
  printf("请输入货币总额: ");
  scanf("%d",&s);
    for(i=0;i<=3;i++)
      {
            b=s/a;
            s-=b*a;
      }
    for(i=0;i<3;i++)
    printf("面值为%d硬币%d枚\n",a,b);
   
}
5.(交通违规)
#include<stdio.h>
#include<math.h>
int main()
{
int i,j,k,c;
for(i=1;i<=9;i++) /*i:车号前二位的取值*/
for(j=0;j<=9;j++) /*j:车号后二位的取值*/
if(i!=j) /*判断二位数字是否相异*/
{
k=i*1000+i*100+j*10+j; /*计算出可能的整数*/
for(c=31;c*c<k;c++); /*判断该数是否为另一整数的平方*/
if(c*c==k) printf("Lorry--No. is %d.\n",k); /*若是,打印结果*/
}
}
运行结果:7744
6.
#include<stdio.h>
#define M 6
#define N 5
long card[M][N+3]={
                      {9801,2000,0,},
                  {9812,2000,2,},
                  {9753,3000,1,},
                  {8750,500,0},
                  {9604,2800,3,},
                  {8901,5000,5}
                  };
int locate(long card[][N+3],int m,long no)
{int i;
for(i=0;i<m;i++)
   if(card[0]=no)return i;
return -1;
}
main()
{
   long cardNo,money;
   int k;
   while(1)
   {
           printf("请输入卡号:\n");
    scanf("%d",&cardNo);
    if(cardNo<0)break;
    k=locate(card,M,cardNo);
    if(k==-1)
     {
             printf("不存在%d号的储蓄卡\n",cardNo);continue;
     }
    printf("请输入卡金额(正值代表存款,负值代表取款):\n");
    scanf("%Ld",&money);
    if(card[k][1]+money<0)
      {   
              printf("存款余额不足,不能完成本次的取款业务\n");
        continue;
      }
    if(card[k][2]==N)
      {
              printf("已完成本卡的当日业务\n");
        continue;
      }
    /*处理一笔业务的数据*/
    card[k][card[k][2]+3]=money;
    card[k][card[k][2]+3]=money;
    card[k][2]++;
   }
}
回复

使用道具 举报

74

主题

7

好友

2301

积分

荣誉会员

荣誉会员

Rank: 8Rank: 8

该用户从未签到

西工币
8575 枚
好评度
11 点
声望
321 点
注册时间
2007-9-9
帖子
2036
积分
2301
UID
12104

灌水龙王奖 帖子大王 超级清洁员 天蝎座 寅虎

14#
发表于 2008-4-29 14:22:28 |只看该作者
回复

使用道具 举报

7

主题

0

好友

199

积分

举人

Rank: 4

该用户从未签到

西工币
7896 枚
好评度
3 点
声望
325 点
注册时间
2006-5-27
帖子
33
积分
199
UID
278
15#
发表于 2008-5-1 19:24:43 |只看该作者
初赛?   我总觉得我们学校的大赛所出的试题过于简单了,我真心希望有一天我们学校的同学能站在ACM的舞台上,同世界上最优秀的编程爱好者进行面对面的较量。
自己从另一条路实现了下第二题   算是为大赛祝兴吧~~~~~~~~
10进制转2进制C++版
#include <vector>
#include<iostream>
using namespace std;
int main(int argc, char *argv[])
{
                      vector<int> o;
        int x = 0;
        cin>>x;
        while(x != 0)
        {
        if((x&1) == 1)
                o.push_back(1);
        else
                o.push_back(0);
        x=x>>1;       
        }
        for(vector<int>::reverse_iterator it = o.rbegin() ; it != o.rend() ; it++  )
              cout<<*it;
   system("PAUSE");
    return 0;
}
MM你贵庚 贵姓 贵三围?
回复

使用道具 举报

7

主题

0

好友

254

积分

举人

Rank: 4

该用户从未签到

西工币
759 枚
好评度
0 点
声望
235 点
注册时间
2006-9-12
帖子
136
积分
254
UID
3052
16#
发表于 2008-5-10 17:20:37 |只看该作者
原帖由 夜色温柔 于 2008-5-1 19:24 发表
初赛?   我总觉得我们学校的大赛所出的试题过于简单了,我真心希望有一天我们学校的同学能站在ACM的舞台上,同世界上最优秀的编程爱好者进行面对面的较量。
自己从另一条路实现了下第二题   算是为大赛祝兴吧~~~~~ ...

用栈实现还是最有效率的.

我现在在用C#,更简单,呵呵
System.Convert.ToString(int value, int toBase)
即可解决问题,任意进制的转换.

[ 本帖最后由 dixnuits 于 2008-5-10 17:23 编辑 ]
回复

使用道具 举报

94

主题

5

好友

1182

积分

荣誉会员

Rank: 8Rank: 8

该用户从未签到

西工币
7832 枚
好评度
2 点
声望
648 点
注册时间
2008-1-3
帖子
841
积分
1182
UID
13745

终身成就奖 特殊贡献奖 论坛元老 音乐天才 金牛座 辰龙 MVP 音乐达人

17#
发表于 2008-5-10 18:01:13 |只看该作者
初赛?   我总觉得我们学校的大赛所出的试题过于简单了,我真心希望有一天我们学校的同学能站在ACM的舞台上,同世界上最优秀的编程爱好者进行面对面的较量。
上面的那位老兄以为你做对了吗?
你错了~
还说简单!
简单的都做不了!
回复

使用道具 举报

94

主题

5

好友

1182

积分

荣誉会员

Rank: 8Rank: 8

该用户从未签到

西工币
7832 枚
好评度
2 点
声望
648 点
注册时间
2008-1-3
帖子
841
积分
1182
UID
13745

终身成就奖 特殊贡献奖 论坛元老 音乐天才 金牛座 辰龙 MVP 音乐达人

18#
发表于 2008-5-10 18:02:14 |只看该作者
你用你的程序试一下,看负数能表示出来么?

   确定后再说,别说大话~~

               OK?
回复

使用道具 举报

7

主题

0

好友

254

积分

举人

Rank: 4

该用户从未签到

西工币
759 枚
好评度
0 点
声望
235 点
注册时间
2006-9-12
帖子
136
积分
254
UID
3052
19#
发表于 2008-5-10 19:09:23 |只看该作者
我倒是没事 把决赛试题做了做

你可以去看看

我可以告诉你 二进制的负数需要说明位数的

int32和int16就完全不同

而且,在C#中转换是包含负数的 默认为 Int32
回复

使用道具 举报

7

主题

0

好友

254

积分

举人

Rank: 4

该用户从未签到

西工币
759 枚
好评度
0 点
声望
235 点
注册时间
2006-9-12
帖子
136
积分
254
UID
3052
20#
发表于 2008-5-10 19:11:55 |只看该作者
我反倒认为你 给的初赛的答案 错误百出

用int声明主函数 结尾没有返回值,稍微严格一点的编译器就给你编译错误了.

我不是用C的,我现在工作用的python和C#.

但是我还是有C的基本的常识.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

手机版|xatubbs.com ( 苏ICP备11050183号 )

GMT+8, 2025-12-22 05:08 , Processed in 0.168604 second(s), 26 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部