【王道训练营 C/C++方向基础 60 题(1-10)】

1.有一个函数如下:

y=\left\{\begin{matrix}x(x<5) \\ x+6(5<=x<15) \\ x-6(x>=15) \end{matrix}\right.

输入 x 的值,计算出相应的 y 值。

#include<stdio.h>
int main(){
    int x,y;
    printf("x=");
    scanf("%d",&x);
    if(x<5) y=x;
    else if(x>=5&&x<15) y=x+6;
    else y=x-6;
    printf("y=%d",y);
    return 0;
}

2.输入一个小写字母,将其转换为大写字母。

#include<stdio.h>
#include<ctype.h>
int main(){
	char x;
	scanf("%c",&x);
	if(islower(x)==0) printf("error");
	else printf("%c is upper",x-32);
	return 0;
} 

3.求一个 3×3 矩阵主对角线元素之和。

#include<stdio.h>
int main(){
	int a[3][3];
	for(int i=0;i<3;i++){
		scanf("%d%d%d",&a[i][0],&a[i][1],&a[i][2]);
	}
	for(int i=0;i<3;i++){
		printf("%-3d %-3d %-3d\n",a[i][0],a[i][1],a[i][2]);
	}
	printf("%d",a[0][0]+a[1][1]+a[2][2]);
	return 0;
}

4.求 100~999 之间的水仙花数。所谓水仙花数,是指一个 3 位数,它的每位数 字的立方之和等于该数。例如,因为 153=1+5+3,所以 153 为水仙花数。

#include<stdio.h>
int main(){
	for(int i=100,j,k,sum;i<1000;i++){
		j=i;
		sum=0;
		while(j){
			k=j%10;
			sum+=k*k*k;
			j/=10;
		}
		if(sum==i) printf("%d ",i);
	}
	return 0;
}

5.输入百分制成绩,并把它转换成五级分制,转换公式为:

grade=\left\{\begin{matrix} A(90-100)\\ B(80-89) \\ C(70-79) \\ D(60-69) \end{matrix}\right.

#include<stdio.h>
int main(){
	int i;
	scanf("%d",&i);
	if(i>=90) printf("A");
	else if(i>=80) printf("B");
	else if(i>=70) printf("C");
	else if(i>=60) printf("D");
	else printf("E");
	return 0;
} 

6. 斐波拉契数列递归实现的方法如下:

int Funct( int n )
{
if(n==0) return 1;
if(n==1) return 1;
return Funct(n-1) + Funct(n-2);
}

请问,如何不使用递归,来实现上述函数?

#include<stdio.h>
int main(){
	int a[20];//计算数列前二十个 
	a[0]=1,a[1]=1;
	printf("1 1 ");
	for(int i=2;i<20;i++){
		a[i]=a[i-1]+a[i-2];
		printf("%d ",a[i]);
	}
	return 0;
}

7.编写一个程序,将一个数组中的值按逆序重新存放。例如,原来顺序为 8,6,5,4,1。要求改为 1,4,5,6,8

#include<stdio.h>
int main(){
	int a[10]={8,6,10,4,7,11,22,2,77,13};
	//每次找到剩下的最小的,把它放到最前面 
	for(int i=0,k;i<9;i++){
		int min=a[i],pos=i;
		for(int j=i+1;j<10;j++){
			if(min>a[j]) min=a[j],pos=j;
		}
		k=a[i],a[i]=min,a[pos]=k;
		for(int i=0;i<10;i++){
			printf("%-4d",a[i]);
		}
		printf("\n");
	}
	return 0;
}

8.编写一个程序根据输入的三角形的三条边判断是否能组成三角形,如果可以 则输出它的面积和三角形类型(等边、等腰、直角三角形)。

#include<stdio.h>
#include<math.h>
int main(){
	int a,b,c,i;
	scanf("%d%d%d",&a,&b,&c);
	//先把三条边从小到大排序,可以减少后面条件选择 
	if(a>b) {i=a,a=b,b=i;} 
	if(a>c) {i=a,a=c,c=i;}
	if(b>c) {i=c,c=b,b=i;}
	//验证三边关系 
	if(a+b<=c|c-a>=b|c-b>=a) printf("error\n");
	double p=(a+b+c+0.0)/2,s;
	s=sqrt(p*(p-a)*(p-b)*(p-c));
	printf("s=%.2f\n",s);
	if(a==b&&a==c) printf("等边");
	if(a==b) printf("等腰");
	int A,B,C;
	A=a*a,B=b*b,C=c*c;
	if(A+B==C) printf("直角");
	return 0;
} 

9.. 从键盘输入若干个学生成绩,统计并输出最高成绩和最低成绩,当输入负数 时结束输入。

#include<stdio.h>
int main(){
	int grade,min,max;
	scanf("%d",&grade);
	min=max=grade;
	while(grade>=0){
		if(grade>max) max=grade;
		if(grade<min) min=grade;
		scanf("%d",&grade);
	}
	printf("min=%d,max=%d",min,max);
	return 0;
}

10.编写函数将化氏温度转换为摄氏温度,公式为 C=(F-32)*5/9;并在主函 数中调用。

#include<stdio.h>
double fun(double x){
	double y;
	y=(x-32)*5/9;
	return y;
}
int main(){
	double f,c;
	scanf("%lf",&f);
	c=fun(f);
	printf("f=%.2f,c=%.2f",f,c);
	return 0;
} 

  • 2
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
王道数据结构C是一种基于C语言的数据结构实现的教材或参考书籍。该教材根据数据结构的原理与应用,详细介绍了常见的数据结构和算法,并给出了它们的C语言实现。 在实现王道数据结构C时,我们可以通过以下几个步骤来进行: 1. 理解数据结构的原理和特性:首先,我们需要深入理解所学习的数据结构的基本原理和特性,包括线性表、链表、栈、队列、树、图等。熟悉它们的操作规则以及适用的场景。 2. 设计算法和数据结构:其次,针对每个数据结构,我们需要设计相应的算法和数据结构,以满足各种操作和需求。对于线性表,我们可以选择使用顺序表或链表来实现,对于树结构,可以选择二叉树或多叉树等等。 3. 编写C语言代码实现:一旦我们设计好了算法和数据结构,我们可以使用C语言来实现它们。根据数据结构的不同,可能会使用到C语言的指针、结构体、递归等特性来完成实现。 4. 测试和验证:完成代码实现后,我们需要编写一些测试用例来验证代码的正确性和性能。通过不同的测试用例,我们可以检查代码是否满足预期的需求,并且确认代码的运行效率。 5. 优化和修改:在测试过程中,我们可能会发现一些代码的问或者可以进一步优化的地方。在保证代码正确性的前提下,我们可以对代码进行优化,提高其运行效率和性能。 通过上述步骤,我们可以实现王道数据结构C。通过编写和理解代码,我们可以更深入地学习和理解数据结构的原理和应用,提高自己的编程能力和解决问的能力。同时,也可以帮助我们更好地理解和掌握C语言的使用。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值