C語言實驗報告(數組)


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問題分析:結合回文數的定義來思考問題。

三、實驗小結

本次實驗提醒我要注意代碼輸入的正確性,同時在輸入程序時,要結合題目所給的定義來思考問題。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM