算法入门题-8月26日
第一题:分組報告
内容 : 简体中文
電腦課要同學分組做期末報告,分組的方式為依座號順序,每 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 第一題源代碼:
#include <stdio.h>
int main(void)
{
int n;
while(scanf("%d", &n) > 0)
printf("%d\n", (n+2)/3);
return 0;
}
第二題源代碼:
#include <stdio.h>
#include <stdlib.h>
#define MAX 200
char array = { 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 main(int argc, char **argv)
{
char s;
int i = 0, count = 0;
while(gets(s))
{
i = count = 0;
while(s)
{
if (s == ' ')
++count;
else
count += array-'a'];
++i;
}
printf("%d\n", count);
}
return 0;
}
所有代碼都是經過測試AC的!
[ 本帖最后由 evilknight 于 2009-8-28 22:48 编辑 ] 我做的第一题的代码:
#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={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;
while (cin>>ch)
{
for (int i=0;ch != 0;i++)
{
if(ch>='A'&&ch<='z')
count+=array-'a'];
}
cout<<count<<endl;
}
return 0;
} :handshake
继续努力!写得不错!
有些不用的头件就不用包含进来了!
我觉得如果int array={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 = { 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 main(int argc, char* argv[])
{
int i_input_num;
cout<<"请输入一个整数:"<<endl;
cin>>i_input_num;
cout<<"您输入的是:"<<i_input_num<<endl;
int a = 0;
int b = 0;
return 0;
} /:L .......无语...
页:
[1]