LMS知識社群各系上網率圖資處首頁登入
位置: 郭怡勝 > 程式語言
正修科技大學-機械工程系-40404113-郭怡勝同學的課程網頁-程式語言
by 郭怡勝 2017-09-19 11:11:40, 回應(0), 人氣(368)
レ(゚∀゚)ヘ ゚∀゚)ノレ(゚∀゚)ヘヘ( ゚∀゚)ノ!!
整理作業編號:
>1-1   >1-2   >1-3
>2-1   >2-2   >2-3   >2-4
>3-1   >3-2   >3-3   >3-4   >3-5   >3-6
>4-1   >4-2   >4-3   >4-4   >4-5
>5-1   >5-2   >5-3   >5-4   >5-5
>6-1   >6-2   >6-2+ >6-3   >6-4   >6-5  >6-6  >6-7
>7-1   >7-2   >7-3
--------------------------------------------------------------------------------------------------------------------------------------------
>106/09/12作業(猜數字1)                     >作業-1(活動心得)
--------------------------------------------------------------------------------------------------------------------------------------------
>106/09/19作業(猜數字2)                     >作業-1(整理歷程檔)
--------------------------------------------------------------------------------------------------------------------------------------------
>106/09/20作業(猜數字3)
--------------------------------------------------------------------------------------------------------------------------------------------
>106/09/26作業(身高體重)                    >作業-1(心得)
--------------------------------------------------------------------------------------------------------------------------------------------
>106/10/03作業(Code.org)                   >作業-1(Code.org製作)
--------------------------------------------------------------------------------------------------------------------------------------------
>106/10/17作業(C語言借書)                  >作業-1(求1+1/2+1/3....+1/n)
--------------------------------------------------------------------------------------------------------------------------------------------
>106/10/24作業(是否因倍數)                 >作業-1(是否奇偶數)                       >作業-2(是否及格)
--------------------------------------------------------------------------------------------------------------------------------------------
>106/11/07作業(報名MOC)                    >作業-1(算出總合.平均.是否及格)   >作業-2(是否為2或3倍數)
                                                               >作業-3(是否為2或3倍數(進階))      >作業-4(找出最大值)
                                                               >作業-5(找出最大值(進階))
--------------------------------------------------------------------------------------------------------------------------------------------
>106/11/14作業(找出最大最小及平均)  >作業-1(浮點數求平均)                    >作業-2(1-1補顯示字)
                                                               >作業-3(1-2補絕對值)                      >作業-4(1-3補浮點數絕對值)
                                                               >作業-5(非0整數求平均)                  >作業-6(2-1補換算溫度)
                                                               >作業-7(補2-2判斷BMI)                   >作業-8(2-3補算BMI)
                                                               >作業-9(補2-4算數)                          >作業-10(補判斷奇偶數)
                                                               >作業-11(幾天會花光錢)                  >作業-12(幾天後會達到n元)
                                                               >作業-13(1+1/2+1/3+1/4+.....+1/n > m 時 n?)
                                                      >作業-14(a+b=9 則照順序印出a,b,及a+b)
--------------------------------------------------------------------------------------------------------------------------------------------
>106/11/21作業(樂透彩)
--------------------------------------------------------------------------------------------------------------------------------------------
>106/11/28作業(隨機產生=9之數)         >作業-1(求正整數迴圈及連乘積)
                                                               >作業-2(s=1+1/2+1/3+...+1/n)
                                                               >作業-3(9*9乘法表)
                                                               >作業-4(求正數及負數和)
                                                               >作業-5(隨機分數判測)
                                                               >作業-6(分辨分數階層)
                                                               >作業-7(n*n乘法表)
                                                               >作業-8(產生範圍n數求大於60之平均)
--------------------------------------------------------------------------------------------------------------------------------------------
>106/12/05作業(6-2延伸(隨機產生1000000次))
--------------------------------------------------------------------------------------------------------------------------------------------
>106/12/12作業(擲骰子)
--------------------------------------------------------------------------------------------------------------------------------------------
>106/12/19作業(期末教學評量)             >作業-1(身分證檢查(待修正))
                                                               >作業-2(身分證檢查(完整版))
--------------------------------------------------------------------------------------------------------------------------------------------
>106/12/26作業(排序法)                        >作業-1(排序法輸入版)
                                                               >作業-2(模擬次數排序後尋找數值)

>107/01/02作業(隨機產生n數排序找尋)
隨機產生n數排序找尋
by 郭怡勝 2018-01-02 11:28:33, 回應(0), 人氣(337)


/*
隨機產生n個(1-20000)的0-30000相異整數
比較排序前後以so%%
1.線性找尋(未排序)
2.線性找尋(排序) 
2.二分找尋 某一整數的次數
*/
#include <stdio.h> 
#include <stdlib.h>
#include <time.h> 
int main()
{
int a[30001],left,right,middle,no;
int i, j, t,N,flag,x,key,found=0,nn;
long tk;
unsigned seed;
seed = (unsigned)time(NULL);
srand(seed);
printf("正修科大 40404113 郭怡勝\n");
printf("請輸入模擬數目(<=20000):");
scanf("%d",&N);
for(i=0; i<N; i++)
{
while(1)
flag=1; 
x = rand() % 30001; 
for(j=0;j<=i-1;j++)
{
if( x == a[j])
{
flag=0;
break;
}
}
if(flag == 1)
a[i]=x;
break; 
}
}
printf("\n原陣列:\n");
for (i=0; i<N; i++) printf("%6d",a[i]);
printf("\n未排序(線性找尋):\n");
printf("\n\n請輸入要找的值:");
scanf("%d",&key); 
for(i=0;i<N;i++)
{
if(key == a[i]) 
{
found=1;
break;
if(found == 1) 
printf("\n找了 %3d 次,找到了\n",i+1);
else
printf("\n找了 %3d 次,找不到\n",i);  
printf("\n排序後(線性找尋):\n"); 
printf("\n"); 
for (i=0; i<N-1; i++)
for (j=i+1; j<N; j++)
if (a[i]>a[j])
{
t = a[j];
a[j] = a[i];
a[i] = t;
}
printf("\n\n排序後\n");
for (i=0; i<N; i++) printf("%6d",a[i]);
printf("\n");
for(i=0;i<N;i++)
{
if(key == a[i]) 
{
found=1;
break;
if(found == 1) 
printf("\n找了 %3d 次,找到了\n",i+1);
else
printf("\n找了 %3d 次,找不到\n",i);
printf("\n二分找尋:\n");
printf("\n");
for (i=0; i<=N; i++)
{
for (j=0; j<=N-i; j++)
if (a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
left=0;
right=N;
while (left <= right)
{
middle=(left+right)/2;
no++;
if (key < a[middle])
right=middle-1;
else if (key > a[middle])
left=middle+1;
else if (key==a[middle])
break;
}
if (key==a[middle])
printf("\n找了 %d 次, %d 在第 %d 個位置找到\n",no, key,middle-1);
else
printf("\n找了 %d 次, %d 找不到\n",no, key);
return 0;
}
附件:
1. 未命名.png
模擬次數排序後尋找數值
by 郭怡勝 2017-12-26 11:39:36, 回應(0), 人氣(402)


/*
隨機產生n個(1-100)的0-100相異整數%% 
比較排序前後找尋某一整數的次數%% 
*/
#include <stdio.h> 
#include <stdlib.h>
#include <time.h> 
int main()
{
int a[101];
int i, j, t,N,flag,x,key,found=0,nn;
long tk;
unsigned seed;
seed = (unsigned)time(NULL);
srand(seed);
printf("正修科大 40404113 郭怡勝\n");
printf("請輸入模擬數目(<=100):");
scanf("%d",&N);
for(i=0; i<N; i++)
{
while(1)
flag=1; 
x = rand() % 101; 
for(j=0;j<=i-1;j++)
{
if( x == a[j])
{
flag=0;
break;
}
}
if(flag == 1)
a[i]=x;
break; 
}
}
printf("\n原陣列:\n");
for (i=0; i<N; i++) printf("%3d",a[i]);
printf("\n\n請輸入要找的值:");
scanf("%d",&key); 
for(i=0;i<N;i++)
{
if(key == a[i]) 
{
found=1;
break;
if(found == 1) 
printf("找了 %3d 次,找到了",i+1);
else
printf("找了 %3d 次,找不到",i); 
for (i=0; i<N-1; i++)
{
for (j=i+1; j<N; j++)
{
if (a[i]>a[j])
{
t = a[j];
a[j] = a[i];
a[i] = t;
}
}
/* printf("\n第 %d 回排序後最小值為 :", i+1);
printf("%3d ",a[i]);
printf(" 新陣列為: ", i+1);
for(j=i+1; j<N; j++)
printf("%d ",a[j]); 
*/ 
}
printf("\n\n排序後\n");
for (i=0; i<N; i++) printf("%5d",a[i]);
printf("\n");
found=0;
for(i=0;i<N;i++)
{
if(key == a[i]) 
{
found=1;
nn=i+1;
break;
if(key < a[i]) 
{
found = 2; 
nn=i+1;
break;
if(found == 1) 
printf("找了 %3d 次,找到了",nn);
else
if(found == 2) 
printf("找了 %3d 次,找不到",nn); 
else
printf("找了 %3d 次,找不到",N); 
return 0;
}
附件:
1. 13-22.png
排序法輸入版
by 郭怡勝 2017-12-26 10:59:24, 回應(0), 人氣(251)


#include <stdio.h>
#include <stdlib.h>
#define M 600
int main()
{
int a[M]={20,13,11,16,3,2};
int i, j, t,N;
printf("正修科大 40404113 郭怡勝\n");
printf("請輸入資料數目 : "); 
scanf("%d",&N);
for(i=0;i<N;i++)
{
printf("第 %d 筆 :",i+1);
scanf("%d",&a[i]);
}
printf("\n原陣列:\n");
for (i=0; i<N; i++) printf("%5d",a[i]);
for (i=0; i<N-1; i++)
{
for (j=0; j<N-i-1; j++)
{
if (a[j]>a[j+1])
{
t = a[j];
a[j] = a[j+1];
a[j+1] = t;
}
}
printf("\n第 %d 回排序後 :", i);
for (j=0; j<N-i; j++) printf("%4d",a[j]);
}
printf("\n氣泡法排序後\n");
for (i=0; i<N; i++) printf("%5d",a[i]);
printf("\n");
system("pause");
return 0;
}
附件:
1. 13-2-1.png
排序法
by 郭怡勝 2017-12-26 10:01:36, 回應(0), 人氣(255)


#include <stdio.h>
#define N 6
int main()
{
int a[N]={13,56,87,31,6,23};
int i, j, t;
printf("正修科大 40404113 郭怡勝\n");
printf("\n原陣列:\n");
for (i=0; i<N; i++) printf("%5d",a[i]);
for (i=0; i<N-1; i++)
{
for (j=0; j<N-i-1; j++)
{
if (a[j]>a[j+1])
{
t = a[j];
a[j] = a[j+1];
a[j+1] = t;
}
}
printf("\n第 %d 回排序後 :", i);
for (j=0; j<N-i; j++) printf("%4d",a[j]);
}
printf("\n氣泡法排序後\n");
for (i=0; i<N; i++) printf("%5d",a[i]);
printf("\n");
return 0;
}
附件:
1. 13-2.png
身分證檢查(完整版)
by 郭怡勝 2017-12-19 11:41:39, 回應(0), 人氣(279)


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char s[11]="A201411163";
char id[27]="ABCDEFGHJKLMNPQRSTUVXYWZIO";
int i, k, n=strlen(s), sum=0;
char checkDigit;
printf("請輸入身分證號碼 :");
scanf("%s",&s);
for (i=n-2; i>=1; i--)
sum=sum+(s[i]-'0')*(n-1-i);
for(i=1;i<=strlen(id);i++)
{
if(id[i-1] == s[0] )
{
k= 10 + i - 1;
break;
}
}
sum=sum+(k%10)*9+(k/10)*1;
sum = sum % 10;
if (sum == 0)
sum = 0;
else
sum = 10 - sum;
checkDigit=sum+'0';
printf("身份證號碼= \"%s\"\n", s); 
if (checkDigit==s[n-1])
printf(" check digit OK!\n");
else
printf("身份證最後一碼=%c\n正確碼應為 %c\n",s[n-1],checkDigit);
system("pause");
return 0; 
}
附件:
1. 身分證ok.png
身分證檢查(待修正)
by 郭怡勝 2017-12-19 09:44:04, 回應(0), 人氣(332)



#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char s[11]="V121520514";
int i, k, n=strlen(s), sum=0;
char checkDigit;
for (i=n-2; i>=1; i--)
sum=sum+(s[i]-'0')*(n-1-i);
k=s[0]-'A'+10;
sum=sum+(k%10)*9+(k/10)*1;
sum=10-sum%10;
checkDigit=sum+'0';
printf("身份證號碼= \"%s\"\n", s); 
if (checkDigit==s[n-1])
printf(" check digit OK!\n");
else
printf("身份證最後一碼=%c\n正確碼應為 %c\n",s[n-1],checkDigit);
return 0; 
}
擲骰子
by 郭怡勝 2017-12-12 10:49:28, 回應(0), 人氣(232)


/*******************

隨機產生n次骰子
  
****************/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
int i, a, x[6],n;
float r = 0;
unsigned seed;
seed = (unsigned)time(NULL);
srand(seed);
for(i=1;i<=6;i++)
x[i]=0;
printf("正修科大 40404113 郭怡勝\n"); 
printf("丟擲次數: ");
scanf("%d",&n);
for (i=1; i<=n; i++)
{
a = rand() % 6 + 1;
x[a] = x[a]+1;
}
for(i=1;i<=6;i++)
{
 r = r + (float)x[i]/n;
 printf("x[%d] = %d %f  %f \n", i,x[i],(float)x[i]/n,r);
system("pause");
return 0;
}

附件:
1. 擲骰子3.png
6-2延伸(隨機產生1000000次任意二介於0-9整數a,b)
by 郭怡勝 2017-12-05 11:50:46, 回應(0), 人氣(228)


/*******************
隨機產生1000000次任意二介於0-9整數a,b,
若 a+b=9 則印出a,b,及a+b 
****************/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
int i, a, b,x[18];
unsigned seed;
seed = (unsigned)time(NULL);
srand(seed);
for(i=0;i<=18;i++)
x[i]=0;
printf("正修科大 40404113 郭怡勝\n");
for (i=1; i<=1000000; i++)
{
a = rand() % 10;
b = rand() % 10;
x[a+b] = x[a+b]+1;
}
for(i=0;i<=18;i++)
 printf("x[%d] = %d %f  \n", i,x[i],(float)x[i]/1000000);
system("pause");
}
附件:
1. 6-2延伸.png
5-5(求 1+1/2+1/3+1/4+.....+1/n > m 時 n?)
by 郭怡勝 2017-12-05 09:42:11, 回應(0), 人氣(261)


/*問題
求 1+1/2+1/3+1/4+.....+1/n > m 時 n?
(例如輸入 m=10 n=?)
*/
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
float sum=1;
int m,n=1;
printf("正修科大 40404113 郭怡勝 \n");
printf("請輸入m之值=>");
scanf("%d",&m);
printf(" n => 1+1/2+1/3+1/4+.....+1/n = ?\n");
printf("\n %d => 1+1/2+1/3+1/4+.....+1/n = %f \n",n,sum);
while( sum <= m )
{
n++;
 sum = sum + 1.0 / n;
 printf(" %d => 1+1/2+1/3+1/4+.....+1/n = %f \n",n,sum);
}
{
if( sum <= m);
printf("\n當 m => %d 時,n = %d",m,n);
}
return 0;
}
附件:
1. 未命名.png
6-3(產生範圍n數求大於60之平均)
by 郭怡勝 2017-11-28 11:48:18, 回應(0), 人氣(287)


/*******************
隨機產生n個介於[30,99]的正整數x
若 x >= 60 則 
(1)印出 x 
(2)印出大於等於60的個數及其平均值 
****************/
#include <stdio.h>
#include <stdlib.h>
#include <Time.h> 
int main(void)
{
int i, a, b,n,no=0,x;
unsigned seed;
seed = (unsigned)time(NULL); // 取得時間序列
srand(seed); // 以時間序列當亂數種子 
float avg,sum;
printf("正修科大 40404113 郭怡勝\n"); 
printf("請輸入正整數n=");
scanf("%d",&n); 
for (i=1; i<=n ; i++)
{
x = rand() % (70)+30;
if ( x >= 60)
{
sum = sum + x;
no++;
printf("%d ", x);
}
avg = sum/no;
printf("\n大於等於60的個數有 %d 個",no);
printf("\n平均=%f",avg);
return 0;
}
附件:
1. 6-3.png
6-7(n*n乘法表)
by 郭怡勝 2017-11-28 11:30:45, 回應(0), 人氣(241)


/***************
印出 n*n 乘法表
**************/
#include <stdio.h>
int main(void)
{
int i, j, k, n;
printf("正修科大 40404113 郭怡勝\n");
printf("請輸入一個n值 :");
scanf("%d",&n);
for (i=1; i<=n; i++)
{
for (j=1; j<=n; j++)
{
k=i*j;
printf("%d*%d=%2d ", i,j,k);
}
printf("\n");
}
return 0;
}
附件:
1. 6-7.png
7-3(分辨分數階層)
by 郭怡勝 2017-11-28 11:22:50, 回應(0), 人氣(255)


/***********
switch
**********/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
int i=0, a;
srand(time(NULL));
printf("正修科大 40404113 郭怡勝\n");
a = rand()% 101;
switch (a/10)
{
case 10 : printf("%d 是 優等",a); break; 
case 9 : printf("%d 是 甲等",a); break;
case 8 : printf("%d 是 乙等",a); break;
case 7 : printf("%d 是 丙等",a); break;
case 6 : printf("%d 是 丁等",a); break;
default : printf ("%d 是 不及格的",a); break;
return 0;
}

附件:
1. 7-3.png
7-2(隨機分數判測)
by 郭怡勝 2017-11-28 11:20:02, 回應(0), 人氣(234)


/*********** 
continue
break
**********/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
int i=0, a;
srand(time(NULL));
printf("正修科大 40404113 郭怡勝\n");
while(1) 
{
a = rand()% 101;
i++;
if (a < 60 && a > 6) 
continue;
else
if(a >= 60)
printf("%d a=%d ",i, a);
printf(" 是及格的\n");
else 
{
printf("%d a=%d ",i, a); 
printf(" 呵呵 你分數好低 呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵\n");
break; 
}
}
return 0;
}
附件:
1. 7-2.png
7-1(求正數及負數和)
by 郭怡勝 2017-11-28 11:15:34, 回應(0), 人氣(265)


/************
重覆輸入整數直至輸入0時停止
印出正整數之和、 負整數之和 
**************/
#include <stdio.h> 
int main(void)
{
int a, sump=0, sumn=0;
printf("正修科大 40404113 郭怡勝\n");
do
{
printf("請輸入一個整數a : ");
scanf("%d", &a);
if (a>0)
sump=sump+a;
else
sumn=sumn+a;
} while (a!=0);
printf("正數總和= %d\n", sump);
printf("負數總和= %d\n", sumn);
return 0;

}
附件:
1. 7-1.png
6-6(9*9乘法表)
by 郭怡勝 2017-11-28 11:11:11, 回應(0), 人氣(230)


/***************
印出 9*9 乘法表
**************/
#include <stdio.h>
int main(void)
{
int i, j, k;
printf("正修科大 40404113 郭怡勝\n");
for (i=1; i<=9; i++)
{
for (j=1; j<=9; j++)
{
k=i*j;
printf("%d*%d=%2d ", i,j,k);
}
printf("\n");
}
return 0;
}
附件:
1. 6-6.png
6-5(s=1+1/2+1/3+...+1/n)
by 郭怡勝 2017-11-28 11:06:05, 回應(0), 人氣(241)


/**************
從鍵盤輸入一正整數 n 
求 s=1+1/2+1/3+...+1/n
**********/
#include <stdio.h>
int main(void)
{
int i, n;
float s;
printf("正修科大 40404113 郭怡勝\n");
printf("請輸入一個正整數n : ");
scanf("%d", &n);
s=0.0;
for (i=1; i<=n; i++)
{
s=s+1.0/i;
printf("迴圈變數i值= %d ",i);
printf("累積s值= %10.6f\n", s);
}
return 0;
}
附件:
1. 6-5.png
6-4(求正整數迴圈及連乘積)
by 郭怡勝 2017-11-28 10:59:49, 回應(0), 人氣(246)


/************** hw06_32.c 
從鍵盤輸入一正整數 n 
求 f = n * (n-1) * (n-2) *...*3*2*1 
**************/
#include <stdio.h> 
int main(void)
{
int i, n, f;
printf("正修科大 40404113 郭怡勝\n"); 
printf("請輸入一個正整數n : ");
scanf("%d", &n);
f=1;
for (i=n; i>1; i--)
{
f=f*i;
printf("迴圈變數i值= %d ",i);
printf("連乘積f值= %d\n", f);
}
return 0;
}
附件:
1. 6-4.png
6-2(隨機產生=9之數)
by 郭怡勝 2017-11-28 10:05:08, 回應(0), 人氣(303)


/*******************
隨機產生21次任意二整數a,b,
若 a+b=9 則印出a,b,及a+b 
****************/
#include <stdio.h>
#include <stdlib.h>
#include <Time.h> 
int main(void)
{
int i, a, b;
unsigned seed;
seed = (unsigned)time(NULL); // 取得時間序列
srand(seed); // 以時間序列當亂數種子 
printf("正修科大 40404113 郭怡勝\n"); 
for (i=0; i<=20; i++)
{
a = rand() % 10;
b = rand() % 10;
if (a+b == 9)
printf("a=%d b=%d a+b=%d\n", a,b,a+b);
}
return 0;
}
附件:
1. 6-2.png
樂透彩
by 郭怡勝 2017-11-21 11:14:35, 回應(0), 人氣(273)



/*
隨機產生7個整數[1-10] 
****************/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
int   a, b,c,d,e,f,g,i ;
int a1[10],x[10];
 a1[1]=100;
 a1[2]=200;
 a1[3]=400;
 a1[4]=800;
 a1[5]=1600;
 a1[6]=10000;
 a1[7]=300000; 
unsigned seed;
seed = (unsigned)time(NULL); // 取得時間序列
srand(seed); // 以時間序列當亂數種子 
printf("正修科大 40404113 郭怡勝\n");  
a = rand() % 10 + 1 ;
do
 b = rand() % 10 + 1 ;
 c = rand() % 10 + 1 ;
 d = rand() % 10 + 1 ;
 e = rand() % 10 + 1 ;
 f = rand() % 10 + 1 ;
 g = rand() % 10 + 1 ;
// printf("電腦產生 %d %d %d %d %d %d %d\n",a,b,c,d,e,f,g);
}while ( b%2 ==0 || c%2 ==0 || d%2 ==0 || e%2 ==0 || f%2 ==0 || g%2 ==0 ) ;
printf("\n\n");
printf("電腦產生 %7d %7d %7d %7d %7d %7d %7d\n",a,b,c,d,e,f,g);
for(i=1;i<=7;i++)
x[i]= rand() % 7 +1;
printf("對應獎金 %7d %7d %7d %7d %7d %7d %7d\n",a1[x[1]],a1[x[2]],a1[x[3]],a1[x[4]],a1[x[5]],a1[x[6]],a1[x[7]]);
if (a%2==0)
printf("\n恭喜您! 中了%d個鈺晟的微笑!\n",a1[x[1]]);
else
printf("\n可惜你沒得到鈺晟的微笑...\n");

system("pause");   
}
Prev123Next