C語言一維陣列&&二維陣列練習
阿新 • • 發佈:2019-01-24
哥們今天剛學習了C語言的陣列,就課後作業幾道小練習,拿給大家分享一下,程式碼肯定不夠簡潔,不過思路大致沒錯,Seeking advice!!!!
/* 輸入6個人的成績(各不相同),打印出最大成績的是第幾個人? */ #include <stdio.h> void main() { int i,a=6,max,z; int score[a],two[a]; for(i=0;i<a;i++) { printf("請輸入第%d個人的成績(注意:合計需輸入6個人的成績):",i+1); scanf("%d",&score[i]); } //將使用者輸入的6個人的成績賦給two陣列; for(i=0;i<a-1;i++) { two[i]=score[i]; } //求出輸入的6個人的最大成績 for(i=0;i<a-1;i++) { if(two[i]>two[i+1]) { max=two[i]; two[i]=two[i+1]; two[i+1]=max; } } printf("\n"); for(i=0;i<a;i++){ if(score[i]==max) { printf("第%3d 個人的成績是最大的:\n",i+1); } } }
/* 2、在一個長度為10的整形陣列中,前9個元素是{12,23,34,45,56,67,78,89,90}。 現在要求輸入一個整數,把它放到陣列中正確的位置當中。(不能刪除已有元素) */ #include <stdio.h> void main() { int i,small; int number[10]={12,23,34,45,56,67,78,89,90}; printf("請輸入一個整數:"); //將使用者輸入的整數賦給陣列名為number的下標為9的元素中; scanf("%d",&number[9]); //倒序排列,從小到大; for(i=9;i>0;i--) { if(number[i]<number[i-1]) { small=number[i]; number[i]=number[i-1]; number[i-1]=small; } } printf("根據你輸入的一個整數從小到大排列的順序是:\n"); for(i=0;i<10;i++) { printf("%d\n",number[i]); } }
<pre class="plain" name="code">/* 3、在一個長度為10的整形陣列中,已經放置好了任意10個整數。要求使用者任意輸入 一個整數,判斷該數字是否在陣列中。如果在,刪除陣列中該元素,並把後面的 元素往前挪。(讓空出的位置在最後) 注意:為了讓使用者更清楚的知道這個陣列中分別有哪些元素,他好決定刪除哪一個; 順便也好讓他更清楚的知道該元素是否已經刪除,所以這裡的10個元素, 採用讓使用者輸入的形式! */ #include <stdio.h> void main() { int i,j,z,k=0,a=10,b; int number[a]; for(i=0;i<a;i++) { //提示使用者輸入; printf("請您輸入第%d個整數(注意:請任意輸入10個整數):",i+1); //將獲取到使用者輸入的整數利用for迴圈分別賦給該陣列的每一個元素中; scanf("%d",&number[i]); } printf("\n"); //獲取使用者想要刪除的整數 printf("不錯嘛,這麼快就輸入完了\n"); printf("想好了,您要刪除哪個整數了嗎?不要猶豫,騷年!!!:"); scanf("%d",&b); //為了避免刪除的數有重複的,就再迴圈一次(實現方式很多,小弟初學,只想到這種笨方法,見諒...); for(z=0;z<2;z++) { for(i=0;i<a;i++) { //利用迴圈判斷使用者要刪除的數是否存在該陣列的某一個元素中; if(number[i]==b) { /*當滿足條件時,將滿足條件的那個元素的後一個元素的值 賦給滿足條件的那個元素,並利用迴圈分別將後一個元素的值賦給 前一個元素; */ for(j=0;j<a-1;j++) { number[i+j]=number[i+j+1]; } k++;//當刪除一個數據時,k自增; } } } //將使用者刪除掉的數都賦值為0; /* for(i=a-k;i<a;i++) { number[i]=0; } */ printf("考考您的記憶,您自已好好看看刪除了沒?\n"); /*這裡迴圈的次數由你決定;如果迴圈所有的元素,那麼for迴圈的判斷條件為i<a; 因為上面註釋掉的for迴圈裡已經將使用者需刪除掉的數字都賦值為0,所有個人覺得在這裡就沒必要列印了; 所以只打印了沒有刪除掉的數,即判斷條件為 i<a-k */ for(i=0;i<a-k;i++) { printf("%d\n",number[i]); } }
/*
4、使用者任意輸入一個3*3矩陣,要求打印出左右對角線之和。
*/
#include <stdio.h>
void main()
{
int i,j,a=3,b=3,c,sum=0;
int number[a][b];
//行
for(i=0;i<a;i++)
{
//列
for(j=0;j<b;j++)
{
printf("騷年!請輸入第%d行的第%d個整數(注意:請任意輸入%d個整數)",i+1,j+1,a*b);
scanf("%d",&number[i][j]);
}
}
printf("\n");
//打印出剛才使用者輸入的矩形;
printf("騷年,這是您剛才輸入的%d*%d的矩形\n",a,b);
for(i=0;i<a;i++)
{
for(j=0;j<b;j++)
{
printf("%-4d",number[i][j]);
}
printf("\n");
}
printf("騷年,想不想打印出左右對角線之和?(注意:如果想的話請輸入-1)\n");
scanf("%d",&c);
if(c==-1)
{
sum=number[0][0]+number[a-1][b-1];
printf("騷年,左右對角線之和為:%d\n",sum);
}
else
{
printf("不想拉倒...");
}
}
/*
5、使用者任意輸入10個數,把它們按從小到大排序。(氣泡排序)
解析:很簡單的氣泡排序練習;
*/
void main()
{
int i,j,a=10,max;
int number[a];
//獲取使用者輸入的10個數;
for(i=0;i<a;i++)
{
printf("騷年,這是您輸入的第%d個數(注意:合計輸入10個數):",i+1);
scanf("%d",&number[i]);
}
//從小到大排序;
for(j=0;j<a;j++)
{
for(i=0;i<a-1;i++)
{
if(number[i]>number[i+1])
{
max=number[i];
number[i]=number[i+1];
number[i+1]=max;
}
}
}
printf("\n");
printf("根據騷年您輸入的%d位數,從小到大的排列順序如下:\n",a);
//從小到大列印輸出
for(i=0;i<a;i++)
{
printf("%d\n",number[i]);
}
}