C程序設計實驗報告
實驗項目:
7.3.1練習1 冒泡排序法
7.3.1練習2 選擇排序法
7.3.2練習1 楊輝三角(等腰)
7.3.2練習2 給定年月日,將其轉換成這一年的第幾天輸出
7.3.3 判斷回文數
姓名:熊曉東 實驗地點:家 實驗時間:2020.5.24
一、實驗目的與要求
1、掌握一維和多維數組的定義和數組元素的引用方法。
2、了解一維和多維數組初始化的方法。
3、學習一維和多維數組的基本算法。
4、掌握字符數組的定義、初始化方法及其元素的引用方法。
5、掌握C語言提供的對字符串進行處理的基本庫函數。
二、實驗內容
1、實驗練習:
1問題的簡單描述:用冒泡排序法實現,對用隨機函數產生的10個整數按升序排列。
2實驗代碼:
··· #include<stdio.h> #include<stdlib.h> #include<time.h> void sort1(int s[],int n) { int i,j; int temp; for(i=9;i>0;i++); for(j=0;j<i;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((unsigned int )time(NULL)); printf("隨機六生10個整數: \n"); for(i=0;i<10;i++) a[i] =rand()%100; for(i=0;i<10;i++) printf("%d ",a[i]); printf("ln"); sort1(a,10); printf("輸出排序后的10個整數\n"); for(i=0;i<10;i++) printf("%d ",a[i]); }
3問題分析:無
2、實驗練習:
1問題的簡單描述:用選擇排序法實現,對用隨機函數產生的10個整數按升序排列 。
2實驗代碼:
··· #include<stdio.h> #include<stdlib.h> #include<time.h> sort2(int s[],int n) { int i,j,k; int temp ; for(i=0;i<n-1;i++) { for(k=i,j=i+1;j<=n-1;j++) { if(s[j]<s[k]) k=j; } if(k!=i) { temp=s[k]; s[k]=s[i]; s[i]=temp; } } } int main() { int i,a[10],n=10; srand( time(NULL)); printf("隨機產生十個整數\n"); for(i=0;i<10;i++) { a[i]=rand(); } for(i=0;i<10;i++) { printf("%d" ,a[i]); printf("\t"); } printf("ln"); sort2(a,n); printf("該組數的升序排列為:\n"); for(i=0;i<10;i++) printf("%d",a[i]); }
3問題分析:在實驗過程中還是會打錯代碼,要細心。
3、實驗練習:楊輝三角(等腰)
1問題的簡單描述:編寫程序,從鍵盤輸入行數,輸出指定行數的楊輝三角形。
2實驗代碼:
··· #include<stdio.h> main() { int a[50][50],i,j,n; printf("請輸入楊輝三角形的行數: ") ; scanf( "%d" ,&n); for(i=1;i<=n;i++) { a[i][i]=1; a[i][1]=1; } for(i=3;i<=n;i++) { for(j=2;j<=i-1;j++) a[i][j]=a[i-1][j-1]+a[i-1][j]; } for(i=1;i<=n;i++) { for(j=1;j<=i;j++) printf("%-4d",a[i][j]); printf("\n"); } }
3問題分析:數值要對齊,注意%。
4、實驗練習:轉換為第幾天
1問題的簡單描述:給定年月日,將其轉換成這一年的第幾天輸出。
2實驗代碼:
··· #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,38,31,38,31,31,30,31,38,31}}; int day_year(int y,int m,int d) { int i,j,s=0;2020 (y%4==0&&y%100!=0||y%400==0)?(i=1):(i=0); for(j=1;j<m;j++) s=s+day_tab[i][j]; return (s=s+d); } int main() { int y,m,d; printf("Input year_month_day:"); scanf("%d %d %d" ,&y, &m,&d); printf("是這年的第%d天\n" ,day_year(y,m,d)); }
3問題分析:注意for的使用。
5、實驗練習:判斷回文數
1問題的簡單描述:編寫程序,判斷某一字符串是不是"回文數"。
2實驗代碼:
··· #include<stdio.h> #include<string.h> #define N 40 int main() { char str[N],ch='Y'; int i; int len; printf("Input a string:");scanf( "%s" ,&str); len=strlen(str); for(i=0;i<=len/2;i++) { if(str[i]!=str[len-i-1]) { ch='N'; break; } } if(ch=='Y') printf("%s是一個回文數\n",str); else printf("%s不是一個回文數\n",str); }
3問題分析:結合回文數的定義來思考問題。
三、實驗小結
本次實驗提醒我要注意代碼輸入的正確性,同時在輸入程序時,要結合題目所給的定義來思考問題。