2013年计算机复试题
1001 水仙花数
#pragma warning(disable:4996)
#include<stdio.h>
#include<string.h>
#include<ctype.h>
int main(){
int a, b;
while (scanf("%d%d", &a, &b) == 2) {
int first = 1;
int i;
for ( i = a; i <= b; i++) {
int m1, m2, m3;
m1 = i % 10;
m2 = i / 10 % 10;
m3 = i / 100;
if (i == m1 * m1 * m1 + m2 * m2 * m2 + m3 * m3 * m3) {
if (first == 1) {
printf("%d", i);
first = 0;
}
else {
printf(" %d", i);
}
}
}
if (first == 0) {
printf("\n");
}
if (first == 1) {
printf("no\n");
}
}
return 0;
}
1002:安全密码
网络上各类交易活动越来越普及,为了能够安安心心地上网,经常需要设置一个安全的密码。一般来说一个比较安全的密码至少应该满足下面两个条件:
(1)密码长度大于等于8。
(2)密码中的字符应该来自下面“字符类别”中四组中的至少三组。
这四个字符类别分别为:
(1)大写字母:A,B,C...Z;
(2)小写字母:a,b,c...z;
(3)数字:0,1,2...9;
(4)特殊符号:~,!,@,#,$,%,^;
给你一个密码,你的任务就是判断它是不是一个安全的密码。
#pragma warning(disable:4996)
#include<stdio.h>
#include<string.h>
#include<ctype.h>
#define max 100
int main(){
char s[max];
while (scanf("%s", s) !=EOF) {
if (strlen(s) < 8) {
printf("NO\n");
}
else {
int count1=0, count2=0, count3=0, count4=0;
for (int i = 0; i <= strlen(s) - 1; i++) {
if ('0'<=s[i]&&s[i]<='9') {
count1 = 1;
//数字ASCII判断
}
if ('A' <= s[i]&&s[i] <= 'Z') {
count2 = 1;
}
if ('a' <= s[i]&&s[i] <= 'z') {
count3 = 1;
}
if ((s[i] == '~') ||( s[i] == '!' )||( s[i] == '@') ||( s[i] == '#' )||( s[i] == '$' )|| (s[i] == '%' )||( s[i] == '^')) {
count4 = 1;
}
}
int m = 0;
m = count1 + count2 + count3 + count4;
if (m >= 3) {
printf("YES\n");
}
else {
printf("NO\n");
}
}
}
return 0;
}
1003: 最少钱币数
作为A公司的职员,最盼望的日子就是每月的8号了,因为这一天是发工资的日子,养家糊口就靠它了。但是对于公司财务处的工作人员来说,这一天则是很忙碌的一天,财务处的小胡最近就在考虑一个问题:如果每个员工的工资额都知道,最少需要准备多少张人民币,才能在给每位职员发工资的时候都不用老师找零呢?这里假设员工的工资都是正整数,单位元,人民币一共有100元、50元、10元、5元、2元和1元六种。
#pragma warning(disable:4996)
#include<stdio.h>
#include<string.h>
#include<ctype.h>
#define max 102
int main(){
int n;
while (scanf("%d", &n) != EOF) {//老师个数
int sum=0;//总数
for (int i = 0; i < n; i++) {
int total = 0;
int num;//每个老师的钱数
scanf("%d", &num);
//人民币一共有100元、50元、10元、5元、2元和1元六种
int num100, num50, num10, num5, num2, num1;
num100 = num / 100;
num50 = (num % 100) / 50;
num10 = (num % 50) / 10;
num5 = (num % 10 )/ 5;
num2 = (num % 5) / 2;
num1 = (num%5)%2;//这里很容易出错,钱币1的数额不能安装上边的规律来,如2356,%2为0;但事实上6的组成是5+1,而不是3*2;
//printf("%d 匹配结果为 : 100: %d, 50: %d, 10: %d, 5: %d, 2: %d, 1: %d...",num, num100, num50, num10, num5, num2, num1);
total = num100 + num50 + num10 + num2 + num1+num5;
sum = sum + total;
}
printf("%d\n", sum);
}
return 0;
}