C语言入门习题系列四(含答案)

31 三角形类型判断

输入三个数,判断这三个数对应长度的线段构成的三角形是什么类型。设计数据并测试程序。

#include <stdio.h>
#include <stdlib.h>

int main()
{
	float a,b,c;
	scanf("%f %f %f",&a,&b,&c);
	if(a<=0||b<=0||c<=0)
	{
		printf("三角形的边长不能为0或负,请重新输入!\n");
		exit(0);
	}
	if(a+b<c||a+c<b||b+c<a)
	{
		printf("不能构成三角形,请重新输入!\n");
		exit(0);
	}
	else if(a==b&&b==c)
		printf("是等边三角形。\n");
	else if(a==b||a==c||b==c)
		printf("是等腰三角形。\n");
	else
		printf("是一般三角形。\n");
	return 0;
}

32 输入百分制成绩输出等级

输入一个百分制成绩,按要求输出对应的成绩等级。

#include <stdio.h>
#include <stdlib.h>

int main()
{
	int score;
	printf("请输入百分制成绩:"); 
	scanf("%d",&score);
	if(score<0||score>100)
	{
		printf("输入数据错误\n");
		exit(0);
	}
	switch(score/10)
	{
		case 10:
		case 9:printf("A\n");break;
		case 8:printf("B\n");break;
		case 7:printf("C\n");break;
		case 6:printf("D\n");break;
		default:printf("E\n");break;
	}
	return 0;
}

33 输出五个整数最大最小值

编程找到并输出5个整数中的最大和最小数。

#include <stdio.h>

int max(int x,int y);

int main()
{
	int a,b,c,d,e,m;
	scanf("%d %d %d %d %d",&a,&b,&c,&d,&e);
	m=max(max(max(max(a,b),c),d),e);
	printf("最大值:%d\n",m);
	return 0;
}

int max(int x,int y)
{
	int max;
	if(x>y)
		max=x;
	else
		max=y;
	return max;
}

34 矩阵行对调

用循环将矩阵的第1行与第3行对调。

#include <stdio.h>
#define N 4
#define M 3

void transpose(int a[M][N],int t[N][M]);

int main()
{
	int a[M][N]={{0,2,9,7},{5,13,6,8},{27,11,1,3}};
	int t[N][M];
	transpose(a,t);    
	int i,j;
    for(i=0;i<M;i++)
    {
    	for(j=0;j<N;j++)
    		printf("%3d",a[i][j]);
    	printf("\n");
    }
    return 0;
}

void transpose(int a[M][N],int t[N][M])
{
	int i,j;
	for(i=0,j=0;j<N;j++)
	{
		t[j][i]=a[2-i][j];
		a[2-i][j]=a[i][j];
		a[i][j]=t[j][i];
	}
}

35 编程输出特定形式的数字

#include <stdio.h>

int main()
{
	int a[6][6]={{1},{2,1},{3,2,1},{4,3,2,1},{5,4,3,2,1},{6,5,4,3,2,1}};
	int i,j;
	for(i=0;i<6;i++)
	{
		for(j=0;j<6;j++)
			printf("%5d",a[i][j]);
		printf("\n");
	}
	return 0;
}

36 输出n阶左上拐矩阵

输出n阶左上拐矩阵,n的值由用户输入。

#include <stdio.h>

int main()
{
	int n;
	scanf("%d",&n);
	int a[n][n];
	int i,j;
	for(i=0;i<n;i++)
	{
		for(j=0;j<n;j++)
			do{
				a[i][j]=1;
				if(j<i)
					a[i][j]=j;
				else
					a[i][j]=i;
			}while(i<n);
			printf("%3d",a[i][j]);
		printf("\n");
	}
	return 0;
}

37 输出n阶蛇形矩阵

输出n阶蛇形矩阵,n的值由用户输入。

#include <stdio.h>
#define N 5 

int main()
{
	int a[N][N]={0};
	int i,j,k,count1=1,count2=N*N;
	i=0;
	j=N-1;
	for(k=1;k<=N;k++)
	{
		do{
			a[i][j]=count1;
			count1++;
			i=i-1;
			j=j-1;
		}while(i>=0&&i<N&&j>=0&&j<N&&count1<=((1+N)*N/2));
		if(i<0)
			i=i+1;
		do{
			a[i][j]=count1;
			count1++;
			i=i+1;
			j=j+1;
		}while(i>=0&&i<N&&j>=0&&j<N&&count1<=((1+N)*N/2)); 
		if(j>=N)
			j=j-1;	
	}
	i=N-1;
	j=0;
	for(k=1;k<N-1;k++)
	{
		do{
			a[i][j]=count2;
			count2--;	
			i=i+1;
			j=j+1;
		}while(i>=0&&i<N&&j>=0&&j<N&&count2>((1+N)*N/2));
		if(i>=N)
			i=i-1;
		do{
			a[i][j]=count2;
			count2--;		
			i=i-1;
			j=j-1;
		}while(i>=0&&i<N&&j>=0&&j<N&&count2>((1+N)*N/2)); 
		if(j<0)
			j=j+1;	
	}
	for(i=0;i<N;i++)
	{
		for(j=0;j<N;j++)
			printf("%d  ",a[i][j]);
		printf("\n");
	}
	return 0; 
}

38 寻找数组中的最值并对调

输入5个整数,并存储在数组中,找出最大数与最小数所在的下标位置,并把两者对调,然后输出调整后的5个数。

#include <stdio.h>

int main()
{
	int a[5];
	int i,chucun,maxi=0,mini=0;
	for(i=0;i<5;i++)  //输入并找出最值对应的下标位置 
	{
		scanf("%d",&a[i]);	
		if(a[i]>a[maxi])
		{
			maxi=i;
		}
		if(a[i]<a[mini])
		{
			mini=i;
		}
	}
	chucun=a[maxi];    //调换顺序 
	a[maxi]=a[mini];
	a[mini]=chucun;
	for(i=0;i<5;i++)
		printf("%d ",a[i]);
	return 0;
}

39 计算数组某列平均值及各行和的最小值

编写一个函数计算具有NROWS和NCOOLS列的二维数组中指定列的平均值以及数组各行的和的最小值。NROWS和NCOOLS为常量名。

#include <stdio.h>
#define R 3
#define C 3

int main()
{
	int a[R][C];
	int i,j;
	int col,minr=100000,rowsum=0,colsum=0;
	float avg;
	scanf("%d",&col); //输入指定列数 
	for(i=0;i<R;i++)
	{
		rowsum=0;
		for(j=0;j<C;j++)
		{
			scanf("%d",&a[i][j]);
			rowsum+=a[i][j];  //计算每行的和的值 
		}
		if(rowsum<minr)
		{
			minr=rowsum;  //找出各行的和的最小值 
		}
		colsum+=a[i][col-1];  //计算指定列的和的值 
	}
	avg=(double)colsum/R;  //计算指定列的平均值 
	printf("第%d列的平均值为:%f。\n数组各行的和的最小值为:%d",col,avg,minr);
	return 0;
}

40 颠倒数顺序

输入一个正整数,并将其颠倒过来。

#include <stdio.h>

int main()
{
	int x;
	scanf("%d",&x);
	int yu,dao=0;  //yu为x除10所得余数,dao为颠倒顺序后输出的数 
	while(x%10!=0)  //颠倒顺序 
	{
		yu=x%10;
		dao=dao*10+yu;
		x=x/10;
	}
	printf("%d",dao);
	return 0;
} 

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值