大清早起来帮你做的,结果都通过编译运行,完全正确。 这次你可能真的很急,以后得自己多多努力学习!
1.编写程序,输入一个正整数n(1<n<=10),在输入n个整数,将最小值与第一个数交换,最大值与最后一个数交换,然后输出交换后的n个数。
#include<stdio.h>
#define N 10
int main()
{
int i,t,*p_max,*p_min,*p,a[N];
printf("请输入%d个数: ",N);
for(i=0;i<N;i++)
scanf("%d",&a[i]);
p=a;
p_max=p;
p_min=p;
for(i=1;i<N;i++) /*此循环用于找最小的数和最大的数的地址*/
{
if(*(p+i)>*p_max)
p_max=p+i;
if(*(p+i)<*p_min)
p_min=p+i;
}
p=a;
/*最大的数与最后一个数对换*/
t=*(p+N-1);
*(p+N-1)=*p_max;
*p_max=t;
/*最小的数与第一个数对换*/
t=*p;
*p=*p_min;
*p_min=t;
/*打印输出*/
for(i=0;i<N;i++)
printf("%d ",*(p+i));
printf("\n");
return 0;
}
2.编写程序,输入一个正整数n(1<n<=6)和n阶方阵a中的元素,如果a是上三角矩阵,输出“YES”,否则,输出“NO”(上三角矩阵即主对角线以下的元素都为0的矩阵,主对角线为从矩阵的左上角至右下角的连线。)
#include<stdio.h>
#include<malloc.h>
void main()
{
int i,j,flag=0,n,*a[6];
scanf("%d",&n);
if(n<=1||n>=7)
printf("n的值不符合要求,按任意键退出程序运行!\n");
else
{
for(i=0;i<n;i++)
{
a[i]=(int*)calloc(n,sizeof(int));
if(a[i]==NULL)
printf("内存分配失败,程序无法运行!请按任意键退出程序运行!\n");
}
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%d",a[i]+j);
for(i=0;i<n;i++)
for(j=0;j<=i;j++)
if(*(a[i]+j)!=0)
{
flag=1;
break;
}
if(flag==0)
printf("YES\n");
else
printf("NO\n");
}
}
3.编写程序,输入两个正整数m和n(1<=m,n<=6),然后输入该m行n列矩阵a中的元素,分别求出各行元素之和,并输出。
#include<stdio.h>
#include<malloc.h>
void main()
{
int i,j,m,n,s,*a[6];
scanf("%d%d",&m,&n);
if(n<1||n>6||m<1||m>6)
printf("输入的值不符合要求,按任意键退出程序运行!\n");
else
{
for(i=0;i<m;i++)
{
a[i]=(int*)calloc(n,sizeof(int));
if(a[i]==NULL)
printf("内存分配失败,程序无法运行!请按任意键退出程序运行!\n");
}
for(i=0;i<m;i++)
for(j=0;j<n;j++)
scanf("%d",a[i]+j);
for(i=0;i<m;i++)
{
s=0;
for(j=0;j<n;j++)
s+=*(*(a+i)+j);
printf("第%d行的元素的和为%d.\n",i,s);
}
}
}
温馨提示:答案为网友推荐,仅供参考