1. 程序設計一般什麼情況下會考慮使用循環,什麼情況使用數組,循環和數組本質上有
循環是一種程序結構,用來處理反復的事情,最簡單的例子,例如需要顯示100個符號、或者某段文字列印100次,就可以用一個FOR循環來解決,比把成代碼重復100次要優雅一點。最簡單循環稍微改動就可以方便的處理復雜得多的事情,例如循環裡面使用次數的變數,可以實現列印九九表這樣的代碼。看見了吧,循環跟數組往往沒有關系,上面的例子就沒有數組什麼事情。
數組是一批類型相同的變數的集合,數組較多的時候,為了程序更加優雅,一般都使用循環程序來處理(賦值、計算等)。
2. C語言數組的排序查找插入刪除本題目的任務是編寫完成整數數組和結構體數組的排序、查找、插入、刪除操作
一、設計要求1、數據定義 整型數組部分,設計一個10個元素的整型數組。鍵盤輸入數組中的10個元素,並輸出數組的原數據(原數組的數據和排列順序)。以便與處理後的結果相比較。 結構體數組部分,設計一個結構體 struct student{ char name[20]; int age; double score; };定義一個該結構體的數組:struct student stu[10];鍵盤輸入數組中的10個元素,並輸出數組的原數據(原數組的數據和排列順序)。以便與處理後的結果相比較。要求輸出為表格形式。2、設計一個兩級菜單,完成上述程序結構的控制與調用3、編寫排序函數(分別編寫函數)函數功能是對整型數組或結構體數組中的數據進行排序處理,並輸出操作結果。整型數組,要求使用冒泡排序法進行處理,從大到小排序,輸入一組整數並輸出,對這組整數進行排序,輸出排序後的結果。結構體數組,要求使用冒泡排序法進行處理,按照成績或年齡從大到小排序,輸入一組數據並以表格輸出,對這組數據進行排序處理,以表格形式輸出排序後的結果。4、編寫查詢函數(分別編寫函數)函數功能是對整型數組或結構體數組中的數據進行查詢處理,並輸出操作結果。整型數組,要求使用折半法進行處理,從鍵盤輸入一組整數並輸出,先調用排序函數將數據從大到小排序,再輸入一個要查找的整數,調用查找函數進行查找操作,輸出查找的結果。沒找到輸出相應的信息。結構體數組,要求使用折半法進行處理,從鍵盤輸入一組數據並以表格形式輸出,先調用排序函數將數據按照年齡值從大到小排序,再輸入一個要查找的年齡數,調用查找函數進行查找操作,輸出查找的結果以表格形式輸出。沒找到輸出相應的信息。折半查找法:數據已按一定規律排列好,先檢索序列1/2處的數據,判斷其是否為所需數據。如果不是所需數據,則判斷要查找的數據位於中間數的哪一邊,下一次就在這個新的范圍內查找……,每次將查找范圍縮小一半,直至找到這個數或得出找不到的結論為止。定義數組並進行初始化排序處理輸入要查找的元素top=0,bot=n-1bot=mid-1top=mid+1輸出信息x<a[mid]x>a[mid]x==a[mid]mid=(top+bot)/2while(top<=bot) 5、編寫插入函數函數功能是在已經排好序的數組中插入一個數據或一條記錄(結構體),使插入後的數據仍然是有序的。整型數據,要求輸入一組整數並輸出;調用排序函數進行排序,輸出排序結果;輸入一個要插入的整數,實施插入操作,保證數據插入到正確的位置上,輸出插入後的數據序列。結構體數據,要求輸入一組記錄並以表格形式輸出;調用排序函數按照年齡進行排序,以表格形式輸出排序結果;輸入要插入的一條記錄,實施插入操作,保證數據插入到正確的位置上,以表格形式輸出插入後的數據序列。6、編寫刪除函數函數功能是給定一個數據或一條記錄(結構體),在數組先進行查找,如果找到將該數據刪除,並輸出結果;如果找不到,輸出相應的信息。整型數據,要求輸入一組整數並輸出;輸入一個要刪除的整數,進行查找,找到則實施刪除操作,否則輸出沒找到的信息。結構體數據,要求輸入一組記錄並以表格形式輸出;輸入要刪除的一條記錄,進行查找,按照姓名或年齡或成績查找均可,找到則 實施刪除操作,否則輸出沒找到的信息。
3. 幫忙編個結構體數組程序啊
/*編寫一個程序,定義一個學生結構體數組存儲學生信息(姓名、學號、家庭住址),
分別定義一個添加和刪除的函數,實現學生數組的添加、按照學號進行刪除功能。*/
#include<stdio.h>
#include<string.h>
struct student
{
char name[20],address[20];
char xuehao[20];
};
main()
{
struct student stu[20];
int i=0,j,m;
char ch[10];
printf("\n請添加學生信息\n");
do{
printf("\n請輸入學生姓名\n");
gets(stu[i].name);
printf("\n請輸入學生學號\n");
gets(stu[i].xuehao);
printf("\n請輸入學生家庭住址\n");
gets(stu[i].address);
i++;
printf("是否繼續添加?y or n\n");
gets(ch);
m=strcmp(ch,"y");
}while(m==0);
printf("是否刪除學生信息\n");
gets(ch);
m=strcmp(ch,"y");
while(m==0||i==0)
{
printf("請輸入要刪的學生的編號,注意是從零開始的\n");
scanf("%d",&m);
for(j=m;j<i;j++)
{
strcpy(stu[j].name,stu[j+1].name);
strcpy(stu[j].xuehao,stu[j+1].xuehao);
strcpy(stu[j].address,stu[j+1].address);
}
i--;
if(i!=0)
{printf("是否繼續刪除學生信息\n");
scanf("%s",ch);
m=strcmp(ch,"y");
}
}
if(i==0)
printf("沒有學生信息\n");
for(j=0;j<i;j++)
{
printf("%s %s %s\n",stu[j].name,stu[j].xuehao,stu[j].address);
}
return 0;
}
你試試你看,如果可以,要給分呀。。。呵呵
4. C語言中的數組什麼意思
所謂數組,是有序的元素序列。數組是在程序設計中,為了處理方便, 把具有相同類型的若干元素按無序的形式組織起來的一種形式。這些無序排列的同類數據元素的集合稱為數組。
比如油煙機的風扇轉速會和工作的模式之間有一定的關系,那麼我們就可以把它的工作模式和一維數組的下標對應起來,我們將具體的轉速放在數組中,這樣的話就非常方便我們在日後查詢。
再比如說家中的冷暖燈光控制這方面,色溫燈里會有兩個燈珠,分別對應的是冷光和暖光,選擇不同的模式燈光的顏色就不同,我們就可以將這兩種燈光的亮度pwm值事先放在二維數組中,以便調用調光。
在程序中合理地使用數組,會使程序的結構比較整齊,而且可以把較為復雜的運算,轉化成簡單的數組來表示。
(4)什麼程序結構處理數組擴展閱讀:
一、使用規則:
1、可以只給部分元素賦初值。當{ }中值的個數少於元素個數時,只給前面部分元素賦值。
2、只能給元素逐個賦值,不能給數組整體賦值。
(請注意:在C、C#語言中是這樣,但並非在所有涉及數組的地方都這樣,資料庫是從1開始。)
3、若不給可初始化的數組賦初值,則全部元素均為0值。
4、假如給全部元素賦值,則在數組說明中, 可以不給出數組元素的個數。
動態賦值可以在程序執行過程中,對數組作動態賦值。這時可用循環語句配合scanf函數逐個對數組元素賦值。
二、表示方法:
數組元素是組成數組的基本單元。
數組元素也是一種變數, 其標識方法為數組名後跟一個下標。下標表示了元素在數組中的順序號。數組元素的一般形式為:數組名[下標] 其中的下標只能為整型常量或整型表達式。
如為小數時,C編譯將自動取整。例如,a[5],a[i+j],a[i++]都是合法的數組元素。數組元素通常也稱為下標變數。必須先定義數組, 才能使用下標變數。在C語言中只能逐個地使用下標變數, 而不能一次引用整個數組。
5. c++結構數組程序設計
都已經寫成這樣了,連空格都不會自己加
#include "iostream.h"
struct car
{
char procer[20];
int year;
};
void main()
{
int num=0;
cout<<"請輸入汽車的數量:";
cin>>num;
car *cp=new car[num];
for(int i=0;i<num;i++)
{
cout<<"請輸入第"<<i+1<<"輛車的生產商:";
cin>>cp[i].procer;
cout<<"請輸入第"<<i+1<<"輛車的生產年份:";
cin>>cp[i].year;
cout<<endl;
}
cout<<"輸入完畢!"<<endl;
cout<<"以下是輸入結果:"<<endl;
for(i=0;i<num;i++)
{
cout<<"第"<<i+1<<"輛車的生產商:"<<cp[i].procer<<endl;
cout<<"第"<<i+1<<"輛車的生產年份:"<<cp[i].year<<endl;
cout<<endl;
}
}
6. 程序設計語言中的數組一般是順序存儲結構,因此,利用數組只能處理線性結構
不對,數組本身的存儲結構是線性的,就是說它是連續存儲的,但是數組中元素可以存儲指針,就是指針型數組,它就可以利用數組處理非線性的數據。比如將一個鏈表每個結點的地址存入數組,那樣訪問數組,就是處理非線性的數據了
7. 定義一個結構體數組,編寫程序實現以下功能:
#include<iostream>
using namespace std;
int A,B;
struct student
{
int num;
char name[20];
char cou[20];
double sum;
double ave;
double score[20];
}stu[100];
void nav(int M,int N);
void input(student stu[],int M,int N);
void work(student stu[],int M,int N);
void look(student stu[],int M,int N);
void del(student stu[],int M,int N);
void run(student stu[],int M,int N);
int main()
{
cout<<"請輸入學生數和課程數:";
cin>>A>>B;
int M,N;
M=A,N=B;
input(stu,M,N);
work(stu,M,N);
run(stu,M,N);
sort(M,N);
system("pause");
return 0;
}
void input(student stu[],int M,int N)
{ int i;
cout<<"請輸入"<<N<<"門課程名稱:"<<endl;
for(i=0;i<N;i++)
cin>>stu[i].cou;
cout<<"-----請按照下列格式輸入-----"<<endl;
cout<<"學號 姓名";
for(i=0;i<N;i++)
cout<<" "<<stu[i].cou;
cout<<endl;
for(i=0;i<M;i++)
{
cin>>stu[i].num>>stu[i].name;
for(int j=0;j<N;j++)
cin>>stu[i].score[j];
}
}
void work(student stu[],int M,int N)
{
for(int i=0;i<M;i++){
stu[i].sum=0;
stu[i].ave=0;
for(int j=0;j<N;j++)
{
stu[i].sum+=stu[i].score[j];
stu[i].ave=stu[i].sum/N;
}
}
}
void run(student stu[],int M,int N)
{
int i;
student t;
for( i=0;i<N-1;i++)
for(int j=0;j<N-1-i;j++)
if(stu[j].sum<stu[j+1].sum)
{
t=stu[j];
stu[j]=stu[j+1];
stu[j+1]=t;
}
cout<<"學號 姓名 ";
for(i=0;i<N;i++)
cout<<" "<<stu[i].cou;
cout<<" 總分 平均分";
cout<<endl;
for(i=0;i<M;i++)
{
cout<<stu[i].num<<"\t"<<stu[i].name<<"\t";
for(int j=0;j<N;j++)
cout<<stu[i].score[j]<<"\t";
cout<<stu[i].sum<<"\t"<<stu[i].ave<<endl;
}
}
8. C語言結構體數組的定義
所謂結構體數組,是指數組中的每個元素都是一個結構體。在實際應用中,C語言結構體數組常被用來表示一個擁有相同數據結構的群體,比如一個班的學生、一個車間的職工等。
結構體可以存儲不同的數據類型,將他們互相聯系起來。結構體數組可以連續存儲多個結構體,和數組作用相似。比如想定義同一個最小外接矩形的四個坐標值,並給予這個矩形一個特徵編號。當需要存儲多個最小外接矩形的信息時,就需要動態申請一個結構體數組。
struct 結構體類型名{類型名 成員名;類型名 成員名;……},先聲明結構體類型,再定義結構體變數名。聲明結構體類型,不分配空間,定義結構體類型變數,就要分配內存空間。
(8)什麼程序結構處理數組擴展閱讀:
結構體數組指針類型:
一個結構體變數的指針就是該變數所佔據的內存段的起始地址。可以設一個指針變數,用來指向一個結構體變數,此時該指針變數的值是結構體變數的起始地址,指針變數也可以用來指向結構體數組中的元素。
1、類型一:
指向結構體變數的指針引用結構體變數中的成員。
2、類型二:
用結構體變數和指向結構體變數的指針構成鏈表,鏈表是一種常見的重要的數據結構。鏈表有一個「頭指針」變數,以head表示,它存放一個地址。該地址指向一個元素。
鏈表中的每一個元素稱為「結點」,每個結點都應包括兩個部分:
一是用戶需要用的實際數據,
二是下一個結點的地址。
鏈表中各元素在內存中的存儲單元可以是不連續的。要找某一元素,可以先找到上一個元素,根據它提供的下一元素地址找到下一個元素。這種鏈表的數據結構,必須利用結構體變數和指針才能實現。
可以聲明一個結構體類型,包含兩種成員,一種是用戶需要用的實際數據,另一種是用來存放下一結點地址的指針變數。
參考資料來源:網路—結構體類型—數組
9. 循環結構編個簡單程序。使用for循環對數組a[10]中的元素冒泡法從大到小排序輸出
#include<stdio.h>
#define N 10
main()
{
int i,j,t;
int a[N]={7,3,2,5,9,1,6,10,4,8};
for(i=N;i>0;i--)
for(j=0;j<i-1;j++)
{
if(a[j]<a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
for(i=0;i<N;i++)
printf("%d ",a[i]);
printf("\n");
}