C语言 百炼成钢13

时间:2023-01-01 23:45:58
//题目37:将一个数组逆序输出。用第一个与最后一个交换。

#include<stdio.h>
#include<stdlib.h>
#include<math.h> //分析:逆序输出,就会想到使用递归可以轻易实现,但是这次我就用for循环逆序打印吧 #define N 10 //这是为了以后动态数组的使用 void main(){
int a[N] = { , , , , , , , , , };
printf("原数组\n");
for (int *p = a; p < a + N; p++)
{
printf("%5d",*p);
}
printf("\n逆序打印\n");
//判断数组长度是偶数,还是奇数,好决定怎么调换
int temp = ;
//if ((N + 1) % 2)
//{
// //奇数 //}
//else{
// //偶数
//}
//我可以在for中加一个判断,就不用循环2次
for (int i = ; i < (N + ) / ; i++)
{
if (a[i] != a[N - i - ])//判断是数组长度奇数,还是偶数的区别
{
temp = a[i];
a[i] = a[N - i - ];//N是10,a[0]=a[9]
a[N - i - ] = temp;
}
}
for (int *p = a; p < a + N; p++)
{
printf("%5d", *p);
} system("pause");
}

C语言 百炼成钢13

//题目38:取一个整数a从右端开始的4~7位。

#include<stdio.h>
#include<stdlib.h> //分析:题目的意思是 例如 0011 1010 获取0--011 1--010 获取中间的这四位的值
//获取中间这四位,我们可以先通过与操作,将其他几位置0,再通过移位操作,获取值 void main(){
unsigned char a = ; // 即0011 1010
unsigned char b = ;// 构造0111 1000 用来将其他位置0,需要的位不变
unsigned char c = a&b;//得到0011 1000
unsigned char d = c >> ;//右移 3位 0000 0111 得到结果是7 printf("\n得到的结果是%d\n",d);
system("pause");
}

C语言 百炼成钢13

//题目39:打印出杨辉三角形(要求打印出10行如下图) 
//1
//1  1
//1  2  1
//1  3  3  1
//1  4  6  4  1
//1  5  10 10 5  1 #include<stdio.h>
#include<stdlib.h> //分析:使用二维数组解决,杨辉三角,例如: a[2][1]=a[1][0]+a[1][1]; void main(){
int a[][] = { };
//赋值
for (int i = ; i < ; i++)
{
for (int j = ; j < ; j++)
{
if (j==)
{
a[i][j] = ;
}
else{
a[i][j] = a[i-][j-] + a[i-][j];
}
}
}
//打印
for (int i = ; i < ; i++)
{
for (int j = ; j < ; j++)
{
if (a[i][j]!=)
{
printf("%5d", a[i][j]);
}
}
//换行
printf("\n");
} system("pause");
}

C语言 百炼成钢13