C语言学习笔记(各种C语言综合小题)

#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <windows.h>
#include <time.h>


/*struct Stu 
{
char name[20];
int age;
char sex[5];
char id[15];
};//无论是结构体还是连结体都要注意这里的分号!!!!!!!
int main()
{
struct Stu s ={"张三",23,"男","20182020131"};
struct Stu *p=&s;
printf("姓名是:%s\n年龄是:%d\n性别是:%s\n  id是:%s\n ",s.name,s.age,s.sex,s.id);//char打印是%s,
//单个字符打印用%c ,int打印是%d,float打印是%f或%lf,指针打印地址是%p
printf("\n姓名是:%s\n年龄是:%d\n性别是:%s\n  id是:%s\n",p->name,p->age,p->sex,p->id);
return 0; 
}*/




//int main()
//{
//	int a=2;//取二进制010
//	int b=4;//取二进制100
//	//int c=a && b;
//	//int c=a | b;
//	int c=a ^ b;
//	//int c=a&b;//”&“这个叫“与”,与门中的与,两个都为1的时候才为1,0与任何数都为0,“|”这个叫“或”,两个都为0的时候才为0,有1取1,“^”这个叫“异或”
//	           //存粹的同为0,异为1;
//	//int c=3<<2;//“左移、右移理论”,001<<1,是全部都往左移一位,也就是变成了0010,所以011<<2变成01100
//	printf("c=%d\n",c);
//	
//	int num=10;
//	int *p=&num;
//	    *p=20; 
//	printf("%d\n",*p);//指针打印时用%p
//	return 0;
//}



//int main()
//{
//	
//	for(;;)
//	{
//		int age;int p=0;
//		scanf("%d",&age);
//		if(age == 0)//如果age=0,就跳过下面的语句,age不等于0,就执行下面的一句话
//		{
//			p=0;
//			printf("%d\n",p);
//		}
//		if(age<18)
//		{   
//			printf("未成年\n");
//		}
//		else if(age>=18 && age<20)
//		{
//			printf("大龄青年\n");
//		}
//		else
//		{
//			printf("ager\n");
//		}
//		return 0;
//	}
//	
//}



//int main()
//{
//	int day=0;
//	int n=1;
//	scanf("%d",&day);
//	switch(day)
//	{
//	case 1:
//	case 2:
//	case 3:
//	case 4:
//	case 5:
//			printf("工作日\n");
//			break;
//	case 6:
//	case 7:
//		printf("休息日\n");
//		break;
//	default:printf("error\n");
//	}
//	return 0;
//}


	/*int day=0;
	switch(day)
	{
	case 1:
		printf("1\n");
	case 2:
		printf("2\n");
		break;
	default:
		printf("error\n");
	}*/

//int main ()
//{
//	int i=1;
//	while(i<10)
//	{
//	//i+=1;
//		i=i+1;
//	if(i==5)
//	continue;
//	
//	printf("%d\n%d\n",i,strlen("i"));//打印结果2 3 4 6 7 8 9 10
//	}}

//int main()
//{
//int ret=0;
//int ch=0;
//char password[20]={0};
//printf("请输入密码:>");
//scanf("%s",&password);
getchar();//这句代码清除缓冲区,因为在输入密码的时候,实际有一个空格,如输入密码:12354646,实际输入的是:12354646\n,用这句
            //getchar()代码将\n在缓冲区调用了,这是第一种清空缓冲区的方法
//while((ch=getchar())!='\n')//用循环加getchar的方式来清理缓存器的方法,判断当ch等于这个\n时,就执行循环操作,不等于就跳出循环
//{;}//这是清理缓冲区的第二种方式
//printf("请输入(Y/N):>");
//ret=getchar();//
//if(ret == 'Y')//用双等号判断相等,单等号幅值
//{
//printf("确认成功\n");
//}else
//{
//printf("确认失败\n");
//}
//if (strcmp(password,"123456")==0)
//{
//	printf("密码正确\n");
//}else
//{
//	printf("密码错误\n");
//}
//}

 /*  return 0;
}*/


//int main()
//{
//	int i=0;
//	for(;i=0;i++)//i=0,为赋值语句,不进入循环,则循环0次,若改为i==0;则为判断语句,执行一次循环,结果为1
//		printf("1");
//	return 0;
//} 



//计算n的阶乘:n=n*(n-1)*(n-2)*......*1
//int main ()
//{
//	int a=0;
//	//int sum=0;
//	long long sum=0;
//	for(;;)
//	{
//	printf("请输入一个数:");
//	scanf("%d",&a);
//	for(sum=1;a>0;a--)
//	{
//	  sum=sum*a;
//	}
//	printf("n的阶乘为:%d\n",sum);
//	}
//return 0;
//}


//计算1!+2!+.......+10!
//int factorial(int a)
//{
//	int b=0;
//	for(b=1;a>0;a--)
//	{b=b*a;}
//	return b;//必须返回一个b,因为这个函数的结果是要这个b,没有这个b,将会默认这个函数的返回值为0,则结果不成立
//}
//
//int main ()
//{
//	int number=0;int sum=0;
//	printf("请输入一个数字:");
//	scanf("%d",&number);
//	for(sum=0;number>0;number--)
//	{
//	sum=factorial(number)+sum;
//	}
//	printf("结果为:%d\n",sum);
//return 0;
//}




//在一个有序数组查找具体的某个数字(顺序查找方法)
//int main()
//{
//	int arr[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};
//	int k=0; int i=0; int sz=0;
//	printf("请输入一个数:");
//	scanf("%d",&k);
//	sz=sizeof(arr)/sizeof(arr[0]);
//	for(i=1;i<=sz;i++)//因为sz=20,所以这里不能用i<sz,并且这里的i要从1开始,不能从0开始
//	{
//	if(k == i)
//	{
//		printf("找到了这个数,这个数下标是:arr[%d]",i-1);
//		printf(",这个数是:%d\n",i);
//		break;
//	}
//	}
//	/*else
//	{continue;}
//	}*/
//	if(i > sz)
//	{printf("没找到\n");}
//return 0;
//}



//在一个有序数组查找具体的某个数字(拆半查找方法或者二分查找方法)
//int main()
//{
//	//int arr[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};//这种看数字整形,逗号不算内存,int为80个字节,char为20个字节
//	
//	
//	char  arr[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};
//	//int a=0;
	a=sizeof(arr);
	//int b=a++;
	//printf("%d",b);
	//getchar();


	//int i=0;
	//int b=0;
	//int c=0;
	for(i=0;i=0;i++)//不执行循环,
	for(i=0;i==0;i++)//执行1次循环
	//for(i=0;i<2;i++)
	//{
	//	c=b++;//c输出为0,1;++b输出为1,2;但单独的++b,或者b++的都是加1的效果
	//	printf("%d\n",c);}


	/*int left =0; int right =0; int mid =0;int a=0;
	printf("请输入一个数:");
   scanf("%d",&a);
   right=sizeof(arr)/sizeof(arr[0])-1;
   while(left<= right)
   {
   mid=(left+right)/2;
   if(arr[mid]<a)
   {
       left=mid+1;
   }
   else if(arr[mid]>a) 
   {
	   right=mid-1;
   }
   else
   {
	   printf("这个数找到了,下标是:%d\n",mid);
	   break;
   }
   }
   if(left>right)
	   printf("找不到这个数\n");
return 0;
}*/


比较三个数的大小
//int main ()
//{
//	int a=0;int b=0;int c=0;
//	printf("请输入三个数:");
//	scanf("%d%d%d",&a,&b,&c);
//	if(a<b)
//	{
//	int temp=a;
//	a=b;
//	b=temp;
//	}
//	if(a<c)
//	{
//	int temp=a;
//	a=c;
//	c=temp;
//	}
//	if(b<c)
//	{
//	int temp=b;
//	b=c;
//	c=temp;
//	}
//	printf("三个数的大小为:%d %d %d\n",a,b,c);
//return 0;
//}


//求最大公约数,辗转相除法,m%n=0,则n就是最大公约数,m%n !=0时,则将m=n,n=他们的余数,在进入循环
//int main()
//{
//	int m=0;int n=0;int r=0; 
//	printf("请输入两个数:");
//	scanf("%d%d",&m,&n);
//	while(r=m%n)
//	{
//	m=n;
//	n=r;
//	}
//	printf("最大公约数为:%d\n",n);
//return 0;
//}


//判断一个数是不是素数;1.只能被自身和1整除;
//int main()
//{
//    int m=0;int n=0;
//	printf("请输入一个数:");
//	scanf("%d",&m);
//	for(n=2;n<m;n++)
//	{
//	if(m%n == 0)
//	{
//	printf("这个数不是素数。\n");
//	break;
//	}
//	}
//	if(n==m)
//		printf("这个数是素数。\n");
//	return 0;
//}

//判断素数的第二种方法:如果i是素数,则i=a*b,其a,b至少有一个数小于sqrt(i),开平方的数
//int main()
//{
//    int m=0;int n=0;int r=0;
//	printf("请输入一个数:");
//	scanf("%d",&m);
//	r=sqrt((float)m);//因为sqrt()中应该使用double型或float型,所以需要在用int型的时候,对m进行强制类型转换,用(float)m进行类型转换,用sqrt开平方要
//                     //头文件#include <math.h>
//	for(n=2; n<=r;n++)
//	{
//	if(m%n == 0)
//	{
//	printf("这个数不是素数。\n");
//	break;
//	}
//	}
//	if(n>r)
//		printf("这个数是素数。\n");
//	return 0;
//}



//判断100到200之间的素数,因为偶数不可能是素数,所以m=101,m=m+2,所以100到200之间最大数为199
//int main()
//{
//int m=0;int n=0;int count=0;int r=0;
// //r=sqrt((float)m);
//for(m=0;m<=200;m++)
//{
// for(n=2;n<=sqrt((float)m);n++)
//{
//	if(m%n ==0)
//	{
//		break;
//	}
//}
// if(n>sqrt((float)m))
// {
//    printf("%d  ",m);
//	Sleep(200);//暂停0.2秒,要加头文件#include <windows.h>
//	count++;
// }
//    if(m ==199)
//		printf("%d\n",m);
//}
//printf("100到200之间的素数个数为:%d\n",count);
//Sleep(10000);//暂停10s后,清除
//system("cls");//要加头文件#include <stdlib.h>,执行系统指令的一个函数“cls”为清楚命令
//return 0;
//}
//




//求1到10里的最大值
//int main()
//{
//	int arr[]={-1,-2,-3,-4,-5,6,-7,-8,-9,-10};
//	int max=arr[0];//这里要从arr[0]开始比,这样不论其他什么数都能比
//	int sz=0;int i=0;
//	sz=sizeof(arr)/sizeof(arr[0]);
//	for(i=0;i<sz;i++)//这里要i=1,会少一步循环
//	{
//	if(arr[i]>max)
//		max=arr[i];
//	}
//	printf("max=%d\n",max);
//return 0;
//}

//int main()
//{
//	int arr[]={0,2,3,4,5,6,7,8,9,1,0};
//	int i=0;int a=0;
//	for(i=0;i<12;i++)
//	{
//		scanf("%d",&a);
//		arr[i]=a;
//		printf("%d\n",arr[i]);
//	}
//}


//打印9*9乘法表
int main()
{
	int a=0;int b=0;
	for(a=1;a<=9;a++)
	{
	for(b=1;b<=a;b++)
	{
	printf("%d*%d=%2d ",b,a,a*b);//因为会有两位数,所以这里可以是2d,三位数3d,四位数4d
	}
	printf("\n");
	}
return 0;
}


猜数字游戏
//#include <stdio.h>
//#include <stdlib.h>
//#include <time.h>
//
//int input =1;
//void menu()
//{
//	printf("***************************************\n");
//	printf("************** 1.play *****************\n");
//	printf("************** 0.play *****************\n");
//}
//void game()
//{
//	int ret=0;int input1=0;
//	char just[100]="";//这里的数组空间要设的大一点,不能让他自动,因为第一个输入ok时,会自动给数组空间2字节,但当输入end时,就有三个字节,导致空间被破环,
//	                  //会报Run-Time Check Failure #2 - Stack around the variable ‘just’ was corrupted.(错误原因是:栈被破坏,缓存区溢出)
//	ret=rand()%100+1;
//	//printf("随机数为:%d 。\n",ret);
//	printf("成功进入游戏,请等待......\n");
//	//for(;input1 || input1==0;)//用||(或)符号,当输入0时也能行,不会退出程序
//	for(;;)
//	{
//	Sleep(1000);
//	printf("是否继续游戏,是请输入“ok”,否则请输入“end”,请输入:");
//	scanf("%s",&just);
//	if(strcmp(just,"ok") == 0)
//	{
//	printf("请输入:");
//	scanf("%d",&input1);
//	if(input1>ret)
//	 { 
//		 printf("猜大了,请重新猜。\n");
//	 }
//	if(input1<ret)
//	 {
//		 printf("猜小了,请重新猜。\n");
//	 }
//	if(input1 == ret)
//	 {
//		 printf("恭喜猜对了!!!\n");
//		 break;
//	 }
//	}
//	if(strcmp(just,"end") == 0)
//	 {
//		 //input=0;
//		 break;
//	 }
//	}
//}
//
//int main()
//{
//	srand((unsigned)time(NULL));//生成随机数之前。就是调用rand之前要先使用srand设置随机起点,并且用时间戳(time),调用头文件#include <time.h>
//	                            //用时间戳设置随机起点,计算机的时间起点为(1970.1.1.0:0:0),这个时间要无符号的,所以用unsigned,NULL为空指针,不希望产生任何的意义
//	for(;input;)
//	{
//	menu();
//	printf("请选择模式,输入1开始游戏,输入0退出游戏,其他数字需要重新输入。\n");
//	printf("请输入数字:");
//	scanf("%d",&input);
//	switch(input)
//	{
//	case 1:
//		game();
//		break;
//	case 0:
//		printf("退出游戏。\n");
//		break;
//	default:
//		printf("选择错误,请重新输入!\n");
//		break;
//	}
//	}
//return 0;
//}


//int main()
//{
//	int input=0;
//	do
//	{
//	menu();
//	printf("请输入:");
//	scanf("%d",&input);
//	switch(input)
//	{
//	case 1:
//		game();
//		break;
//	case 0:
//		printf("退出游戏。\n");
//		break;
//	default:
//		printf("选择错误,请重新输入!\n");
//		break;
//	}
//	}while(input);
//return 0;
//}


//goto 关机语句
//int main()
//{
//	char input[10]={0};
//	system("shutdown -s -t 60");
//again:
//	printf("您的电脑将在一分钟后关机,请输入:停止,取消关机!\n");
//	scanf("%s",&input);
//	if(strcmp(input,"停止")== 0)
//	{
//	system("shutdowm -a");
//	}
//	else
//	{
//	goto again;
//	}
//return 0;
//}



//多个字符向中间打印
//int main()
//{
//	char arr1[]="welcome to my ";
//	char arr2[]="##############";
//	int left=0;int right=0;
//	right=strlen(arr1)-1;
//	//printf("%c\n",arr1[6]);//13个字符
//	printf("%s\n",arr2);
//	for(;left<=right;left++,right--)
//	{
//	Sleep(1000);
//	arr2[left]=arr1[left];
//	arr2[right]=arr1[right];
//	printf("%s\n",arr2);
//	}
//return 0;
//}


//int main()
//{
//char s[20]={"C语言延时输出"};
//	//cout<<strlen(s)<<endl;
//	char chip[3];
//	int i=0;
//	while(s[i]!='\0')
//	{
//		if(s[i]<0)
//		{
//			chip[0]=s[i];
//			chip[1]=s[i+1];
//			i++;
//			chip[2]='\0';
//			printf("%s",chip);
//		}
//		else
//		{
//			printf("%c",s[i]);
//		}
//		i++;
//	}
//	return 0;
//
//}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值