1.九九乘法表
#include <stdio.h>
int main(int argc,const char *argv[])
{
//外層循環--有多少行
for (int i=1; i<=9; i++) {
//內層循環--每一行打印的具體條目
for (int j=1; j<=i; j++) {
printf("%d*%d=%d ", j, i, i*j);
}
printf("\n");
}
return 0;
}
2.字母金字塔
//輸入:F
//\
//輸出:
// F
// EFE
// DEFED
// CDEFEDC
// BCDEFEDCB
//ABCDEFEDCBA
/*
分析:
F
EF E
DEF ED
CDEF EDC
BCDEF EDCB
ABCDEF EDCBA
*/
int main(int argc,const char *argv[])
{
char ch;
scanf("%c", &ch);
//外層循環--打印多少行
for (int i=0; i<ch-'A'+1; i++) {
//打印空格--注意空格數量與 i 的關係
for (int j=0; j<ch-'A'-i; j++) {
printf(" ");
}
//打印左半部分字符
for (int j=i; j>=0; j--) {
printf("%c", ch-j);
}
//打印有半部分字符
for (int j=0; j<i; j++) {
printf("%c", ch-1-j);
}
printf("\n");
}
return 0;
}
// 輸入:F
// 輸出:
// FEDCBA
// EDCBAB
// DCBABC
// CBABCD
// BABCDE
// ABCDEF
/*
分析:同理上
*/
char ch;
scanf("%c",&ch);
for (int i=0; i<ch-'A'+1; i++) {
for (int j=ch-'A'-i; j>=0; j--) {
printf("%c",'A'+j);
}
for (int j=0; j<i; j++) {
printf("%c",'A'+j+1);
}
printf("\n");
}
//輸入:F
//\
//輸出:
//
// A
// ABA
// ABCBA
// ABCDCBA
// ABCDEDCBA
//ABCDEFEDCBA
int main(int argc,const char *argv[])
{
char ch;
scanf("%c", &ch);
for (int i=0; i<ch-'A'+1; i++) {
for (int j=0; j<ch-'A'-i; j++) {
printf(" ");
}
for (int j=0; j<=i; j++) {
printf("%c", 'A'+j);
}
for (int j=i; j>0; j--) {
printf("%c",'A'+j-1);
}
printf("\n");
}
return 0;
}
//輸入:F
//
//輸出:
//
//FEDCBA
// EDCBAB
// DCBABC
// CBABCD
// BABCDE
// ABCDEF
int main(int argc,const char *argv[])
{
char ch;
scanf("%c", &ch);
for (int i=0; i<ch-'A'+1; i++) {
for (int j=i; j>0; j--) {
printf(" ");
}
for (int j= ch-'A'-i;j>=0; j--) {
printf("%c", 'A'+j);
}
for (int j=0; j<i; j++) {
printf("%c", 'A'+1+j);
}
printf("\n");
}
return 0;
}
3.(循環倒置)
eg.給定一個 5 位的整數,將該數按照 10 進制位逆置,例如給定 12345 變成 54321
int m;
scanf("%d",&m);
int n=0;
while (m) {
//取出最後一位數並且向高位移動
n=n*10 + m%10;
//除去最後一位
m=m/10;
}
printf("%d\n",n);
return 0;
4.(循環得到各位數字)
eg.將某個 8 位的整數所有位的數值加在一起並輸出
int m;
scanf("%d",&m);
int n=0;
int sum=0;
while (m) {
//依次取出每一位
n=m%10;
// printf("%d",n);
sum=sum+n;
//去除最後一位
m=m/10;
}
printf("%d\n",sum);
5.(循環求解"完數")
eg.找到1000以內的所有”完數”,所謂完數是指一個數是其所有因子之和 如: 6 = 1+2+3;
for(int i = 1; i <= 1000; i++ )
{
int sum = 0;
for ( int j = 1; j < i; j++)
{
//找到符合的數字,添加
if( i % j == 0 )
sum = sum + j;
}
//滿足條件
if( i == sum )
printf( "%d\n",i);
}
6.最大公約數&最小公倍數
//最大公約數,最小公倍數
//最小公倍數=兩整數的乘積÷最大公約數
//輾轉相除法
// ① a%b得餘數c
//
// ② 若c=0,則b即爲兩數的最大公約數
//
// ③ 若c≠0,則a=b,b=c,再回去執行①
int m,n;
int a,b,c;
scanf("%d%d",&a,&b);
m=a;
n=b;
//go
while (b!=0) {
c=a%b;
a=b;
b=c;//餘數賦值
}
printf("最大公約數%d\n",a);
printf("最小公倍數%d\n",m*n/a);
eg.輸入兩個分數,輸出兩分數之和(要求約分)
int a,b;
int m,n;
scanf("%d/%d",&a,&b);
scanf("%d/%d",&m,&n);
int x,y;
x=a*n+m*b;
y=b*n;
//公約數
int i,j,k;
i=x;
j=y;
while (j!=0) {
k=i%j;
i=j;
j=k;
}
printf("\n公約數%d\n",i);
printf("%d/%d\n",x/i,y/i);