數組的建立和使用

來源:互聯網
上載者:User

標籤:style   blog   color   os   io   使用   ar   for   div   

實驗6  數組的建立和使用實驗目的1.掌握C語言中數組的類型定義。2.掌握數組的建立和使用的特點。實驗內容程式1在電腦上以字串的形式輸入了兩個任意長的整數,編寫求這兩個整數的積的程式。程式2若矩陣Am´n中的某個元素aij是第i行的最小值,同時又是第j列中的最大值,則稱此元素為該矩陣中的一個馬鞍點。假設以二維數組儲存矩陣Am´n,試編寫求出矩陣中所有馬鞍點的演算法。
 1 #include <iostream> 2 #include <stdio.h> 3 using namespace std; 4 #define MAXN 1000 5 char a[MAXN],b[MAXN]; 6 struct BigNum{ 7     int data[MAXN/4]; 8     int dig;    //位元,每位存4位元字 9 };10 BigNum char2big(char s[])    //將數字從char型轉換成Bignum型11 {12     int len = strlen(s),i;13     BigNum big;14     big.dig = (len-1)/4+1;    //轉換之後的int數組的位元15     char *p = s;16     for(i=0;i<big.dig;i++){17         char t[5];18         if(i==0){    //將每4位取出來,放到字串中19             int tt = len%4==0?4:len%4;20             strncpy(t,p,tt);21             t[tt] = ‘\0‘;22             p+=len%4;23         }24         else {25             strncpy(t,p,4);26             p+=4;27         }28         sscanf(t,"%d",&big.data[i]);    //從t中讀取數字29     }30     return big;31 }32 BigNum Multi(BigNum ai,BigNum bi,BigNum &ci)    //計算ai*bi33 {34     ci.dig = ai.dig + bi.dig;35     int i,j,pa=ai.dig,pb=bi.dig;36     for(i=bi.dig-1;i>=0;i--){    //ai*bi37         for(j=ai.dig-1;j>=0;j--){38             int t = ci.dig-1-(bi.dig-1-i)-(ai.dig-1-j);39             int sum = ai.data[j] * bi.data[i] + ci.data[t];40             ci.data[t] = sum%10000;41             ci.data[t-1] += sum/10000;    //進位42         }43     }44     return ci;45 }46 void printAns(BigNum ci)    //輸出結果47 {48     int i;49     for(i=0;i<ci.dig;i++)50         if(ci.data[i]!=0)51             printf("%d",ci.data[i]);52     printf("\n");53 }54 int main()55 {56     while(cin>>a>>b){57         BigNum ai = char2big(a);    //轉換成Bignum型58         BigNum bi = char2big(b);59         printAns(ai);60         printAns(bi);61         BigNum ci = {0};62         Multi(ai,bi,ci);63         printAns(ci);64     }65     return 0;66 }
 1 #include <iostream> 2 #include <stdio.h> 3 using namespace std; 4 #define MAXN 1010 5 #define MAX 0x7fffffff 6 #define MIN -0x7fffffff 7 int a[MAXN][MAXN]; 8  9 void Input(int a[][MAXN],int m,int n)    //輸入二維矩陣10 {11     int i,j;12     for(i=1;i<=m;i++)13         for(j=1;j<=n;j++)14             scanf("%d",&a[i][j]);15 }16 17 void GetMAD(int a[][MAXN],int m,int n)    //輸出二維矩陣的所有馬鞍點18 {19     int i,j;20     for(i=1;i<=m;i++){21         int x,y;    //馬鞍點的位置22         int Min=MAX,Max=MIN;23         for(j=1;j<=n;j++)    //找到這一行的最小值24             if(a[i][j]<Min)25                 Min=a[i][j],x=i,y=j;26         //判斷這一列最大點是否為這個點27         for(j=1;j<=m;j++)28             if(a[j][y]>a[x][y])29                 break;30         if(j<=m)31             continue;32         else33             printf("第%d行第%d列的元素是馬鞍點\n",x,y);34     }35 }36 37 int main()38 {39     int m,n;40     scanf("%d%d",&m,&n);    //輸入矩陣的行數和列數41     Input(a,m,n);    //輸入二維矩陣42     GetMAD(a,m,n);    //輸出二維矩陣的所有馬鞍點43     return 0;44 }

 

數組的建立和使用

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.