c语言for常错案例,C语言-经典实例

1、根据输入年份判断是否为闰年

闰年:四年一闰,百年不闰,四百年在闰

int a;

printf("输入年份:");

scanf("%d",&a);

if ((a%4==0 && a%100 !=0) || a%400 == 0){

printf("%d 是闰年",a);

}else{

printf("%d 不是闰年",a);

}

2、判断输入字符是否为字母

字母:a-z或者A-Z

char c;

printf("输入一个字符: ");

scanf("%c",&c);

if( (c>='a' && c<='z') || (c>='A' && c<='Z'))

printf("%c 是字母",c);

else

printf("%c 不是字母",c);

3、输出9x9乘法表

乘法表:每两个乘法之间空格,每行输出玩换行

for(int i=1;i<=9;i++){

for(int j=1;j<=i;j++){

printf("%d*%d=%d\t",j,i,j*i);

}

printf("\n");

}

4、输出指定数量的斐波那契数列

斐波那契数列:数列从第三项开始,每个数都等于前两个数之和

int n;

printf("输出几项:");

scanf("%d",&n);

int t0=0,t1=1;

int temp;

for (int i=0;i

printf("%d ",t1);

temp = t0+t1;

t0 = t1;

t1 = temp;

}

5、求两数最大公约数

公约数:同时可以整除两个数的最大数

int a,b,temp;

printf("输入两个数:");

scanf("%d,%d",&a,&b);

if (a>b){

temp = b

}else{

temp = a;

}

for(int i=temp;i>1;i--){

if (a%i==0 && b%i==0){

// 是公约数

printf("%d,%d的最大公约数为%d:",a,b,i);

break;

}

}

最小公倍数=(a*b)/最大公约数

6、求输入一个数的阶乘

一个正整数的阶乘(英语:factorial)是所有小于及等于该数的正整数的积,并且0的阶乘为1。自然数n的阶乘写作n!。

n!=1×2×3×...×n。阶乘亦可以递归方式定义:0!=1,n!=(n-1)!×n。

int n, i;

int factorial = 1;

printf("输入一个整数: ");

scanf("%d",&n);

// 如果输入是负数,显示错误

if (n < 0)

printf("Error! 负数没有阶乘jiechen");

else

{

for(i=1; i<=n; ++i)

{

factorial *= i; // factorial = factorial*i;

}

printf("%d! = %d", n, factorial);

}

7、输出26个字母

char c;

for(c = 'A'; c <= 'Z'; ++c)

printf("%c ", c);

8、计算一个数的n次方

int base, exponent;

long long result = 1;

printf("基数: ");

scanf("%d", &base);

printf("指数: ");

scanf("%d", &exponent);

while (exponent != 0)

{

result *= base;

--exponent;

}

printf("结果:%lld", result);

也可以使用pow()函数,需要引入math.h头文件

9、判断回文数

回文数:设n是一任意自然数。若将n的各位数字反向排列所得自然数n1与n相等,则称n为一回文数;

char n[10];

printf("输入字符串数字: ");

scanf("%s", n);

// 获取字符串长度

int len = strlen(n);

char nn[10];

for (int i=0; i

nn[len-1-i] = n[i];

}

printf("%s",nn);

10、判断素数

素数:质数(prime number)又称素数,有无限个。质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数,这样的数称为质数

int n, i, flag = 0;

printf("输入一个正整数: ");

scanf("%d",&n);

for(i=2; i<=n/2; ++i)

{

// 符合该条件不是素数

if(n%i==0)

{

flag=1;

break;

}

}

if (flag==0)

printf("%d 是素数",n);

else

printf("%d 不是素数",n);

11、判断一个数是否为两个素数的和

int checkPrime(int n);

int main()

{

int n, i, flag = 0;

printf("输入正整数: ");

scanf("%d", &n);

for(i = 2; i <= n/2; ++i)

{

// 检测判断

if (checkPrime(i) == 1)

{

if (checkPrime(n-i) == 1)

{

printf("%d = %d + %d\n", n, i, n - i);

flag = 1;

}

}

}

if (flag == 0)

printf("%d 不能分解为两个素数。", n);

return 0;

}

// 判断素数

int checkPrime(int n)

{

int i, isPrime = 1;

for(i = 2; i <= n/2; ++i)

{

if(n % i == 0)

{

isPrime = 0;

break;

}

}

return isPrime;

}

12、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满足条件的排列。

int i,j,k;

for(i=1;i<5;i++) { // 以下为三重循环

for(j=1;j<5;j++) {

for (k=1;k<5;k++) { // 确保i、j、k三位互不相同

if (i!=k&&i!=j&&j!=k) {

printf("%d,%d,%d\n",i,j,k);

}

}

}

}

13、输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

分析:利用while语句,条件为输入的字符不为'\n'。

char c;

int letters=0,spaces=0,digits=0,others=0;

printf("请输入一些字母:\n");

while((c=getchar())!='\n')

{

if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))

letters++;

else if(c>='0'&&c<='9')

digits++;

else if(c==' ')

spaces++;

else

others++;

}

printf("字母=%d,数字=%d,空格=%d,其他=%d\n",letters,digits,spaces,others);

14、编程找出1000以内的所有完数。

分析:一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3

int i,j,k,n,sum;

int a[256];

for(i=2;i<=N;i++)

{

sum=a[0]=1;

k=0;

for(j=2;j<=(i/2);j++)

{

if(i%j==0)

{

sum+=j;

a[++k]=j;

}

}

if(i==sum)

{

printf("%d=%d",i,a[0]);

for(n=1;n<=k;n++)

printf("+%d",a[n]);

printf("\n");

}

}

你可能感兴趣的:(c语言for常错案例)