回文数算法
/*23.9.18 20点01分
目的:回文数的判定
*/
#include<stdio.h>
int main ()
{
int val,m,sum;
printf("请输入一个数以判断是否是回文数 val = \n");
scanf("%d",&val);
sum = 0;//需要令sum的初始值是0
/*for( m = val;m!=0;m/=10)
{
sum = sum * 10 + m % 10;
printf("%d\n",sum);
}*/
m = val;
while(m)
{
sum = sum*10 + m % 10;
m/=10;
printf("%d\n",sum);
}
//for 与 while的回文数判定 能用for就一定能用while
if(sum==val) //这里是 == 等于是赋值
printf("这是一个回文数!\n");
else
printf("这不是一个回文数!\n");
}
/*
运行结果:
请输入一个数以判断是否是回文数 val =
12222221
1
12
122
1222
12222
122222
1222222
12222221
这是一个回文数!
请输入一个数以判断是否是回文数 val =
123456
6
65
654
6543
65432
654321
这不是一个回文数!
*/
斐波拉契序列算法
/*
目的:斐波拉契序列 的测试
1 2 3 5 8 13 21 34
*/
#include<stdio.h>
int main (void)
{
long int a1 = 1,a2 = 2,a3,n,i,sum,big,little;
printf("请输入你需要查找的数的序列号\n n = ");
scanf("%d",&n); //记得千万要记得加&
if(n == 1)
printf("n = 1 时该数为%d",a1);
else if (n == 2)
printf("n = 2 时该数为%d",a2);
else
{
little = 1;
big = 2;
for(i = 3;i<=n;i++)
{
sum = big + little;
little = big ; //将后一位数的值赋给前一位数
big = sum ; //将和数赋值给前一位数
}
}
printf("n = %d 时该数为%d\n",n,sum);
return 0;
}
/*
在Dev-c++ 5.11中的运行结果为:
运行结果:
---------------------------------
请输入你需要查找的数的序列号
n = 1
n = 1 时该数为1n = 1 时该数为1
--------------------------------
请输入你需要查找的数的序列号
n = 2
n = 2 时该数为2n = 2 时该数为1
--------------------------------
请输入你需要查找的数的序列号
n = 3
n = 3 时该数为3
--------------------------------
请输入你需要查找的数的序列号
n = 20
n = 20 时该数为10946
-------------------------------
请输入你需要查找的数的序列号
n = 30
n = 30 时该数为1346269
--------------------------------
*/
switch的用法
#include<stdio.h>
int main(void)
{
int fl;
printf("请输入你需要到达的楼层floor = \n");
scanf("%d",&fl);
switch (fl)
{
case 1:
printf("到达第一层"); //printf打错字符打成prinf时会报错
break;
case 2:
printf("到达第二层");
break;
case 3:
printf("到达第三层") ;
break;
default:
printf("还没修到这一层");
break;
}
return 0;
}
质数分解与do while的使用
#include<stdio.h>
int main(void)
{
int num1,i;
char ch;
do
{
printf("请输入一个数 num1 = ");
scanf("%d",&num1);
printf("该数可分解为:");
for(i=2;i<=num1;i++)
{
while(num1!=i)
{
if(num1%i==0) //第一次写的时候这里出错了,记得是取余数而不是除
{
printf("%d*",i);
num1 = num1 / i;
// printf("%d",num1) ;
}
else
break;
}
}
printf("%d\n",num1);
printf("是否继续?(Y/N)\n");
scanf(" %c",ch);
}while(ch=='Y'||ch=='y');//(ch=='Y'||ch=='y') ;
return 0;
}
getchar()的使用
#include <stdio.h>
int main ()
{
char c;
printf("请输入字符:");
c = getchar();
printf("输入的字符:");
putchar(c);
return(0);
}
comtinue与getchar()的使用
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
int i,j;
char ch;
printf("请输入一个i =");
scanf ("%d",&i);
printf("i = %d\n",i);
while((ch=getchar())!='\n') //若输入的为 1 asdf sdf sdf 则除1之外的数字会污染后面的内存对下一个输入产生影响
continue; //while语句后面不需要加;
system("PAUSE");
printf("请输入一个j=");
scanf ("%d",&j);
printf("j = %d",j);
return 0;
}
switch分级的用法
#include<stdio.h>
int main()
{
int sc,i;
printf("please input you score:");
scanf("%d",&sc);
i=sc/10;
printf("your score is:");
switch(i)
{
case 1:
case 2:
case 3:
case 4:
case 5:printf("E");break; //意味着从10-50分的分数评级都是E
case 6:printf("D");break;
case 7:printf("C");break;
case 8:printf("B");break;
case 9:
case 10:printf("A");break;
}
return 0;
}
一维数组的使用
#include<stdio.h>
int main()
{
int a[101] ; //a表示数组的名字,5表示数组的个数并且这五个元素用a[0],a[1],a[2]...a[5]表示
int i,n;
for(i=0;i<=100;i++)
{
a[i]=i;
printf("%d\n",a[i]) ;
}
/*for(n=0;n<=19;n++)
{
printf("%d\n",a[n]) ;
}*/
//为了解决大量储存元素的问题
return 0;
}
/*
23.9.20 16点31分
*/
#include<stdio.h>
int main()
{ int i;
int a[5]={0,1,2,3,4};//连续分配存储空间,所有的数据元素的类型相同,所有元素所占有的字节相同
int b[5];
a[4] = 3; ///a[5]={0,1,2,3,4};会报错 a[5]是第6个元素个
printf("%d\n",a[4]);
for(i=0;i<=4;i++)
{
b[i] = a[i]; //将a数组的值赋值给数组b
printf("b[%d]=%d\n",i,b[i]);
}
return 0;
}
/*
在Dev-c++ 5.11中的运行结果为:
*/