c语言#include<stdio.h> #define N 10 main() { int a[10],i,j,t; float avg; for(i=0;i<N;i++) scanf("%d

#include<stdio.h>
#define N 10
main()
{
int a[10],i,j,t;
float avg;
for(i=0;i<N;i++)
scanf("%d",&a[i]);
for(i=0;i<N-1;j++)
for(j=0;j<N-1-i;j++)
if(a[j]>a[j+1])
{t=a[j];a[j]=a[j+1];a[j+1]=t;}
printf("Maximum:a[0]=%d\n",a[0]);
printf("Minimum:a[9]=%d\n",a[0]);
for(avg=0,i=0;i<N;i++)
avg+=a[i];
avg=avg/N;
printf("Average:%.1f\n",avg);
for(i=0;i<N;i++)
if(a[i]>=avg&&a[i-1]<=avg)
{
printf("Closest to:a[%d]=%d\n",i,a[i]);
printf("Less than:%d(%d0%)\n",i-1,i);
}
for(i=0;i<N;i++)
printf("%d ",a[i]);
}
各位高手帮忙看看我的程序,哪里出了问题,题目是这样的1. 《仅出现一次的数》
( 教材习题5.2 ) ( filename: cp51.c )
编程序,输入10个整型数,输出这10个数中仅出
现一次的数,如没有这样的数,则输出:None. 。
例如,
输入:-12 36 72 36 87 99 87 87 -12 -35
输出:72 99 -35
输入:-12 36 72 36 87 99 72 87 -12 99
输出:None.

谢谢高手了,在下年轻,各位爱鄙视就鄙视吧 ,不怕

首先原程序有以下几个问题:
1.在排序时,for(i=0;i<N-1;j++),不能每次j++ 否则死循环;
2.if(a[j]>a[j+1]),这里的排序是递增的,但是后面的输出提示是递减的;
3.printf("Minimum:a[9]=%d\n",a[0]),不能说输出a[9]但是传参数用a[0];
4.后面打印的一些输出与题意无关,并且在程序设计的思路上,直接对数组进行排序,那么输出的顺序就不会符合题意了。

可以用这样一种思路,在输入时记录每个数字出现的频率,在输出时只输出频率为1的数字,如果一直没有输出,那么再打印None。
你可以再看一下自己的程序。
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-01-06
上面的算法不对额,不是实现这个功能的,没有必要求其平均值啊……我自己帮你写了一个,你看看:
#include<stdio.h>
#define N 10
void main()
{
int array[N];
int i,j,temp,num=0;
printf("请输入十个整数:\n");
for(i=0;i<10;i++)
{
scanf("%d",&array[i]);
}
printf("仅出现一次的数有:\n");
for(i=0;i<10;i++)
{
for(j=i;j<10;j++)
{
if(array[j]<array[i])
{
temp = array[j];
array[j] = array[i];
array[i] = temp;
}
}
}
if(array[0]!=array[1])
printf("%d ",array[0]);
else num++;
for(i=1;i<9;i++)
{
if((array[i]!=array[i-1])&&(array[i]!=array[i+1]))
printf("%d ",array[i]);
else num++;
}
if(array[9]!=array[8])
printf("%d \n",array[9]);
else num++;
if(num==10)
printf("NONE!\n");
}
第2个回答  2011-01-06
你的程序是排序的,和题目要求不相关啊...
这是我写的:里面的排序可以用也可以不用
#include<stdio.h>
#define N 10
void main()
{
//int temp,min;
int a[N],i,j;
int flag[N]={1};//标记数组,1表示出现次数一次
int count=0;//计数器

//获取用户键入的十个数
printf("Enter %d numbers:",N);
for(i=0;i<N;i++)
scanf("%d",&a[i]);
//选择排序,可以不需要
/*for(i=0;i<N-1;i++)
{
min=i;
//每轮选择排序选出i至N中最小的数并依次置于数组a[N]
for(j=i+1;j<N;j++)
if(a[min]>a[j])
min=j;
temp=a[i];
a[i]=a[min];
a[min]=temp;
}*/
//检测数组中的数字重复情况
for(i=0;i<N-1;i++)
{
for(j=i+1;j<N;j++)
{
if(a[j]==a[i])
{
//相同的数都置零
a[i]=0;
a[j]=0;
}
}
}
//检测数组中各个数字
for(i=0;i<N;i++)
{
if(a[i]==0)
{
count++;//出现大于一次的数则计数器加一
}
else
printf("%-10d\n",a[i]);
}
if(count==N)//十个数全部都出现至少一次
printf("None\n");
}
第3个回答  2011-01-06
你这个程序根本和题目就对应不上,程序实现的功能是对数组排序,然后找出最大最小值,再找出平均值上下的两个数,你确定你没看错题?或者你找的代码对么?
第4个回答  2011-01-06
题目要输出的是“只出现一次”的数,你的程序输出的是什么你知道吗?

c语言#include<stdio.h> #define N 10 main() { int a[10],i,j,t...
1.在排序时,for(i=0;i<N-1;j++),不能每次j++ 否则死循环;2.if(a[j]>a[j+1]),这里的排序是递增的,但是后面的输出提示是递减的;3.printf("Minimum:a[9]=%d\\n",a[0]),不能说输出a[9]但是传参数用a[0];4.后面打印的一些输出与题意无关,并且在程序设计的思路上,直接对数...

用C语言程序输入10个整数,求出它们的最大值,最小值及平均数
include <stdio.h>#include <conio.h>int main(){ int a[10],i,max,min; float aver; for(i=0;i<10;++i)scanf("%d",&a[i]); \/\/循环输入10个整数 aver=max=min=a[0]; \/\/初始化三个代求变量的值 for(i=1;i<10;++i){ aver+=a[i]; \/\/累加元素的值 ...

C语言:编写程序,输入10个学生的成绩数据,计算并输出平均分及低于平均分...
int main(){ int i;float a[10],min,max,avg;\/\/max表示最高分,min表示最低分,avg表示平均分 printf("请输入10位学生的分数\\n");printf("***\\n");for(i=0;i<=9;i++){ printf("请输入一位学生的分数:");scanf("%f",&a<i>);} max=min=avg=a[0];for(i=1;i<=9;i+...

C语言:输入n个数,求其最大数、最小数和平均值。
#include<stdio.h> #define N 10 int main() { int a[N]={0}; int min=0,max=0; float avg=0; int i=0,j=0,sum=0; for(i=0;i<N;i++) { scanf("%d",&a[i]); } sum=min=max=a[0]; for(i=1;i<N;i++) { sum=sum+a[i]; if(a[i]>max) ...

输入10个整数,求其中正数的个数及平均值
include<stdio.h> define N 10 void main(){ int a[N],count=0,i;float sum=0,average;printf("请任意输入10个整数,数之间以空格或回车键隔开:");for(i=0;i<N;i++){ scanf("%d",&a[i]);if(a[i]>0)count++;sum+=a[i];} average=sum\/N;printf("10个数中正数的个数是%d...

c语言求一些数的总数 平均数 最大数 最小数。。初学者别写太复杂_百度...
include<stdio.h>#define N 10void main(){ int a[N],min,max,i,sum=0; float avg; printf("输入:\\n"); for(i=0;i<N;i++) scanf("%d",&a[i]); min=a[0]; max=a[N-1]; for(i=0;i<N;i++) { if(a[i]<min) min=a[i]; if(a[i]>max) max=a[i...

从键盘输入十个整数存入一维数组中,求出它们的和及平均值并输出_百度...
数组求和、平均数的程序代码:include<stdio.h> define N 10 int main(){ int a[N]={0};float avg=0;int i=0,j=0,sum=0;for(i=0;i<N;i++){ scanf("%d",&a[i]);} for(i=0;i<N;i++){ sum=sum+a[i];} avg=sum\/N;printf("sum=%d\\n",sum);printf("avg=%.3f\\n...

C语言的编程问题,求高手解答啊。新手很不明白。6月19号之前需要用到...
1.include <stdio.h> void main(){ int a[10];int i,j,t;float avg=0;printf("请输入10个整数:\\n");for(i=0;i<10;i++)scanf("%d",&a[i]);for(j=0;j<10;j++)for(i=0;i<10-1-j;i++)if(a[i]<a[i+1]){ t=a[i];a[i]=a[i+1];a[i+1]=t;} for(i=0...

C语言:输入10个学生的单科成绩,求出其中的最高分、最低分以及超过平_百...
#include <stdio.h> int main() { int i; float a[10],min,max,avg;\/\/max表示最高分,min表示最低分,avg表示平均分 printf("请输入10位学生的分数\\n"); printf("***\\n"); for(i=0;i<=9;i++) { printf("请输入一位学生的分数:"); scanf("%f",&a[i]); } max=min=avg=a...

C语言''CCTV青歌赛"中,有10个评委分别为参赛选手打分,分数为1~100分...
include<stdio.h>#define N 10int main(void){int i,j,k,q[N],sum=0,p=0;printf("请分别输入%d个评委的评分\\n",N);for(i=0;i<N;i++){ scanf("%d",&q[i]);while((q[i]<1)||(q[i]>100))\/\/判断输入的数据是否满足在1到100之间{printf("请重新输入第%d个数据\\n",i...

相似回答