急急急!!C语言算法问题!!求答案!!在线等~~~分全投了···别嫌少啊~~求指教~

大酬宾活动的第三天,店里突然来了一个老外。还是高中生的小娥在开店。可怜的小娥被老外流畅的外语给吓蒙了。老外没办法,只好一个字母一个字母地把订单念给小娥。吓蒙的小娥只记得有几个元音字母了(aeiou),不过很不幸的是她把H也当作了A,Y当作了I.

Input

第一行输入一个整数n,表示老外说了多少句话。
然后是n行,每一行是老外说的外语。

Output

对于老外说的每句话,请统计出小娥记得的各元音字母的个数(包含记错的),每个元音1行,格式见例子

Sample Input

2
Hello.
How are you!

Sample Output

a:1
e:1
i:0
o:1
u:0
a:2
e:1
i:1
o:2
u:1

Hint

一句话不超过50个字符

第1个回答  2012-01-03
#include <iostream>
#include <string>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <cstdlib>
#include <algorithm>
#include <vector>
using namespace std;

const int maxn = 100;
char str[maxn];
int t, ans[5];

int main() {
scanf("%d", &t);
gets(str);
while(t--) {
gets(str);
memset(ans, 0, sizeof(ans));
for(int i = 0; str[i]; i++) {
if(str[i] == 'a' || str[i] == 'A' || str[i] == 'h' || str[i] == 'H') {
ans[0]++;
}
if(str[i] == 'e' || str[i] == 'E') {
ans[1]++;
}
if(str[i] == 'i' || str[i] == 'I' || str[i] == 'y' || str[i] == 'Y') {
ans[2]++;
}
if(str[i] == 'o' || str[i] == 'O') {
ans[3]++;
}
if(str[i] == 'u' || str[i] == 'U') {
ans[4]++;
}
}
printf("a:%d\ne:%d\ni:%d\no:%d\nu:%d\n", ans[0], ans[1], ans[2], ans[3], ans[4]);
}
return 0;
}
第2个回答  2012-01-03
#include <stdio.h>
void f(int* a,char* s)
{
while(*s)
{
switch(*s)
{
case 'h':
case 'H':
case 'A':
case 'a': a[0]++;break;
case 'E':
case 'e': a[1]++;break;
case 'Y':
case 'y':
case 'I':
case 'i': a[2]++;break;
case 'O':
case 'o': a[3]++;break;
case 'U':
case 'u': a[4]++;break;
}
s++;
}
}
int main()
{
char s[200];
int a[5];
int n,i,j;
scanf("%d",&n);
getchar();
for(i=0;i<n;i++)
{
for(j=0;j<5;j++)
a[j]=0;
gets(s);
f(a,s);
printf("a:%d\ne:%d\ni:%d\no:%d\nu:%d\n",a[0],a[1],a[2],a[3],a[4]);
}
return 0;
}追问

不行额···运行出现好多错误提示···
我用的Ch IDE
跪求答案~~~

追答

不可能有问题的,这个有人都提交通过了
我这里也运行正常

追问

那之后那道您会吗
陈盖历回来后,给小娥一个不幸的消息,网站密码泄露了,银行密码泄露了。让小娥赶快就修改密码。小娥追问道,密码不是加密了吗?怎么会泄密?当然有些没有加密,有些加密算法很简单。陈盖历还告诉小娥,素数在加密学中起了很大的作用。
现在告诉你2个数,你能找出这2个数之间所有的素数吗?
首先输入一个整数n表示n组测试数据
然后是n行,每行输入2个整数m1和m2
输出m1和m2之间的所有素数(包括m1 m2)

追答

//就这个
#include
int isp(int n)
{
int i;
if(n<2)
return 0;
for(i=2;i*i<=n;i++)
{
if(n%i==0)
return 0;
}
return 1;
}

int main()
{
int m1,m2;
int i,n,k;
scanf("%d",&n);
for(k=0;k<n;k++)
{
scanf("%d%d",&m1,&m2);
for(i=m1;i<=m2;i++)
{
if(isp(i))
printf("%d ",i);
}
printf("\n");
}
return 0;
}

本回答被提问者采纳
相似回答
大家正在搜