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;
}