㈠ 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;
}
希望對你有幫助。