你的位置:首页 > 信息动态 > 新闻中心
信息动态
联系我们

【数据结构】考研代码整理--基础篇(6-10)

2021/12/18 18:49:03

6 利用递归函数调用方式,将所输入的5个字符,以相反的顺序打印出来

# include <stdio.h>
# include <conio.h>
main(){
	int i =5;
	void palin(int n);// 在main函数之后定义,需要进行说明
	printf("\40:");
	plain(i);
	printf("\n");
	getch();
}
void plain(int n){
	char next;
	if(n <= 1){
		next = getchar();
		printf("\n\0:");
		putchar(next);
	}
	else{
		next = getchar();
		palin(n-1);
		putchar(next);
	}
}

7 求一百以内的素数

程序分析

#include<stdio.h>
#include<math.h>
 int main()
 {
 	int k;
 	for (int i=2;i<100;i++)
 	{
 		bool flag=true;
 		k=(int)sqrt(i);
 		for (int j=2;j<=k;j++)
 		{
 			if(i%j == 0){
 				flag=false;
 				break;
 			} 
		}
		if(flag == true)
			printf("%d ",i);
	}
 	return 0;
 }

8 求一个3*3的矩阵对角线元素之和

程序分析
利用双重for循环控制输入二维数组,再将a[i] [i]累加后输出

# include <stdio.h>
void main(){
	float a[3][3], sum = 0;
	printf("please input rectangle element:\n")
	for(int i = 0; i < 3; i++)
		for(int j = 0; j < 3; j++)
			scanf("%f", &a[i][j]);
	for(int i = 0; i < 3; i++)
		sum = sum + a[i][i];
	printf("%6.2f", sum);
	} 
}

9 有一个已经排好序的数组1,4,6,9,13,16,19,28,40,100. 现在输入一个数,要求按原来的规律将它插入到数组中

程序分析
首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入此元素之后的数,依次后移一个位置

# include <stdio.h>
void main(){
	int a[11] = {1, 4, 6, 9, 13, 16, 192840100};
	int temp1, temp2, number, end, i, j;
	for(i = 0; i < 10; i++)
		printf("%5d",a[i]);
	printf("\n");
	printf("please insert a new number:")
	scanf("%d", &number);
	end = a[9];
	if(number > end)
		a[10] = number;
	else{
		for(i = 0; i < 10; i++){
			if(a[i] > number){
				temp1 = a[i];
				a[i] = number;
				for(j = i+1; j < 11; j++){
					temp2 = a[j];
					a[j] = temp1;
					temp1 = temp2;
				}
				break;
			}
		}
	}
	for(i = 0; i < 11; i++){
		printf("%6d", a[i]);
	}
}

10 取一个整数a从右端开始的4~7位

程序分析
1)先使a右移4位
2)设置一个低4位全为1,其余全为0的数,可用~ ( ~ 0<<4)
3)将上面两者进行&运算

void main(){
	unsigned a,b,c,d;
	scanf("%o", &a);
	b = a >> 4;
	c = ~(~0<<4);
	d = b & c;
	printf("%o\n%o\n", a, d);
}