日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

第七章 数组实验

發(fā)布時間:2025/3/15 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第七章 数组实验 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

C程序?qū)嶒瀳蟾?/h1>

實驗項目:

1、一維數(shù)組的運用

2、二維數(shù)組的應(yīng)用

3、字符數(shù)組的應(yīng)用

姓名:郭薪? 實驗地點:教學(xué)樓514教室? 實驗時間:2019.5.29

一、實驗?zāi)康呐c要求

1、掌握一維和多維數(shù)組的定義和數(shù)組元素的引用方法。

2、了解一維和多維數(shù)組初始化方法。

3、學(xué)習(xí)一維和多維數(shù)組的基本算法。

4、掌握數(shù)組的定義、初始化方法及其元素的引用方法。

5、掌握c語言提供的對字符串進行處理的基本函數(shù)庫。

?

?二、實驗內(nèi)容

一維數(shù)組的應(yīng)用(7.3.1)

實驗練習(xí)1:(1)問題的簡單描述:編寫程序,利用隨機函數(shù)產(chǎn)生的10個數(shù),按升序排序輸出。

流程圖:

實驗代碼:

#include <stdio.h> #include <stdlib.h> #include <time.h> void sort1(int s[],int n) {int i,j;int temp;for(i=0 ;i<n-1;i++)for(j=9;j>=i+1;j--)if(s[j]<s[j-1]){temp=s[j];s[j]=s[j-1];s[j-1]=temp;}} main() {int i,a[10];srand(time(NULL));printf("隨機產(chǎn)生10個整數(shù):\n");for(i=0;i<10;i++)a[i]=rand()%100;for(i=0;i<10;i++){printf("%d",a[i]);printf(" ");}printf("\n");sort1(a ,10);printf("排序后的結(jié)果:\n");for(i=0;i<10;i++){printf("%d",a[i]);printf(" ");} }

?

運行結(jié)果;

問題分析:首先排序函數(shù)確實已經(jīng)在學(xué)習(xí)過程中見得比較多了,i控制比較的次數(shù),j控制第幾個數(shù)組,每一次分別和出自己以外其他數(shù)組比較,內(nèi)外循環(huán)。

? ? 然后是主函數(shù)里面,它涉及到“srand()”函數(shù)的應(yīng)用,首先聲明,然后再用“rand()”隨機選出數(shù)列,這是大家在編譯中普遍碰到的問題。不過我看到一些很好的輸出格式,就是 ? ? 在每一個printf()后面加一個“ ”空格輸出,這樣會顯得運行結(jié)果比較工整。注意的是,最后運行結(jié)果依然是以for循環(huán)從第一個依次輸出。?

2.(7.3.1.2)

1.問題描述:

編寫函數(shù),利用隨機函數(shù)產(chǎn)生10個隨機數(shù),按升序排列輸出.(選擇排序)

2.流程圖:

實驗代碼:

#include <stdio.h> #include <stdlib.h> #include <time.h> void sort2(int s[],int n) {int i,j,k;int temp;for(i=0;i<n-1;i++){for(j=i+1;j<=n-1;j++){if(s[j]<s[i]){temp=s[i];s[i]=s[j];s[j]=temp;}}} } main() {int i,a[10];srand(time(NULL));printf("隨機產(chǎn)生10個整數(shù):\n");for(i=0;i<10;i++)a[i]=rand( )%100;for(i=0;i<10;i++){printf("%d",a[i]);printf(" ");}printf("\n");sort2(a ,10);printf("排序后的結(jié)果:\n");for(i=0;i<10;i++){printf("%d",a[i]);printf(" ");} }

運行結(jié)果:

問題分析:思路基本與上題一樣。

二維數(shù)組的運用(7.3.2)

實驗練習(xí)1:(1)問題的簡單描述:編寫程序,從鍵盤輸入行數(shù),輸出指定函數(shù)的楊輝三角形。

流程圖:

實驗代碼:

#include<stdio.h> main() {int a[50][50],i,j,n;printf("請輸入楊輝三角的行數(shù):");scanf("%d",&n);for(i=0;i<=n;i++){a[i][i]=1;a[i][0]=1;}for(i=2;i<n;i++){for(j=1;j<=i-1;j++){a[i][j]=a[i-1][j-1]+a[i-1][j];}}for(i=0;i<=n;i++){for(j=0;j<=i;j++){printf(" ");printf("%d",a[i][j]); }printf("\n");} }

運行結(jié)果:

問題分析:因為這是一個二維數(shù)組,i,j分別代表的是二維數(shù)組的行和列。而楊輝三角在第一列和斜對角線都是1,所以有a[i][i],a[i][0]=0,接下來就是其核心部分:從第二行開始每一個數(shù)等于其之上的兩個數(shù)之和。輸出同樣是以for循環(huán)輸出,由于是二維數(shù)組,分別有內(nèi)外循環(huán)。大致思路就是這樣,但是操作的時候還是會碰到各種各樣的細節(jié)問題,比如說我在輸出的時候就忘了用for循環(huán)。

實驗練習(xí)2:(1)問題的簡單描述:編寫程序,從鍵盤分別輸入年、月、日,計算出該天是這年的第幾天。

流程圖:

?

?實驗代碼:

#include<stdio.h> int day_tab[2][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31},{0,31,29,31,30,31,30,31,31,30,31,30,31}};int day_year(int year,int month,int day){int i,j,s=0;if((year%4==0&&year%100!=0)||year%400==0)i=1;elsei=0;for(j=1;j<month;j++)s=s+day_tab[i][j];return s+day; } main() {int y,m,d;printf("Input year_month_day:\n");scanf("%d%d%d",&y,&m,&d);day_year(y,m,d);printf("是這年的第%d天\n",day_year(y,m,d)); }

運行結(jié)果:

問題分析:

這個二維數(shù)組已經(jīng)給出了實參,就是要針對是否為閏年,將該年的某月某日所在的天數(shù)加起來。在其中,“i”是控制年份是否為閏年,但在判定其是否為閏年的時候不能用“i”去相余。要注意的是函數(shù)頭部與數(shù)組名稱不能相同,然后用for循環(huán)運行定義月份之前的所有月份的天數(shù)和,每計算出一個月份用return返回到“s”的值。

字符數(shù)組應(yīng)用(7.3.3)

(1)問題的簡單描述:編寫程序,從鍵盤輸入一個字符串,判斷其是否是回文數(shù)。

流程圖:

實驗代碼:

#include "stdio.h" #include "string.h" #define N 40 main() {char str[N],ch='Y';int i;int len;printf("Please input a strings:");scanf("%s",&str);len=strlen(str);printf("\n");printf("字符串長度為%d",len);printf("\n");for(i=0;i<=len/2;i++){if(str[i]!=str[len-1-i]){ch='N';break;}}if(ch=='Y')printf("%s是一個回文數(shù)\n",str);elseprintf("該字符串不是回文數(shù)"); }

運行結(jié)果:

問題分析:這里有個不一樣的地方在于它循環(huán)的次數(shù),len/2次循環(huán)。雖然在編譯中不對它的約束條件減半依然是對的,但思路要理解。自己在編譯的過程,沒有想到用break跳出循環(huán),可能是太久了不是很熟悉。

?

?小結(jié):通過數(shù)組的練習(xí),發(fā)現(xiàn)自己編譯明顯要弱于之前,因為在這里for循環(huán)的嵌套頻繁,分支結(jié)構(gòu)也經(jīng)常套用。我覺得還是要理解每一個形參代表的是什么,限制條件可以多樣化,這要基于對for循環(huán)參數(shù)的含義深刻理解,流程圖是一個鏈接思路的工具,但今后要逐漸擺脫這種不依靠流程圖就毫無頭緒的境況。

?

?

?

?

轉(zhuǎn)載于:https://www.cnblogs.com/Artificial/p/10961753.html

總結(jié)

以上是生活随笔為你收集整理的第七章 数组实验的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。