蒐集了網上C語言入門案例,並適當的做了一些修改和註釋。
例1. 使用 printf() 輸出 “Hello, World!”。
#include <stdio.h>
#include <stdlib.h> //包含system()函數//
int main()
{
printf("Hello, World!\n");
system("pause"); //仿真時,按任意鍵推出應用程序,方便仿真查看結果//
return 0;
}
仿真結果:
例2. 使用 printf() 與 %d 格式化輸出整數。
#include <stdio.h>
#include <stdlib.h> //包含system()函數//
int main()
{
int number;
printf("輸入一個整數: ");
scanf("%d", &number); //通過鍵盤給程序中的變量賦值//
printf("你輸入的整數是: %d\n", number);
system("pause"); //仿真時,按任意鍵推出應用程序,方便仿真查看結果//
return 0;
}
仿真結果:
例3. 使用 printf() 與 %c 格式化輸出一個字符。
#include <stdio.h>
#include <stdlib.h> //包含system()函數//
int main()
{
char c; // 聲明一個字符串變量C//
printf("輸入一個字符(僅限1個字母): ");
scanf("%c", &c); //通過鍵盤給程序中的變量賦值//
printf("輸入的字符爲 %c\n", c);
system("pause"); //仿真時,按任意鍵推出應用程序,方便仿真查看結果//
return 0;
}
仿真結果:
例4. 使用 printf() 與 %f 輸出浮點數。
#include <stdio.h>
#include <stdlib.h>
int main()
{
float f; // 聲明浮點數變量
printf("輸入一個浮點數: ");
scanf("%f", &f); //通過鍵盤給程序中的變量賦值//
printf("輸入的浮點數爲 %f\n", f);
system("pause"); //仿真時,按任意鍵推出應用程序,方便仿真查看結果//
return 0;
}
仿真結果:
例5. 使用 printf() 與 %le 輸出雙精度數。
#include <stdio.h>
#include <stdlib.h>
int main()
{
double d; // 聲明雙精度變量
printf("輸入一個雙精度數: ");
scanf("%le", &d); //通過鍵盤給程序中的變量賦值//
printf("輸入的雙精度數爲 %le\n", d);
system("pause"); //仿真時,按任意鍵推出應用程序,方便仿真查看結果//
return 0;
}
仿真結果:
例6. 使用 scanf() 來接收輸入, printf() 與 %d 格式化輸出整數,實現兩數相加。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int firstNumber, secondNumber, sumOfTwoNumbers;
printf("輸入兩個數(以空格分割): ");
scanf("%d %d", &firstNumber, &secondNumber); // 通過 scanf() 函數接收用戶輸入的兩個整數
sumOfTwoNumbers = firstNumber + secondNumber;
printf("%d + %d = %d\n", firstNumber, secondNumber, sumOfTwoNumbers);
system("pause");
return 0;
}
仿真結果:
例7. 輸入兩個浮點數,計算乘積。
#include <stdio.h>
#include <stdlib.h>
int main()
{
double firstNumber, secondNumber, product;
printf("輸入兩個浮點數: ");
scanf("%lf %lf", &firstNumber, &secondNumber);
product = firstNumber * secondNumber;
printf("%lf * %lf = %.2lf\n", firstNumber, secondNumber,product); // 輸出結果, %.2lf 保留兩個小數點
system("pause");
return 0;
}
仿真結果:
例8. 字符轉 ASCII 碼
#include <stdio.h>
#include <stdlib.h>
int main()
{
char c;
printf("輸入一個字符: ");
scanf("%c", &c);
printf("%c 的 ASCII 爲 %d\n", c, c);
system("pause");
return 0;
}
仿真結果:
附ASCII表
例9. 兩數相除,如果有餘數,輸出餘數。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int dividend, divisor, quotient, remainder;//4個變量分別是被除數、除數、商和餘數//
printf("輸入被除數: ");
scanf("%d", ÷nd);
printf("輸入除數: ");
scanf("%d", &divisor);
quotient = dividend / divisor; //運算符/用來計算商//
remainder = dividend % divisor; //運算符%用來計算餘數//
printf("商 = %d\n", quotient);
printf("餘數 = %d\n", remainder);
system("pause");
return 0;
}
仿真結果:
例10.1 輸入兩個數,比較大小
#include <stdio.h>
#include <stdlib.h>
int main()
{
double a, b;
printf("輸入第一個數:");
scanf("%le",&a);
printf("輸入第二個數:");
scanf("%le",&b);
if(a > b)
printf("%le 大於 %le\n",a,b);
else
printf("%le 小於等於 %le\n",a,b);
system("pause");
return 0;
}
仿真結果:
例10.2 比較三個數大小
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a, b, c;
printf("輸入第一個整數:");
scanf("%d",&a);
printf("輸入第二個整數:");
scanf("%d",&b);
printf("輸入第三個整數:");
scanf("%d",&c);
if ( a > b && a > c )
printf("%d 最大\n", a);
else if ( b > a && b > c )
printf("%d 最大\n", b);
else if ( c > a && c > b )
printf("%d 最大\n", c);
else
printf("有兩個或三個數值相等\n");
system("pause");
return 0;
}
仿真結果:
例11. 計算 int, float, double 和 char 字節大小
#include <stdio.h>
#include <stdlib.h>
int main()
{
int integerType; //整數類型//
float floatType; //浮點型//
double doubleType; //雙精度型//
char charType; //字符型//
printf("Size of int: %ld bytes\n",sizeof(integerType)); //sizeof()函數用於計算變量的大小//
printf("Size of float: %ld bytes\n",sizeof(floatType));
printf("Size of double: %ld bytes\n",sizeof(doubleType));
printf("Size of char: %ld byte\n",sizeof(charType));
system("pause");
return 0;
}
仿真結果:
例12. 交換兩個數的值。
#include <stdio.h>
#include <stdlib.h>
int main()
{
printf("第一種方法,採用臨時變量\n");
double firstNumber, secondNumber, temporaryVariable;
printf("輸入第一個數字: ");
scanf("%lf", &firstNumber);
printf("輸入第二個數字: ");
scanf("%lf",&secondNumber);
temporaryVariable = firstNumber;
firstNumber = secondNumber;
secondNumber = temporaryVariable;
printf("交換後, firstNumber = %.2lf\n", firstNumber);
printf("交換後, secondNumber = %.2lf\n", secondNumber);
system("pause");
printf("第二種方法,不採用臨時變量\n");
printf("交換前 - \n第一個數字 = %lf, 第二個數字 = %lf \n", firstNumber, secondNumber);
firstNumber = firstNumber + secondNumber; // firstNumber的變量爲兩數之和,secondNumber未改變
secondNumber = firstNumber - secondNumber;
firstNumber = firstNumber - secondNumber;
printf("交換後 - \n第一個數字 = %lf, 第二個數字 = %lf \n", firstNumber, secondNumber);
system("pause");
return 0;
}
仿真結果:
例13. 判斷奇數還是偶數。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int number;
printf("請輸入一個整數: ");
scanf("%d", &number);
if(number % 2 == 0)
printf("%d 是偶數\n", number);
else
printf("%d 是奇數\n", number);
system("pause");
return 0;
}
仿真結果:
例14. 循環區間範圍內的奇數/偶數
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i;
printf("100以內的偶數:");
for(i = 1; i <= 100; i++)
{
if(i%2 == 0)
printf("%2d ", i); //%2d表示將數字按寬度爲2,採用右對齊方式輸出//
}
printf("\n100以內的奇數:");
for(i = 1; i <= 100; i++) {
if(i%2 != 0)
printf("%2d ", i);
}
printf("\n");
system("pause");
return 0;
}
仿真結果:
例15. 判斷元音輔音。
知識點:英語有26個字母,元音只包括 a、e、i、o、u 這五個字母,其餘的都爲輔音。y是半元音、半輔音字母,但在英語中都把他當作輔音。
#include <stdio.h>
#include <stdlib.h>
int main()
{
char c;
int isLowercaseVowel, isUppercaseVowel;
printf("輸入一個字母: ");
scanf("%c",&c);
isLowercaseVowel = (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u');//小寫字母,值爲1時說明是元音//
isUppercaseVowel = (c == 'A' || c == 'E' || c == 'I' || c == 'O' || c == 'U');//大寫字母,值爲1時說明是元音//
if (isLowercaseVowel || isUppercaseVowel)
printf("%c 是元音\n", c);
else
printf("%c 是輔音\n", c);
system("pause");
return 0;
}
仿真結果:
例16. 判斷三個數中的最大數。
#include <stdio.h>
#include <stdlib.h>
int main()
{
double n1, n2, n3;
printf("請輸入三個數,以空格分隔: ");
scanf("%lf %lf %lf", &n1, &n2, &n3);
if( n1>=n2 && n1>=n3 )
printf("%.2f 是最大數\n", n1);
if( n2>=n1 && n2>=n3 )
printf("%.2f 是最大數\n", n2);
if( n3>=n1 && n3>=n2 )
printf("%.2f 是最大數\n", n3);
system("pause");
return 0;
}
仿真結果:
例17. 求一元二次方程:ax2+bx+c=0 的根。
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
int main()
{
float a,b,c,x1,x2,d;
printf("求公式ax^2+bx+c=0的根\n");
printf("輸入方程的第一個係數:a=");
scanf("%f",&a);
printf("輸入方程的第二個係數:b=");
scanf("%f",&b);
printf("輸入方程的第三個係數:c=");
scanf("%f",&c);
if(a!=0)
{
if(b*b-4*a*c>=0)
{
d=sqrt(b*b-4*a*c);
x1=(-b+d)/(2*a);
x2=(-b-d)/(2*a);
if(x1<x2)
printf("%0.2f %0.2f\n",x2,x1);
else
printf("%0.2f %0.2f\n",x1,x2);
}
else
printf("輸入值有問題!\n");
}
system("pause");
return 0;
}
仿真結果:
例18. 判斷閏年。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int year;
printf("輸入年份: ");
scanf("%d",&year);
if(year%4 == 0)
{
if( year%100 == 0)
{
if ( year%400 == 0) // 能被4,100,400整除,則是閏年//
printf("%d 是閏年\n", year);
else
printf("%d 不是閏年\n", year);
}
else
printf("%d 是閏年\n", year ); //能被4整除,不能被100整除,是閏年//
}
else
printf("%d 不是閏年\n", year);
system("pause");
return 0;
}
仿真結果:
例19. 判斷正數、負數。
#include <stdio.h>
#include <stdlib.h>
int main()
{
double number;
printf("輸入一個數字: ");
scanf("%lf", &number);
if (number <= 0.0)
{
if (number == 0.0)
printf("你輸入的是 0\n");
else
printf("你輸入的是負數\n");
}
else
printf("你輸入的是正數\n");
system("pause");
return 0;
}
仿真結果:
例20. 判斷字母。
#include <stdio.h>
#include <stdlib.h>
int main()
{
char c;
printf("輸入一個字符: ");
scanf("%c",&c);
if( (c>='a' && c<='z') || (c>='A' && c<='Z')) //a~z的ASCII區間是97~122,A~Z的ASCII區間是65~90//
printf("是字母\n");
else
printf("不是字母\n");
system("pause");
return 0;
}
仿真結果:
例21. 計算自然數的和。
#include <stdio.h>
#include <stdlib.h>
int addNumbers(int n); //定義一個子函數//
int main()
{
int n, i, sum = 0;
printf("第一種方法,使用for\n");
printf("輸入一個正整數,確定從1加到這個正整數: ");
scanf("%d",&n);
for(i=1; i <= n; ++i)
{
sum += i; // sum = sum+i;
}
printf("Sum = %d\n",sum);
sum=0; //sum清零//
printf("第二種方法,使用while\n");
printf("輸入一個正整數,確定從1加到這個正整數: ");
scanf("%d",&n);
i = 1;
while ( i <=n )
{
sum += i;
++i;
}
printf("Sum = %d\n",sum);
printf("第三種方法,使用遞歸\n");
printf("輸入一個正整數,確定從1加到這個正整數: ");
scanf("%d", &n);
printf("Sum = %d\n",addNumbers(n));
system("pause");
return 0;
}
int addNumbers(int m)
{
if(m != 0)
return m + addNumbers(m-1);
else
return m;
}
仿真結果:
例22. 輸出九九乘法口訣表。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i = 0;
int j = 0;
for(i=1;i<=9;i++)
{
for(j=1;j<=i;j++){
printf("%dx%d=%d\t",j,i,i*j); //\t表示水平製表(HT) (跳到下一個TAB位置)//
}
printf("\n");
}
system("pause");
}
仿真結果:
例23. 斐波那契數列。
知識點:斐波那契數列指的是這樣一個數列 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89… 這個數列從第3項開始,每一項都等於前兩項之和。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i, n, t1 = 0, t2 = 1, nextTerm;
printf("方法一,使用for\n");
printf("從1開始,輸出幾項: ");
scanf("%d", &n);
printf("斐波那契數列: ");
for (i = 1; i <= n; ++i)
{
printf("%d, ", t1);
nextTerm = t1 + t2;
t1 = t2;
t2 = nextTerm;
}
printf("\n");
system("pause");
printf("方法二,使用while\n");
t1 = 0, t2 = 1, nextTerm=0;
printf("輸入,最大值不超過: ");
scanf("%d", &n);
printf("斐波那契數列: %d, %d, ", t1, t2);
nextTerm = t1 + t2;
while(nextTerm <= n)
{
printf("%d, ",nextTerm);
t1 = t2;
t2 = nextTerm;
nextTerm = t1 + t2;
}
printf("\n");
system("pause");
return 0;
}
仿真結果:
例24. 兩數的最大公約數。
#include <stdio.h>
#include <stdlib.h>
int hcf(int n1, int n2); //爲方案四服務//
int main()
{
int n1, n2, i, gcd;
printf("方案一,使用for和if\n");
printf("輸入兩個正整數,以空格分隔: ");
scanf("%d %d", &n1, &n2);
for(i=1; i <= n1 && i <= n2; ++i)
{
if(n1%i==0 && n2%i==0)
gcd = i;
}
printf("%d 和 %d 的最大公約數是 %d\n", n1, n2, gcd);
printf("方案二,使用while和if\n");
printf("輸入兩個數,以空格分隔: ");
scanf("%d %d",&n1,&n2);
while(n1!=n2)
{
if(n1 > n2)
n1 -= n2; //-=表示把左邊的數減去右邊的數的差賦值給左邊的數//
else
n2 -= n1;
}
printf("最大公約數是 %d\n",n1);
printf("方案三,包含正數和負數時\n");
printf("輸入兩個數,以空格分隔: ");
scanf("%d %d",&n1,&n2);
n1 = ( n1 > 0) ? n1 : -n1; //當n1>0時,n1=n1否則n1=-n1
n2 = ( n2 > 0) ? n2 : -n2; //當n2>0時,n2=n2否則n2=-n2
while(n1!=n2)
{
if(n1 > n2)
n1 -= n2;
else
n2 -= n1;
}
printf("最大公約數是 %d\n",n1);
printf("方案四,使用遞歸方法\n");
printf("輸入兩個正整數: ");
scanf("%d %d", &n1, &n2);
printf("%d 和 %d 的最大公約數爲 %d\n", n1, n2, hcf(n1,n2));
system("pause");
return 0;
}
int hcf(int n1, int n2)
{
if (n2 != 0)
return hcf(n2, n1%n2);
else
return n1;
}
仿真結果:
例25. 兩數最小公倍數。
#include <stdio.h>
#include <stdlib.h>
int main()
{
printf("方案一,使用while和if\n");
int n1, n2, minMultiple;
printf("輸入兩個正整數:");
scanf("%d %d", &n1, &n2);
minMultiple = (n1>n2) ? n1 : n2;
while(1)
{
if( minMultiple%n1==0 && minMultiple%n2==0 )
{
printf("%d 和 %d 的最小公倍數爲 %d\n", n1, n2,minMultiple);
break;
}
++minMultiple;
}
printf("方案二,通過最大公約數計算\n");
int i,gcd,lcm;
printf("輸入兩個正整數: ");
scanf("%d %d",&n1,&n2);
for(i=1; i <= n1 && i <= n2; ++i)
{
if(n1%i==0 && n2%i==0)
gcd = i;
}
lcm = (n1*n2)/gcd;
printf("%d 和 %d 的最小公倍數爲 %d\n", n1, n2, lcm);
system("pause");
return 0;
}
仿真結果:
例26. 階乘。
知識點:一個正整數的階乘是所有小於及等於該數的正整數的積,並且0的階乘爲1。自然數n的階乘寫作n!。
n!=1×2×3×…×n。階乘亦可以遞歸方式定義:0!=1,n!=(n-1)!×n。
#include <stdio.h>
#include <stdlib.h>
long int multiplyNumbers(int n); //爲方案二服務//
int main()
{
int n, i;
unsigned long long factorial = 1;
printf("方案一:使用for\n");
printf("輸入一個整數: ");
scanf("%d",&n);
if (n < 0)
printf("Error! 負數沒有階乘\n");
else
{
for(i=1; i<=n; ++i)
{
factorial *= i;
}
printf("%d! = %llu\n", n, factorial);
}
system("pause");
printf("方案二,使用遞歸\n");
printf("輸入一個整數: ");
scanf("%d", &n);
printf("%d! = %ld\n", n, multiplyNumbers(n));
system("pause");
return 0;
}
long int multiplyNumbers(int n)
{
if (n >= 1)
return n*multiplyNumbers(n-1);
else
return 1;
}
仿真結果:
例27. 循環輸出26個字母。
#include <stdio.h>
#include <stdlib.h>
int main()
{
char c;
for(c = 'A'; c <= 'Z'; ++c)
printf("%c ", c);
printf("\n");
system("pause");
printf("考慮大小寫方案\n");
printf("輸入 u 顯示大寫字母,輸入 l 顯示小寫字母: ");
scanf("%c", &c);
if(c== 'U' || c== 'u')
{
for(c = 'A'; c <= 'Z'; ++c)
printf("%c ", c);
}
else if (c == 'L' || c == 'l')
{
for(c = 'a'; c <= 'z'; ++c)
printf("%c ", c);
}
else
printf("Error! 輸入非法字符");
printf("\n");
system("pause");
return 0;
}
仿真結果:
例28. 判斷數字爲幾位數。
#include <stdio.h>
#include <stdlib.h>
int main()
{
long long n;
int count = 0;
printf("輸入一個整數: ");
scanf("%lld", &n); //lld是long long整型//
while(n != 0)
{
n /= 10;
++count;
}
printf("數字是 %d 位數\n", count);
system("pause");
}
仿真結果:
例29. 計算一個數的 n 次方。
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int power(int n1, int n2);
int main()
{
int base1, exponent1;
long long result1 = 1;
printf("方案一,使用while\n");
printf("基數: ");
scanf("%d", &base1);
printf("指數: ");
scanf("%d", &exponent1);
while (exponent1 != 0)
{
result1 *= base1;
--exponent1;
}
printf("結果:%lld\n", result1);
printf("方案二,使用pow()函數\n");
double base2, exponent2, result2;
printf("基數: ");
scanf("%lf", &base2);
printf("指數: ");
scanf("%lf", &exponent2);
result2 = pow(base2, exponent2);
printf("%.1lf^%.1lf = %.2lf\n", base2, exponent2, result2);
system("pause");
printf("方案三,使用遞歸\n");
int base3, powerRaised3, result3;
printf("基數: ");
scanf("%d",&base3);
printf("指數(正整數): ");
scanf("%d",&powerRaised3);
result3 = power(base3, powerRaised3);
printf("%d^%d = %d\n", base3, powerRaised3, result3);
system("pause");
return 0;
}
int power(int base, int powerRaised)
{
if (powerRaised != 0)
return (base*power(base, powerRaised-1));
else
return 1;
}
仿真結果:
例30. 判斷迴文數。
知識點:設n是一任意自然數。若將n的各位數字反向排列所得自然數n1與n相等,則稱n爲一回文數。例如,若n=1234321,則稱n爲一回文數;但若n=1234567,則n不是迴文數。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n, reversedInteger = 0, remainder, originalInteger;
printf("輸入一個整數:");
scanf("%d", &n);
originalInteger = n;
while( n!=0 ) //while函數實現翻轉功能//
{
remainder = n%10;
reversedInteger = reversedInteger*10 + remainder;
n /= 10;
}
if (originalInteger == reversedInteger)
printf("%d 是迴文數\n", originalInteger);
else
printf("%d 不是迴文數\n", originalInteger);
system("pause");
return 0;
}
仿真結果:
例31. 判斷素數。
知識點:質數(prime number)又稱素數,有無限個。質數定義爲在大於1的自然數中,除了1和它本身以外不再有其他因數,這樣的數稱爲質數。
#include <stdio.h>
#include <stdlib.h>
int checkPrimeNumber(int n);
int main()
{
int n, i, flag = 0;
printf("判斷一個正整數是否爲素數\n");
printf("輸入一個正整數: ");
scanf("%d",&n);
for(i=2; i<=n/2; ++i)
{
if(n%i==0)
{
flag=1;
break;
}
}
if (flag==0)
printf("%d 是素數\n",n);
else
printf("%d 不是素數\n",n);
printf("判斷兩個數之間的素數\n");
int low, high;
flag=0;
printf("輸入兩個整數: ");
scanf("%d %d", &low, &high);
printf("%d 與 %d 之間的素數爲: ", low, high);
while (low < high)
{
flag = 0;
for(i = 2; i <= low/2; ++i)
{
if(low % i == 0)
{
flag = 1;
break;
}
}
if (flag == 0)
printf("%d ", low);
++low;
}
printf("\n");
printf("使用函數判斷兩數間的素數\n");
int n1,n2;
flag=0;
printf("輸入兩個正整數: ");
scanf("%d %d", &n1, &n2);
printf("%d 和 %d 間的素數爲: ", n1, n2);
for(i=n1+1; i<n2; ++i)
{
flag = checkPrimeNumber(i);
if(flag == 1)
printf("%d ",i);
}
if (i<=n1+1)
printf("無");
printf("\n");
system("pause");
return 0;
}
int checkPrimeNumber(int n)
{
int j, flag = 1;
for(j=2; j <= n/2; ++j)
{
if (n%j == 0)
{
flag =0;
break;
}
}
return flag;
}
仿真結果:
例32. 判斷Armstrong數(阿姆斯壯數)。
Armstrong 數,就是n位數的各位數的n次方之和等於該數。
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int checkPrimeNumber(int n);
int checkArmstrongNumber(int n);
int main()
{
printf("判斷Armstrong數\n");
int number, originalNumber;
double remainder;
double result = 0;
printf("輸入四位數: ");
scanf("%d", &number);
originalNumber = number;
while (originalNumber != 0)
{
remainder = originalNumber%10;
result += remainder*remainder*remainder*remainder;
originalNumber /= 10;
}
if(result == number)
printf("%d 是 Armstrong 數\n",number);
else
printf("%d 不是 Armstrong 數\n",number);
system("pause");
printf("尋找兩數之間的Armstrong數\n");
int low, high, i, temp1, temp2, n = 0;
result = 0;
printf("輸入兩個整數: ");
scanf("%d %d", &low, &high);
printf("%d 和 %d 之間的 Armstrong 數爲: ", low, high);
for(i = low + 1; i < high; ++i)
{
temp2 = i;
temp1 = i;
// 計算
while (temp1 != 0) //先計算是幾位數//
{
temp1 /= 10;
++n;
}
while (temp2 != 0) //計算Armstrong 數//
{
remainder = temp2 % 10;
result += pow(remainder, n);
temp2 /= 10;
}
if (result == i)
{
printf("%d ", i);
}
n = 0;
result = 0;
}
printf("\n");
system("pause");
printf("使用函數判斷Armstrong 數\n");
int flag;
printf("輸入正整數: ");
scanf("%d", &n);
flag = checkPrimeNumber(n);
if (flag == 1)
printf("%d 是素數。\n", n);
else
printf("%d 不是素數\n", n);
flag = checkArmstrongNumber(n);
if (flag == 1)
printf("%d 是 Armstrong 數\n", n);
else
printf("%d 不是 Armstrong 數\n",n);
system("pause");
return 0;
}
int checkPrimeNumber(int n)
{
int i,flag = 1;
for(i=2; i<=n/2; ++i)
{
if(n%i == 0)
{
flag = 0;
break;
}
}
return flag;
}
int checkArmstrongNumber(int number)
{
int originalNumber, n = 0, flag;
double remainder, result=0;
originalNumber = number;
while (originalNumber != 0)
{
originalNumber /= 10;
++n;
}
originalNumber = number;
while (originalNumber != 0)
{
remainder = originalNumber%10;
result += pow(remainder, n);
originalNumber /= 10;
}
if(result == number)
flag = 1;
else
flag = 0;
return flag;
}
仿真結果:
例33. 求一個數的因數。
知識點:假如a*b=c(a、b、c都是整數),那麼我們稱a和b就是c的因數。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int number, i;
printf("輸入一個整數: ");
scanf("%d",&number);
printf("%d 的因數有: ", number);
for(i=1; i <= number; ++i)
{
if (number%i == 0)
{
printf("%d ",i);
}
}
printf("\n");
system("pause");
return 0;
}
仿真結果:
例34. 創建三角形圖案。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i, j, rows;
printf("使用*號創建三角形\n");
printf("行數: ");
scanf("%d",&rows);
for(i=1; i<=rows; ++i)
{
for(j=1; j<=i; ++j)
{
printf("* ");
}
printf("\n");
}
printf("使用數字創建三角形\n");
printf("行數: ");
scanf("%d",&rows);
for(i=1; i<=rows; ++i)
{
for(j=1; j<=i; ++j)
{
printf("%d ",j);
}
printf("\n");
}
printf("使用字母創建三角形\n");
char input, alphabet = 'A';
printf("輸入大寫字母:");
scanf("%s",&input);
for(i=1; i <= (input-'A'+1); ++i)
{
for(j=1;j<=i;++j)
{
printf("%c", alphabet);
}
++alphabet;
printf("\n");
}
printf("使用*號創建倒三角形\n");
printf("行數: ");
scanf("%d",&rows);
for(i=rows; i>=1; --i)
{
for(j=1; j<=i; ++j)
{
printf("* ");
}
printf("\n");
}
printf("使用數字創建倒三角形\n");
printf("行數: ");
scanf("%d",&rows);
for(i=rows; i>=1; --i)
{
for(j=1; j<=i; ++j)
{
printf("%d ",j);
}
printf("\n");
}
printf("使用*號創建金字塔\n");
int space, k=0;
printf("Enter number of rows: ");
scanf("%d",&rows);
for(i=1; i<=rows; ++i, k=0)
{
for(space=1; space<=rows-i; ++space)
{
printf(" ");
}
while(k != 2*i-1)
{
printf("* ");
++k;
}
printf("\n");
}
printf("使用數字創建金字塔\n");
int count = 0, count1 = 0;
k=0;
printf("行數: ");
scanf("%d",&rows);
for(i=1; i<=rows; ++i)
{
for(space=1; space <= rows-i; ++space)
{
printf(" ");
++count;
}
while(k != 2*i-1)
{
if (count <= rows-1)
{
printf("%d ", i+k);
++count;
}
else
{
++count1;
printf("%d ", (i+k-2*count1));
}
++k;
}
count1 = count = k = 0;
printf("\n");
}
printf("使用*號創建倒金字塔\n");
printf("行數: ");
scanf("%d",&rows);
for(i=rows; i>=1; --i)
{
for(space=0; space < rows-i; ++space)
printf(" ");
for(j=i; j <= 2*i-1; ++j)
printf("* ");
for(j=0; j < i-1; ++j)
printf("* ");
printf("\n");
}
printf("創建楊輝三角\n");
int coef = 1;
printf("行數: ");
scanf("%d",&rows);
for(i=0; i<rows; i++)
{
for(space=1; space <= rows-i; space++)
printf(" ");
for(j=0; j <= i; j++)
{
if (j==0 || i==0)
coef = 1;
else
coef = coef*(i-j+1)/j;
printf("%4d", coef);
}
printf("\n");
}
printf("弗洛伊德三角形\n");
int l,N;
printf("行數: ");
scanf("%d",&N);
for(i=1,j=1;i<=N;i++)
{
for(l=1;l<=i;l++,j++)
printf("%5d",j);
printf("\n");
}
system("pause");
return 0;
}
仿真結果:
例35. 表格形式輸出數據。
#include <stdio.h>
#include <stdlib.h>
int main()
{
printf("將 1~100 的數據以 10x10 矩陣格式輸出\n");
int i, j, count;
for(i = 1; i <= 10; i++) {
for(j = i; j <=100; j += 10 )
printf(" %3d", j);
printf("\n");
}
system("pause");
printf("等差數列輸出 10x10 矩陣格式\n");
int start, end;
start = 2, end = 10;
for(i = start; i <= end; i++)
{
count = i;
for(j = 1; j <= 10; j++) {
printf(" %3d", count*j);
}
printf("\n");
}
system("pause");
printf("乘法格式運算\n");
int n = 3;
j = 1;
for(i = n; i <= (n*10); i+=n) {
printf("%3d x %2d = %3d\n", n, j, i);
j++;
}
system("pause");
return 0;
}
仿真結果: