題目一
隨機產生N 個正整數(10 < Ν ≤20 )存入陣列 a 中,輸出 a 中的最大值,最小值及求出其平均值(保留兩位小數)
tips:下面代碼可供參考
代碼如下:
#include<stdio.h>
#include<stdlib.h>/*srand()用頭檔案stdlib.h;time(NULL)用time.h*/
#include<time.h>
int main()
{
int N, i,min,max;
float sum = 0.00;
int a[100] = { 0 };/*設定一個陣列*/
srand(unsigned(time(NULL)));/*這里可以用time_t t ;srand(unsigned time(&t));表示*/
/*用time(NULL)表示則不用定義time_t型的變數t*/
N = rand() % 10 + 11; /*產生亂數的個數的范圍在10<N<=20之間*/
printf("亂數的個數為:%d\n", N);
printf("這個隨機陣列為:\n");
for ( i = 0; i <N; i++)
{
a[i] = rand()%100;/*亂數的范圍在0~100之內,并且將產生的亂數輸入一個陣列中*/
printf("a[%d]=%d\t", i,a[i]);
sum = sum+a[i];/*計算陣列中元素之和*/
if (i==0)
{
max = min = a[i];
}
else
{
if (min>a[i])
{
min = a[i];
}
else if(max<a[i])
{
max = a[i];
}
}
}
printf("該陣列的元素之和為:%.2f\n", sum);
float average;
average = sum/ N;
printf("該陣列中最大的值為:%d\t,最小的值為:%d\t,平均數為:%.2f\t", max, min, average);
return 0;
}
題目二
##餐飲服務質量調查打分:
某公司的主管需要了解一年來公司的營業狀況,比較一下各月份的銷售收入狀況,如果僅給出一大堆資料,這顯然太不直觀了,如果能將這些資料以條形圖(直方圖)的形式表示,將會大大增加這些資料的直觀性,也便于資料的分析與對比,下面以顧客對餐飲服務打分為例,練習這方面的程式撰寫方法,假設有40個學生被邀請來給自助餐廳的食品和服務質量打分,分數劃分為1~10這10個等級(1表示最低分,10表示最高分),試統計調查結果,并用*列印出如下形式的統計結果直方圖,
Grade Count Histogram
1 5 *****
2 10 **********
3 7 *******
…
10 3 ***
提示:
–定義陣列score存放打的分數
–定義陣列count為計數器(count[0]不用)
–計算統計結果:設定一個回圈,依次檢查陣列元素值score[i],是1則將陣列元素count【1】加1,是2則將陣列元素count【2】加1,依此類推
for (i=0; i<STUDENTS; i++)
{
count[score[i]] ++;
}
統–列印統計結果,設定一個回圈,按count陣列元素的值,列印相應個數的符號’*’
tips:下面代碼可供參考
代碼如下:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
int score[100] = { 0 };
int count[100] = {0};
int i, STUDENTS;
STUDENTS = 40;
srand(unsigned(time(NULL)));
for (i = 0; i < STUDENTS; i++)
{
score[i] = rand() % 10 + 1;/*評分為1~10*/
/*printf("%d\t", score[i]);*/
count[score[i]] ++;
}
printf("Grade\tCount\tHistogram\n");
int h, k;
for (k = 1; k <= 10;k++)/*k相當于等級*/
{
printf("%d\t%d\t", k, count[k]);
for (h = 1; h <=count[k]; h++)
{
printf("%c",'*');
}
printf("\n");
}
return 0;
}
題目三
##檢驗并列印魔方矩陣
在下面的5×5階魔方矩陣中,每一行、每一列、每一對角線上的元素之和都是相等的,試撰寫程式將這些魔方矩陣中的元素讀到一個二維整型陣列中,然后檢驗其是否為魔方矩陣,并將其按如下格式顯示到螢屏上,

tips:下面代碼可供參考
代碼如下:
#include<stdio.h>
int main()
{
int i, j,sum,N;
sum = 0;
int a[5][5] = { 17,24,1,8,15,23,5,7,14,16,4,6,13,20,22,10,12,19,21,3,11,18,25,2,9 };
//若想測驗其它矩陣是不是魔方矩陣,可以在這陣列上面進行修改
for ( i = 0; i < 5; i++)
{
for (j = 0; j < 5; j++)
{
sum += a[i][j];
}
}
N = sum / 5;//魔方矩陣的特點:每一行的和=每一列的和=對角線的和=全部元素的和的1/5
for ( i = 0; i < 5; i++)
{
sum = 0;//每一次回圈都要重置sum的值
for ( j = 0; j < 5; j++)
{
sum += a[i][j];//求每一行的和
}
if (sum=N)
{
break;
}
else
{
printf("這不是魔方矩陣\n");
return 0;
}
}
for ( i = 0; i < 5; i++)
{
sum = 0;
for ( j = 0; j < 5; j++)
{
sum += a[j][i];//求每一列的和
}
if (sum=N)
{
break;
}
else
{
printf("這不是魔方矩陣\n");
return 0;
}
}
int sum1, sum2;
sum1 = sum2 = 0;
for ( i = 0; i < 5; i++)
{
for ( j = 0; j < 5; j++)
{
if (i == j)
{
sum1+= a[i][j];//這是主對角線的和
}
if (i+j==4)
{
sum2 += a[i][j];//這是副對角線的和
}
}
}
if (sum1=sum2=N)
{
printf("這是個魔方矩陣:\n");
for (i = 0; i <5; i++)
{
for (j = 0; j < 5; j++)
{
printf("%d\t", a[i][j]);
}
printf("\n");
}
}
else
{
printf("這不是魔方矩陣,\n");
}
return 0;
}
總結
1. 產生亂數,需要rand函式里的亂數發生器;而srand 函式是亂數發生器的初始化函式,srand()用頭檔案stdlib.h; srand函式: srand(unsigned seed );在產生亂數的時候,往往是使用系統的時間作為”種子“進行初始化,這樣在產生兩次的亂數就不會一樣,當srand()的引數值固定的時候,rand()獲得的數也是固定的,獲取系統的時間,使用time函式,它的回傳值為從1970/01/01 00:00:00 到現在所持續的秒數,然后將time_t型資料轉化為unsigned型再傳給srand函式,即: srand(unsigned time(&t)); 還有一個經常用法,不需要定義time_t型t變數,即: srand(unsigned (time(NULL)))
time(NULL)頭檔案用time.h //只能精確到秒
當隨機函式使用for 回圈時,運行速度非常快,在一秒之內就運行完成了,而 time() 函式得到的時間只能精確到秒,所以每次回圈得到的時間都是一樣的,這樣一來,種子也就是一樣的,亂數也就一樣了,(可以使用sleep()來經過秒)
2.rand()函式的取值范圍為:0~32767;rand()%100結果是亂數除以100后所得的余數,即限定隨機的范圍是在0~99之間,
可參考:
https://www.runoob.com/cprogramming/c-function-srand.html
https://blog.csdn.net/cx1165597739/article/details/89373765
3.當用int來定義一維陣列的時候,當只定義一個陣列的時候可以不用給陣列設定初始值(即int a[100];可以使程式運行),當給多個陣列定義的時候,則必須給陣列設定一個初始值(即int a[100]={0}; int b[100]={0};);雖然沒有設定初始值也會運行程式,但是該顯示的結果是錯誤的,
例如下面兩張截圖:
錯誤的:int score[100],count[100];![錯誤的:int score[100],count[100];](https://img.uj5u.com/2021/01/25/217989251136002.png)
正確的:int score[100]={0}; int count[100]={0};

4.注意:不完全初始化”和“完全不初始化”不一樣,如果“完全不初始化”,即只定義“int a[5];”而不初始化,那么各個元素的值就不是0了,所有元素都是垃圾值,
可參考:http://c.biancheng.net/view/184.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/252172.html
標籤:其他
上一篇:C語言編程>第二十周 ⑤ 請補充main函式,該函式的功能是:如果陣列a的前一個元素比后一個元素大,則把它保存在陣列b中并輸出。
