飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 2085|回复: 6

[C/C++] 算法入门题-8月26日

[复制链接]
  • TA的每日心情
    开心
    2022-11-16 14:28
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2009-8-27 22:15:15 | 显示全部楼层 |阅读模式
    第一题:
    分組報告
    内容 : 简体中文
    電腦課要同學分組做期末報告,分組的方式為依座號順序,每 3 個人一組。如:1, 2, 3 為
    第一組,4, 5, 6 為第二組….以此類推。輸入同學的座號,請判斷他在哪一組。
    输入说明 :
    輸入只有一行,含有一個正整數 n,代表同學的座號。
    输出说明 :
    輸出該同學的組別。
    范例输入 :
    7
    范例输出 :
    3
    提示 :
    你能只用算術運算子,而不用 if 解出這題嗎?

    第二题:
    题目类型 字符串处理 描述 手机的键盘是这样的:
    1 2 abc 3 def
    4 ghi 5 jkl 6 mno
    7 pqrs 8 tuv 9 wxyz
    * 0 #
    要按出英文字母就必须要按数字键多下。例如要按出x就得按9两下,第一下会出w,而第二下会把w变成x。0键按一下会出一个空格。
    你的任务是读取若干句只包含英文小写字母和空格的句子,求出要在手机上打出这个句子至少需要按多少下键盘。 输入格式 一行。一个句子,只包含英文小写字母和空格,且不超过200个字符。 输出格式 一行。一个整数,表示按键盘的总次数。
    Sample input
    i have a dream

    sample output
    23
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2022-11-16 14:28
  • 签到天数: 5 天

    [LV.2]偶尔看看I

     楼主| 发表于 2009-8-28 00:29:47 | 显示全部楼层
    第一題源代碼:

    1. #include <stdio.h>

    2. int main(void)
    3. {
    4.     int n;
    5.     while(scanf("%d", &n) > 0)
    6.         printf("%d\n", (n+2)/3);
    7.     return 0;
    8. }
    复制代码
    第二題源代碼:

    1. #include <stdio.h>
    2. #include <stdlib.h>
    3. #define MAX 200

    4. char array[26] = { 1,2,3,
    5.                    1,2,3,
    6.                    1,2,3,
    7.                    1,2,3,
    8.                    1,2,3,
    9.                    1,2,3,4,
    10.                    1,2,3,
    11.                    1,2,3,4};

    12. int main(int argc, char **argv)
    13. {
    14.     char s[MAX];
    15.     int i = 0, count = 0;
    16.     while(gets(s))
    17.     {
    18.         i = count = 0;
    19.         while(s[i])
    20.         {
    21.             if (s[i] == ' ')
    22.                 ++count;
    23.             else
    24.                 count += array[s[i]-'a'];
    25.             ++i;
    26.         }
    27.         printf("%d\n", count);
    28.     }
    29.     return 0;
    30. }
    复制代码
    所有代碼都是經過測試AC的!

    [ 本帖最后由 evilknight 于 2009-8-28 22:48 编辑 ]
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2009-8-28 21:10:59 | 显示全部楼层
    我做的第一题的代码:
    #include <stdio.h>
    #include <stdlib.h>



    void main()
    {
           
        int k;
            printf("Input!");
            scanf("%d",&k);
            printf("%d\n",k%3?(k/3+1):(k/3));
    }
    第二题:
    #include "stdafx.h"
    #include <iostream.h>
    #include <stdio.h>
    #include <string.h>

    int main()
    {
    int array[26]={1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,4,1,2,3,1,2,3,4};
    int count=0;
    char ch[32];

      while (cin>>ch)
      {
              
              for (int i=0;ch != 0;i++)
              {
                      if(ch>='A'&&ch<='z')
                      count+=array[ch-'a'];
             }
              cout<<count<<endl;
      }
      
             

    return 0;
    }
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2022-11-16 14:28
  • 签到天数: 5 天

    [LV.2]偶尔看看I

     楼主| 发表于 2009-8-28 21:37:37 | 显示全部楼层
    :handshake
    继续努力!写得不错!
    有些不用的头件就不用包含进来了!
    我觉得如果int array[26]={1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,4,1,2,3,1,2,3,4};
    写成
    char array[26] = { 1,2,3,
                       1,2,3,
                       1,2,3,
                       1,2,3,
                       1,2,3,
                       1,2,3,4,
                       1,2,3,
                       1,2,3,4};
    写成这样,看起来会舒服一些!
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2009-8-28 22:50:54 | 显示全部楼层
    我来测试下,中括号【】【】【】[][]【】【】【】
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2009-8-28 22:51:46 | 显示全部楼层
    测试:

    int main(int argc, char* argv[])
    {
        int i_input_num;
        cout<<"请输入一个整数:"<<endl;
        cin>>i_input_num;
        cout<<"您输入的是:"<<i_input_num<<endl;
        int a[20] = 0;
        int b[20] = 0;

            return 0;
    }
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2022-11-16 14:28
  • 签到天数: 5 天

    [LV.2]偶尔看看I

     楼主| 发表于 2009-8-28 22:56:45 | 显示全部楼层
    /:L .......无语...
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表