VUE+OPENLAYER系列四:Geoserver 1
作業屬於的課程 | 這是班級的連結 |
---|---|
作業的要求 | 作業要求的連結 |
作業的目標 | 熟悉利用C語言進行程式設計的一般方法 |
學號 | 2018204226 |
預備試驗----C語言的函式陣列指標結構體知識
一、實驗目的
1、複習C語言中函式、陣列、指標、結構體與共用體等的概念。
2、熟悉利用C語言進行程式設計的一般方法。
二、實驗預習
說明以下C語言中的概念
1、函式:函式是一個自我包含的完成一定相關功能的執行程式碼段。我們將常用的程式碼以固定的格式封裝(包裝)成一個獨立的模組,只要知道這個模組的名字就可以重複使用它,這個模組就叫做函式。
2、陣列:一些列具有相同型別的資料的集合,這些資料在記憶體中依次挨著存放,彼此之間沒有縫隙。
3、指標:指標也就是記憶體地址,指標變數是用來存放記憶體地址的變數,不同型別的指標變數所佔用的儲存單元長度是相同的,而存放資料的變數因資料的型別不同,所佔用的儲存空間長度也不同。
4、結構體:結構體是由一系列具有相同型別或不同型別的資料構成的資料集合,也叫結構。
5、共用體:共用體是C語言中的一種資料型別,是指將不同型別的資料項存放於同一段記憶體單元的一種構造資料型別。
三、實驗內容和要求
1、除錯程式:輸出100以內所有的素數。(用函式實現)
#include<stdio.h> int isprime(int n){ /*判斷一個數是否為素數*/ int m; for(m=2;m*m<=n;m++) if(n%m==0) return 0; return 1; } int main(){ /*輸出100以內所有素數*/ int i; printf("\n"); for(i=2;i<100;i++) if(isprime(i)==1) printf("%4d",i); return 0; }
執行結果:
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
2、 除錯程式:對一維陣列中的元素進行逆序排列。
#include<stdio.h> #define N 10 int main(){ int a[N]={0,1,2,3,4,5,6,7,8,9},i,temp; printf("\nthe original Array is:\n "); for(i=0;i<N;i++) printf("%4d",a[i]); for(i=0;i<N/2;i++){ /*交換陣列元素使之逆序*/ temp=a[i]; a[i]=a[N-i-1]; a[N-i-1]=temp; } printf("\nthe changed Array is:\n"); for(i=0;i<N;i++) printf("%4d",a[i]); return 0; }
執行結果:
the original Array is:
0 1 2 3 4 5 6 7 8 9
the changed Array is:
9 8 7 6 5 4 3 2 1 0
3、 除錯程式:在二維陣列中,若某一位置上的元素在該行中最大,而在該列中最小,則該元素即為該二維陣列的一個鞍點。要求從鍵盤上輸入一個二維陣列,當鞍點存在時,把鞍點找出來。
#include<stdio.h>
#define M 3
#define N 4
int main(){
int a[M][N],i,j,k;
printf("\n請輸入二維陣列的資料:\n");
for(i=0;i<M;i++)
for(j=0;j<N;j++)
scanf("%d",&a[i][j]);
for(i=0;i<M;i++){ /*輸出矩陣*/
for(j=0;j<N;j++)
printf("%4d",a[i][j]);
printf("\n");
}
for(i=0;i<M;i++){
k=0;
for(j=1;j<N;j++) /*找出第i行的最大值*/
if(a[i][j]>a[i][k])
k=j;
for(j=0;j<M;j++) /*判斷第i行的最大值是否為該列的最小值*/
if(a[j][k]<a[i][k])
break;
if(j==M) /*在第i行找到鞍點*/
printf("%d,%d,%d\n",a[i][k],i,k);
}
return 0;
}
執行結果:
請輸入二維陣列的資料:
1
3
5
7
9
11
13
15
17
19
21
23
1 3 5 7
9 11 13 15
17 19 21 23
7,0,3
4、 除錯程式:利用指標輸出二維陣列的元素。
#include<stdio.h>
int main(){
int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};
int *p;
for(p=a[0];p<a[0]+12;p++){
if((p-a[0])%4==0) printf("\n");
printf("%4d",*p);
}
return 0;
}
執行結果:
1 3 5 7
9 11 13 15
17 19 21 23
5、 除錯程式:設有一個教師與學生通用的表格,教師的資料有姓名、年齡、職業、教研室四項,學生有姓名、年齡、專業、班級四項,程式設計輸入人員的資料,再以表格輸出。
#include <iostream>
#include <stdio.h>
#define N 10
using namespace std;
struct student{
char name[8]; /*姓名*/
int age; /*年齡*/
char job; /*職業或專業,用s或t表示學生或教師*/
union {
int class1; /*班級*/
char office[10]; /*教研室*/
}depa;
}stu[N];
int main(){
int i; int n;
printf("\n請輸入人員數(<10):\n");
scanf("%d",&n);
for(i=0;i<n;i++){ /*輸入n個人員的資訊*/
printf("\n請輸入第%d人員的資訊:(name age job class/office)\n",i+1);
scanf("%s %d %c",stu[i].name, &stu[i].age, &stu[i].job);
if(stu[i].job=='s')
scanf("%d",&stu[i].depa.class1);
else
scanf("%s",stu[i].depa.office);
}
printf("name age job class/office \n");
for(i=0;i<n;i++){ /*輸出*/
if(stu[i].job=='s')
printf("%s %3d %3c %d\n",stu[i].name, stu[i].age, stu[i].job, stu[i].depa.class1);
else
printf("%s %3d %3c %s\n",stu[i].name, stu[i].age, stu[i].job, stu[i].depa.office);
}
}
輸入的資料:2
Wang 19 s 99061
Li 36 t computer
執行結果:
請輸入人員數(<10):
2
請輸入第1人員的資訊:(name age job class/office)
Wang 19 s 99061
請輸入第2人員的資訊:(name age job class/office)
Li 36 t computer
name age job class/office
Wang 19 s 99061
Li 36 t computer
四、實驗小結
對C語言中的函式、陣列、指標、結構體等概念有了更深刻的理解,且會利用C語言進行程式設計。