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;
}