㈠ c语言编程:求出一维数组中最小元素的值以及它所在的下标号
//这个程序的好处是能输出所有的最小数的下标,比如1,1,2,3,4中能输出a[0],a[1],而上面三位的不能
#include <stdio.h>
#define M 5//自己定义数组的长度
void main()
{
int i,n=0,min;
int a[M];
printf("请输入%d个数,用空格隔开:",M);
for(i=0;i<5;i++)
scanf("%d",&a[i]);
min=a[0];
for(i=1;i<M;i++)
if(a[i]<=min)
{
min=a[i];
}
printf("这组数组中最小的数是%d,分别是:\n",min);
for(i=0;i<5;i++)
if(a[i]==min)
printf("a[%d] ",i);
}
㈡ C语言一维数组
#include<stdio.h>
main()
{
int a[10],i,j,max,min,maxi,mini;
for(i=0;i<10;i++)
{
printf("请输入第%d个数是值:",i+1);
scanf("%d",&a[i]);
}
printf("程序输入完毕!!!\n");
min=a[0],max=a[0];
mini=0,maxi=0;
for(i=0;i<10;i++)
{
if(min>a[i])
{
min=a[i];
mini=i;
}
if(max<a[i])
{
max=a[i];
maxi=i;
}
}
printf("数组中最大的值是:%d,下标是:%d\n最小值是:%d,下标是:%d",max,maxi,min,mini);
}
㈢ C语言如何求一维数组的不重复数据个数
下面是C语言求一维数组的不重复数据个数的实现代码,供参照:
#include<stdio.h>
intmain()
{
inti,j,m,n;
intnum[100];
printf("请输入数组的长度个数: ");
scanf("%d",n);
if(n>sizeof(num))n=sizeof(num);
printf("请输入%d个数值: ");
for(i=0;i<n;i++)
{
scanf("%d",&num[i]);
}
m=0;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(i!=j&&num[i]==num[j])break;
}
if(j==n)m++;
}
printf("数组中不重复值的个数:%d ",m);
return0;
}
有疑问可以追问。
㈣ 怎样用c语言找出一维数组(有9个元素,由键盘
简单点的话,做个标记就可以了。
除了最大值以外的最大的那个就是第二大。
除了最大和第二大的那个,就是第三大。
但不知道,你希望,在有重复的值的情形(例如下面的情况)下
1,2,3,4,4,5,5,6,6。
应该是输出什么呢?
㈤ c语言一维数组
#include<stdio.h>
#include<malloc.h>
#include<string.h>
typedefchar*string;//字符串
//学生结构体
typedefstructStudent{
charname[16];//姓名
intid;//学号
floatgrade;//成绩
structStudent*next;//下一个学生节点
}Student,*student;
//班级结构体
typedefstructClass{
studentlist;//学生列表
intnum;//学生人数
}Class,*class;
//创建一个新班级
classnewClass();
//销毁一个班级
voiddestroyClass(classc);
//创建一个新学生
studentnewStudent(stringname,intid,floatgrade);
//向班级中加入一个学生
voidappend(classc,studentstu);
//统计不及格人数,并打印名单
voidshowNotPass(classc);
//统计全班平均分及以上的学生人数并打印名单
voidshowGreaterThanAvg(classc);
//统计各分数段的学生人数及所占百分比
voidshowGradeRange(classc);
//输出最高分及学号
voidshowFirst(classc);
//输出班里的所有成员
voidoutput(classc);
intmain(){
charname[16];
intid;
floatgrade;
classmyClass=newClass();//创建一个班级
printf("输入学生信息 ");
puts("姓名 学号 成绩");
while(~scanf("%s%d%f",name,&id,&grade)&&grade>=0){//grade<0结束
append(myClass,newStudent(name,id,grade));//向班级中加入一名新学生
}
//不及格信息
showNotPass(myClass);
//超过平均分的信息
showGreaterThanAvg(myClass);
//区间信息
showGradeRange(myClass);
//第一名
showFirst(myClass);
return0;
}
//创建一个新班级
classnewClass(){
classtmp=(class)malloc(sizeof(Class));
tmp->num=0;
tmp->list=NULL;
returntmp;
}
//销毁一个班级
voiddestroyClass(classc){
if(c==NULL)return;
studentlist=c->list;
studentnext=NULL;
while(list!=NULL){
next=list->next;
free(list);//释放当前节点
list=next;
}
free(c);
c=NULL;
}
//创建一个新学生
studentnewStudent(stringname,intid,floatgrade){
studenttmp=(student)malloc(sizeof(Student));
strcpy(tmp->name,name);
tmp->id=id;
tmp->grade=grade;
tmp->next=NULL;
returntmp;
}
//向班级中加入一个学生
voidappend(classc,studentstu){
if(c==NULL||stu==NULL)return;
stu->next=c->list;
c->list=stu;
c->num++;
}
//统计不及格人数,并打印名单
voidshowNotPass(classc){
if(c==NULL)return;
classtmpClass=newClass();
studenttmp=c->list;
for(;tmp!=NULL;tmp=tmp->next){
if(tmp->grade<60){
studenttmpStu=(student)malloc(sizeof(Student));
memcpy(tmpStu,tmp,sizeof(Student));
append(tmpClass,tmpStu);
}
}
printf("不及格人数:%d ",tmpClass->num);
output(tmpClass);
destroyClass(tmpClass);
}
//统计全班平均分及以上的学生人数并打印名单
voidshowGreaterThanAvg(classc){
if(c==NULL||c->num==0){
puts("班级没有人");
return;
}
studenttmp=c->list;
floatsum=0;
for(;tmp!=NULL;tmp=tmp->next){
sum+=tmp->grade;
}//统计总分
floatavg=sum/c->num;//平均分
classtmpClass=newClass();
for(tmp=c->list;tmp!=NULL;tmp=tmp->next){
if(tmp->grade>=avg){
studenttmpNode=(student)malloc(sizeof(Student));//一个临时学生节点
memcpy(tmpNode,tmp,sizeof(Student));
append(tmpClass,tmpNode);
}
}
printf("平均分及以上的学生人数为:%d ",tmpClass->num);
output(tmpClass);
destroyClass(tmpClass);
}
//统计各分数段的学生人数及所占百分比
voidshowGradeRange(classc){
if(c==NULL){
puts("班级没有人");
return;
}
inti;
classcontainer[10];
for(i=0;i<10;i++){//初始化分数段班级容器
container[i]=newClass();
}
studenttmp=c->list;
for(;tmp!=NULL;tmp=tmp->next){
intindex=(int)tmp->grade%10;//区间
if(index>9)index=9;//大于90的算成一个区间
studenttmpStu=(student)malloc(sizeof(Student));
memcpy(tmpStu,tmp,sizeof(Student));
append(container[index],tmpStu);
}
for(i=0;i<10;i++){
intnum=container[i]->num;
printf("%d~%d的人数:%d,占比:%.6g%% ",i*10,(i+1)*10,num,(float)(num*100)/c->num);
destroyClass(container[i]);
}
puts("");
}
//输出最高分及学号
voidshowFirst(classc){
if(c==NULL||c->list==NULL)return;
studentmax=c->list;
studenttmp=max->next;
for(;tmp!=NULL;tmp=tmp->next){
if(tmp->grade>max->grade)max=tmp;
}
printf("最高分:%.2g,学号:%d ",max->grade,max->id);
}
voidoutput(classc){
if(c==NULL)return;
puts("名单:");
studenttmp=c->list;
for(;tmp!=NULL;tmp=tmp->next){
printf("%s ",tmp->name);
}
puts("");
}
代码有点长....
㈥ C语言一维数组
y[x[i]]++;看这个,假设x[i]值为2,那么y[2]就会加1,这个程序其实是统计0,1,2,3这几个数字的个数的,
y[0],就是0的个数,y[1]就是1的个数,.......所以y[3]就是3的个数,3正好有4个,当然,结果为4
㈦ C语言如何计算一维数组个数
以上代码中sizeof(a)的结果是40,而sizeof(int)的结果是4,len就是10,即数组a所占int型的个数;
你可以进行循环判断,当a[i]至a[9]都为0时,有效数值的个数为i
㈧ c语言编写程序实现求一维数组(8个元素)元素之和。
你的数组只有定义了维数为7,但是你却往b地址开始的内存里面读入了8个数,然后算的时候,也是算的8个数字的和,所以会出错,。 修改办法:把两处<=7 都改成 <7 就行了!
int l( int* a, int num )
{
int i=0,j=0;
for(;i<num;i++)
j=j+a[i];
return j;
}
void main()
{
int b[7] = { 0 };
for ( int i = 0; i < 7; ++i )
{
scanf( "%d", &b[i] );
}
int kk = l( b, 7 );
printf( "%d", kk );
system("pause");
}
㈨ C语言 一维数组
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
intmain()
{
inta[20];
inti,j,t;
srand(time(NULL));
for(i=0;i<19;i++)
a[i]=rand()%90+10;
for(i=0;i<18;i++)
{
for(j=i+1;j<19;j++)
if(a[i]>a[j])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
for(i=18;i>=0;i--)
{
if(a[i]<55)break;
a[i+1]=a[i];
}
a[i+1]=55;
for(i=0;i<20;i++)
printf("%d",a[i]);
printf(" ");
return0;
}
㈩ C语言 一维数组
我写了一个完成的程序给你参考。
源代码如下(vc++ 6.0下编译通过):
#include<stdio.h>
void sort(int *a,int len)
{
int i=0;
int j;
int t;
for(i=0;i<len;i++)
{
for(j=0;j<len-i-1;j++)
{
if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
}
int main(void)
{
int in[10] = {56,78,98,45,58,34,12,90,26,88},ins,i,k=9,j=0;
printf("原始数列:\n");
for (i = 0; i < 10; i++)
{
printf("%d ", in[i]);
}
printf("\n");
sort(in, 10);
printf("排序后数列:\n");
for (i = 0; i < 10; i++)
{
printf("%d ", in[i]);
}
printf("\n");
printf("请输入要查找的数:");
scanf("%d",&ins);
i=(j+k)/2;
while(j<=k)
{
if(in[i]>ins)
k=i-1;
else if(in[i]<ins)
j=i+1;
else break;
i=(j+k)/2;
}
printf("你查找的是其中的第%d个数.\n",i+1);
return 0;
}
希望对你有帮助。