#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=#
// *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;
//
//}
C语言学习笔记(各种C语言综合小题)
于 2022-02-19 21:15:00 首次发布