buaa机试练习
字符查找删除问题
题目描述
给定一个短字符串(不含空格),再给定若干字符串,在这些字符串中删除所含有的短字符串。
输入描述:
输入只有1组数据。
输入一个短字符串(不含空格),再输入若干字符串直到文件结束为止。
输出描述:
删除输入的短字符串(不区分大小写)并去掉空格,输出。
#include <stdio.h>
#include <string.h>
void deleteAndOut(char* sub, char* str) {
for (int i = 0; i < strlen(str); i++) {
if(str[i] == ' ') continue;
if(sub[0] != str[i]) {
putchar(str[i]);
}else if(strncmp(sub, str+i, strlen(sub)) == 0) {
i += strlen(sub)-1;
}else {
putchar(str[i]);
}
}
}
char s[10], buf[101];
int main(){
freopen("in.txt", "r", stdin);
freopen("out.txt", "w", stdout);
gets(s);
int i = fread(buf, sizeof(char), 101, stdin);
deleteAndOut(s, buf);
return 0;
}
矩阵旋转问题
题目描述
任意输入两个9阶以下矩阵,要求判断第二个是否是第一个的旋转矩阵,如果是,输出旋转角度(0、90、180、270),如果不是,输出-1。 要求先输入矩阵阶数,然后输入两个矩阵,每行两个数之间可以用任意个空格分隔。行之间用回车分隔,两个矩阵间用任意的回车分隔。
输入描述:
输入有多组数据。
每组数据第一行输入n(1<=n<=9),从第二行开始输入两个n阶矩阵。
输出描述:
判断第二个是否是第一个的旋转矩阵,如果是,输出旋转角度(0、90、180、270),如果不是,输出-1。
如果旋转角度的结果有多个,则输出最小的那个。
#include <stdio.h>
#include <string.h>
int m1[9][9], m2[9][9];
int main(){
freopen("in.txt", "r", stdin);
freopen("out.txt", "w", stdout);
int n;
scanf("%d", &n);
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
scanf("%d", &m1[i][j]);
}
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
scanf("%d", &m2[i][j]);
}
}
int b0 = 1, b90 = 1, b180 = 1, b270 = 1;
// 0
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if(m1[i][j] != m2[i][j]) {
b0 = 0;
break;
}
}
}
// 90
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if(m1[i][j] != m2[j][n-i-1]) {
b90 = 0;
break;
}
}
}
// 180
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if(m1[i][j] != m2[n-i-1][n-j-1]) {
b180 = 0;
break;
}
}
}
// 270
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if(m1[i][j] != m2[n-j-1][i]) {
b270 = 0;
break;
}
}
}
if(b0)
puts("0");
else if(b90)
puts("90");
else if(b180)
puts("180");
else if(b270)
puts("270");
else
puts("-1");
return 0;
}
迭代求立方根
题目描述
立方根的逼近迭代方程是 y(n+1) = y(n)2/3 + x/(3y(n)*y(n)),其中y0=x.求给定的x经过n次迭代后立方根的值。
输入描述:
输入有多组数据。
每组一行,输入x n。
输出描述:
迭代n次后的立方根,double精度,保留小数点后面六位。
#include <stdio.h>
int main(){
freopen("in.txt", "r", stdin);
freopen("out.txt", "w", stdout);
double x;
int n;
while(scanf("%lf %d", &x, &n) != EOF) {
double y = x;
while(n--) {
y = y * 2 / 3 + x / (3 * y * y);
}
printf("%.6lf\n", y);
}
return 0;
}
21系?算法课?