2017年华科机试题目
pro01,字符打印
#include <stdio.h>
#include <stdlib.h>
#define MAXN 100+5
#define LL_MAX ((1LL<<63)-1)
#define ll long long
#define mem(a, n) memset(a, n, sizeof(a))
/// pro01 字符打印
int main() {
freopen("dataIn.txt", "r", stdin);
char ch;
while((ch=getchar())!=EOF) {
getchar();
int num, flag=0;
if(ch>='a' && ch<='z') {
num = ch-'a'+1;
flag=1;
} else if(ch>='A' && ch<='Z') {
num = ch-'A'+1;
flag=2;
}
int i, j, k, cnt;
for(i=0; i<num; i++) {
// printf("i=%d\n", i);
k=i*2, cnt=0;
while(k--) {
printf(" ");
}
for(j=i; j<num*2-1-i; j++) {
if(j>=num) {
--cnt;
}
if(flag == 1)
printf("%c ", (char)('a'+cnt));
else
printf("%c ", (char)('A'+cnt));
if(j<num-1) {
cnt++;
}
}
puts("");
}
}
return 0;
}
pro02,字符串压缩
#include <stdio.h>
#include <stdlib.h>
#define MAXN 100+5
#define LL_MAX ((1LL<<63)-1)
#define ll long long
#define mem(a, n) memset(a, n, sizeof(a))
char str[MAXN], res[MAXN];
int main() {
freopen("dataIn.txt", "r", stdin);
while(~scanf("%s", str)) {
int len = strlen(str);
int i, num, cnt=0;
for(i=0; i<len; i+=2) {
if(i+1<len) {
num = (str[i]-'0')*10 + (str[i+1]-'0') + 32;
res[cnt++] = num;
} else {
break;
}
}
if(len&1) {
res[cnt++] = '0';
}
for(i=0; i<cnt; i++) {
putchar(res[i]);
}
puts("");
}
}
pro03,大数加法
putchar(res[i]);
}
puts("");
}
}
## pro03,大数加法
思路:使用字符串模拟加法,代码参见前面牛客网的加法题