C的学习2

回文数算法

/*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中的运行结果为:
  
 
 */ 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值