【id:15】【7分】J. 投票选举(字符串比较)
题目描述
对候选人得票的统计程序。设有3个候选人,每个选民投票输入一个得票的候选人的名字,要求最后输出各人得票结果。
三个候选人的名字分别为Li, Zhang, Fu。
输入
第一行输入输入选票数n
第二行起输入n行,每行是一个候选人名字
输出
三个候选人的统计结果
输入样例1 <-复制
5
Li
Fu
Fu
Zhao
Bai
输出样例1
Li:1
Zhang:0
Fu:2
#include <iostream>
#include <string.h>
using namespace std;
int main()
{
const char*p[4]={"Li","Zhang","Fu"};
int a[3]={0};
int t;
cin>>t;
while(t--)
{
char ch[20];
cin>>ch;
for(int i=0;i<3;i++)
{
if(strcmp(ch,*(p+i))==0)
{
a[i]++;
}
}
}
cout<<"Li:"<<a[0]<<endl<<"Zhang:"<<a[1]<<endl<<"Fu:"<<a[2];
}
【id:18】【16分】M. 截取字符串(函数)
时间限制1s
内存限制128MB
题目描述
编写一个函数int substr(char str1[],char str2[],int index),其作用是,将从字符串str1 (长度超过30) 的第index个字符开始的所有字符复制,生成新的字符串str2,如果成功生成,函数返回1,如果不能成功生成,返回0
输入
测试数据的组数n
第一组数据
第二组数据
........
输出
成功生成就输出子串,不成功生成,输出"IndexError"
输入样例1 <-复制
3
Zhenshen University
9
www.szu.edu.cn
12
apple
8
输出样例1
University
cn
IndexError
#include <iostream>
#include <string.h>
using namespace std;
int substr(char str1[],char str2[],int dex)
{
int j=0;
int len=strlen(str1);
if(dex>len) return 0;
else
{
for(int i=dex;i<len;i++)
{
*(str2+j)=*(str1+i);
j++;
}
*(str2+j)='\0';//如果变成*(str2+j+1),第二个案例会出现cni;为什么?
return 1;
}
}
int main()
{
int n;
cin>>n;
while(n--)
{
cin.get();//吃掉回车符;
char str1[30];
char str2[30];
gets(str1);
int dex;
cin>>dex;
if(substr(str1,str2,dex))
{
cout<<str2<<endl;
}
else cout<<"IndexError"<<endl;
}
}