编程题
第一题 改数字
//改数字
int gaishuzi(int * input)
{
int sum = 0;
int i = 0;
while (*input)
{
int bit=* input% 10;
if (bit % 2 == 1)
{
sum += 1 * pow(10, i);
i++;
}
else
{
sum += 0* pow(10, i);
i++;
}
*input /= 10;
}
return sum;
}
int main()
{
int input = 0;
scanf("%d",&input);
int a=gaishuzi(&input);
printf("%d",a);
return 0;
}
第二题 带空格直角三角形图案
//带空格直角三角形
int main()
{
int n = 0;
while(scanf("%d", &n) == 1)
{
int i = 0;
int j = 0;
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
{
if (i + j < n - 1)
printf(" ");
else
{
printf("* ");
}
}
printf("\n");
}
}
return 0;
}
第三题 网购
//网购
int main()
{
double price = 0.0;
int m = 0;
int d = 0;
int flag = 0;
scanf("%lf %d %d %d",&price,&m,&d,&flag);
if (m==11,d==11)
{
price = price * 0.7 - flag * 50;
}
else if(m==12,d==12)
{
price = price * 0.8 - flag * 50;
}
if (price < 0.0)
{
printf("%.2lf\n", 0);
}
else
printf("%.2lf\n",price);
return 0;
}
第四题 猜名次
//猜名次
int main()
{
int a = 0;
int c = 0;
int b = 0;
int d = 0;
int e = 0;
for (a = 1; a <= 5; a++)
{
for (b = 1; b <= 5; b++)
{
for (c = 1; c <= 5; c++)
{
for (d = 1; d<= 5; d++)
{
for (e = 1; e<= 5; e++)
{
if (((b == 2) + (a == 3) == 1)
&& ((b == 2) + (e == 4) == 1)
&& ((c == 1) + (d == 2) == 1)
&& ((c == 5) + (d == 3) == 1)
&& ((e == 4) + (a == 1) == 1)
)
{
if (a * b * c * d * e == 120)
printf("a=%d b=%d c=%d d=%d e=%d\n", a, b, c, d, e);
}
}
}
}
}
}
return 0;
}
第五题 猜凶手
int main()
{
int killer = 0;
for (killer = 'a'; killer <= 'd'; killer++)
{
if ((killer != 'a')
+ (killer == 'c')
+ (killer == 'd')
+ (killer != 'd') == 3)
{
printf("%c\n",killer);
}
}
}
第六题 杨辉三角
//杨辉三角
int main()
{
int arr[10][10] = { 0 };
int i = 0;
int j = 0;
for (i = 0; i < 10; i++)
{
for (j = 0; j < i; j++)
{
if (j == 0)
arr[i][j] = 1;
if(i == j)
arr[i][j] = 1;
if (i >= 2 && j >= 1)
{
arr[i][j] = arr[i - 1][j - 1] + arr[i-1][j];
}
}
}
for (i = 0; i < 10; i++)
{
for (j = 0; j < i; j++)
{
printf("%d ",arr[i][j]);
}
printf("\n");
}
return 0;
}
第七题 字符串左旋
//字符串左旋
void left_rotate(char arr[], int k)
{
int i = 0;
int len = strlen(arr);
for (i=0;i<k;i++)
{
char tmp = arr[0];
int j = 0;
for (j = 0; j < len - 1; j++)
{
arr[j] = arr[j + 1];
}
arr[len - 1] = tmp;
}
}
int main()
{
char arr[] = "abcdef";
int k = 0;
scanf("%d",&k);
left_rotate(arr,k);
printf("%s\n",arr);
return 0;
}
第八题 杨氏矩阵
//杨氏矩阵
struct point
{
int x;
int y;
};
struct point find_num(int arr[3][3],int r,int c,int k)
{
int x = 0;
int y = c - 1;
struct point p = { -1,-1 };
while (x<=r-1&&y>=0)
{
if (k < arr[x][y])
{
y--;
}
else if (k > arr[x][y])
{
x++;
}
else
{
p.x = x;
p.y = y;
return p;
}
}
return p;
}
int main()
{
int arr[3][3] = {1,2,3,4,5,6,7,8,9};
int k = 0;
scanf("%d",&k);
struct point ret =find_num(arr, 3, 3, k);
printf("%d %d",ret.x,ret.y);
return 0;
}
int find_num(int arr[3][3],int *r,int* c,int k)
{
int x = 0;
int y = *c - 1;
while (x<=*r-1&&y>=0)
{
if (k < arr[x][y])
{
y--;
}
else if (k > arr[x][y])
{
x++;
}
else
{
*r = x;
*c = y;
return 1;
}
}
return 0;
}
int main()
{
int arr[3][3] = {1,2,3,4,5,6,7,8,9};
int k = 0;
scanf("%d",&k);
int x = 3;
int y = 3;
int ret =find_num(arr, &x, &y, k);
if(ret==1)
printf("%d %d",x,y);
return 0;
}
第九题 字符串旋转结果
//字符串旋转判断
int is_left_move(char arr1[],char arr2[])
{
int len = strlen(arr1);
int i = 0;
for (i = 0; i < len; i++)
{
char tmp = arr1[0];
int j = 0;
for (j = 0; j < len - 1; j++)
{
arr1[j] = arr1[j + 1];
}
arr1[len - 1] = tmp;
if (strcmp(arr2, arr1) == 0)
return 1;
}
return 0;
}
int main()
{
char arr1[] = "abcdef";
char arr2[] = "cdefab";
int ret = is_left_move(arr1,arr2);
if (ret == 1)
{
printf("可以\n");
}
else
printf("不可以");
return 0;
}
//第二种方法
int is_left_move(char arr1[], char arr2[])
{
int len = strlen(arr1);
strncat(arr1, arr1, strlen(arr1));
char* ret = strstr(arr1, arr2);
if (ret == NULL)
{
return 0;
}
else
{
return 1;
}
}
int main()
{
char arr1[20] = "abcdef";
char arr2[] = "cdefab";
int ret = is_left_move(arr1, arr2);
if (ret == 1)
{
printf("可以\n");
}
else
printf("不可以");
return 0;
}
第十题 矩阵转置
//矩阵转置
int main()
{
int n = 0;
int m = 0;
scanf("%d %d",&n,&m);
int arr[10][10] = { 0 };
int i = 0;
int j = 0;
for (i = 0; i < n; i++)
{
for (j = 0; j < m; j++)
{
scanf("%d",&arr[i][j]);
}
}
for (i = 0; i < m; i++)
{
for (j = 0; j < n; j++)
{
printf("%d",arr[j][i]);
}
printf("\n");
}
return 0;
}
第十一题 上三角矩阵判定
// 上三角矩阵判定
int main()
{
int n = 0;
scanf("%d", &n);
int arr[20][20] = { 0 };
int i = 0;
int j = 0;
int flag = 1;//表示是上三角矩阵
for(i=0;i<n;i++)
{
for (j = 0; j < n; j++)
{
scanf("%d",&arr[i][j]);
}
}
for (i = 0; i < n; i++)
{
for (j = 0; j < i; j++)
{
if (arr[i][j] != 0)
{
flag = 0;
goto end;
}
}
}
end:
if (flag == 0)
{
printf("NO\n");
}
else
printf("yes\n");
return 0;
}
第十二题 有序序列判断
//有序序列判断
int main()
{
int n = 0;
int arr[50] = { 0 };
scanf("%d",&n);
int i = 0;
int flag1 = 0;
int flag2 = 0;
for (i = 0; i < n; i++)
{
scanf("%d",&arr[i]);
if (i > 0)
{
if (arr[i] > arr[i - 1])
{
flag1 = 1;
}
else if(arr[i]<arr[i-1])
{
flag2 = 1;
}
else
{
;
}
}
}
if (flag1 + flag2 <= 1)
{
printf("有序");
}
else
printf("无须");
return 0;
}
选择题
第一题 D
第二题 300 44
第三题 A
第四题 255
第五题 B
第六题 A
free只释放空间
第七题 C
第八题 C
第九题 C
第十题 C
第十一题 A
第十二题 B
第十三题 D
第十四题 A
第十五题 C
第十六题 C
第十七题 B
第十八题 C
第十九题 D
第二十题 B D
第二十一题 A
第二十二题 C
第二十三题 B