第1个回答 2015-11-27
按照题目的逻辑,先输出上半边再输出下半边
每一行先输出空格,再输出递增,最后输出递减序列
代码如下:
void PrintLine(int n)
{
if(n<1 || (n>9)){
printf("错误,请输入1~9!\n");
return;
}
for (int i=1;i<=n;i++)//上半边三角形
{
for (int j=0;j<n-i;j++)//先打印空格
{
printf(" ");
}
for (int j=1;j<=i;j++)//再打印递增数值
{
printf("%d",j);
}
for (int j=i-1;j>0;j--)//再打印递减数值
{
printf("%d",j);
}
printf("\n");
}
for (int i=n-1;i>0;i--)//打印下半边
{
for(int j=n-i;j>0;j--){//打印空格
printf(" ");
}
for (int j=1;j<=i;j++)//递增
{
printf("%d",j);
}
for (int j=i-1;j>0;j--)//递减
{
printf("%d",j);
}
printf("\n");
}
}
int main(int argc, char* argv[])
{
PrintLine(5);
return 0;
}
第2个回答 2016-11-09
#include<stdio.h>
void compare(int a[],int b[],int number);
int main()
{
int arry1[400] = {0}; //int型的最大值为65536大于e的9次方
int arry2[200] = {0};
int i = 0;
int number= 0;
printf("Sample Input\n");
scanf("%d",&number);
for(i = 0;i<number*2;i++)
scanf("%d",&arry1[i]);
compare(arry1,arry2,number);
printf("Sample Output\n");
for(i = 0;i<number;i++) //打印数据处理后结果
{
printf("%d",arry2[i]);
printf("\n");
}
return 0;
}
void compare(int a[],int b[],int number) //比较函数,对一个数分解,并整除后比较。
{
int n = 0;
int k = 0;
int i = 0;
int j = 0;
int c = 0;
int d = 0;
int min = 0;
for(i =0;i<number*2;i++,j++) //共输入number*2个数据
{
n = a[i];
b[j] = a[i];
i++;
k = a[i];
for(c = 0;c<=n;c++)
for(d = 0;d<=n;d++)
{
if(d+c==n)
{
min = d / k + c / k; //找出最小值
if(b[j]>min)
b[j] = min; //赋值给b数据
}
}
}
}
测试了两组,没有问题。
第3个回答 2014-05-29
#include<stdio.h>
float cmp(int n,float val)
{
switch(n){
case 1:val = 1/2-1/2;break;
case 2:val = 2/3-1/2;break;
case 3:val = 3/4-1/2;break;
case 4:val = 4/5-1/2;break;
default:
val = 0;
printf(“input n error!\n”);
break;
}
return val;
}
int main()
{
int T, n;
folat val;
int i;
printf(“please input T:\n”);
scanf(“%d”, &T);
if (T<1) {
printf(“input T error\n”);
exit(1);
}
for (i=1;i<=T;++i) {
scanf(“%d”, &n);
val = cmp(n, val);
if (val==0)
exit(1);
val = (val*100+5)/100; //四舍五入
printf(“%.2f\n”,val);
}
return 0;
}
代码没有测试,你测一下试试吧 。
第4个回答 2011-01-15
1.函数声明错float *search(float(*pointf[4]));应该为float *search(float(*pointf)[4]);由下面的函数定义可以看出pointf为一个指针,指向4个元素的数组.
2.pointf赋值为score这个地址.score是二维数组的地址.可以将二维数组看成一维数组.即score[0]={60,70,80,90}},那么*pointf则是一维数组{60,70,80,90}的首地址.则*pointf+1就是{60,70,80,90}这个数组中第二个元素70的地址.那么*(*pointf+i)=score[0][i]
3.*(pointf+1)=score[1],是一个地址
第5个回答 2015-06-29
若是计算平均值,建议用float类型,int avg(int a[],int n)返回的是一个整型数据,在C语言中,3/2的整型值为1,数据精度很低。代码如下:
#include<stdio.h>
int avg(int a[] , int n);
int main()
{
int a[10]={1,2,3,
4,5,6,7,8,9,10};//测试数组,长度为10
printf("%d\n",avg(a,10));
return 0;
}
int avg(int a[],int n)
{
int i,avg=0;
for(i=0;i<n;i++)
{
avg+=a[i];
}
avg/=n;
return avg;
}