#include<stdio.h>
//int main(){
// int a=10,b=20;
// int sum=a+b;
// printf("%d\n",sum);
//}
struct Book {
char name[20];//C语言程序设计
short price;//55
};
int main(){
//利用结构体类型-创建一个该类型的结构体变量
struct Book b1={"C语言程序设计",55};
strcpy(b1.name, "C++");
struct Book*pb=&b1;
printf("%s\n",pb->name);
printf("%d\n",pb->price);
//printf("书名:%s\n",b1.name);
//printf("价格:%d元\n",b1.price);
//b1.price=15;
//printf("修改后的价格:%d\n",b1.price);
}
//int main(){
//int a=10;
//int* p=&a;
//*p=20;
//printf("a=%d\n",a);//*-解引用操作符
//double d=3.14;
//double *pd=&d;
//*pd=5.5;
//printf("%lf\n",*pd);
//printf("%d\n",sizeof(pd));
//printf("%d\n",sizeof(char*));
//printf("%d\n",sizeof(short*));
//printf("%d\n",sizeof(int*));
//printf("%d\n",sizeof(double*));
// return 0;
//}
#include<stdio.h>
#include<string.h>
struct Book{
char name[20];
short price;
};
int main(){
struct Book b1={"C语言程序设计",55};
strcpy(b1.name,"C++");
struct Book *pb=&b1;
printf("%s\n",b1.name);
printf("书名:%s\n",pb->name);
b1.price=15;
printf("价格:%d元\n",pb->price);
}
p6 提前准备
定时写博客,总结自己的代码
每天都要学习。跟着鹏哥没毛病
p7 分支和循环
C语言是一门结构化的程序设计语言
1.顺序结构
2.选择结构
3.循环结构
#include<stdio.h>
int main(){
int age=20;
if(age<18)
printf("未成年\n");
else
printf("成年\n");
}
#include<stdio.h>
int main(){
int age=100;
if(age<18)
printf("未成年\n");
else
{
if (age>=18&&age<28)
printf("青年\n");
else if(age>=28&&age<50)
printf("壮年\n");
else if(age>=50&&age<90)
printf("老年\n");
else
printf("暮年\n");
};
}
一对大括号就是一个代码块
我在后面再加一条语句,就会报错。
需要加一组大括号才能控制多条语句。
#include<stdio.h>
int main(){
int a=0;
int b=2;
if(a==1)
if (b==2)
printf("hehe\n");
else
printf("haha\n");
return 0;
}
结果时空的
悬空else是与其就近的未匹配的if匹配。也就是第二个if匹配
输出1-100的数,且是奇数
#include<stdio.h>
int main(){
for (int i=1; i<=100;i+=2 ) {
if (i%2==1)
printf("奇数为%d\n",i);
}
return 0;
}
输出对应的星期
#include<stdio.h>
int main(){
int day=0;
scanf("%d",&day);
switch (day) {
case 1:
printf("星期%d",day);break;
case 2:
printf("星期%d",day);break;
case 3:
printf("星期%d",day);break;
case 4:
printf("星期%d",day);break;
case 5:
printf("星期%d",day);break;
case 6:
printf("星期%d",day);break;
default:
printf("星期日");break;
}
}
星期1-5为工作日
星期6-7为休息日
非法的数据为输入错误
#include <stdio.h>
int main(){
int day=0;
scanf("%d",&day);
switch (day) {
case 1:
case 2:
case 3:
case 4:
case 5:
printf("工作日");break;
case 6:
case 7:
printf("休息日");
break;
default:
printf("输入错误!");
break;
}
}
continue是结束本次循环
break是直接跳出循环
#include<stdio.h>
int main(){
int n=1;
int m=2;
switch (n) {
case 1:m++;
case 2: n++;
case 3:
switch (n) {
case 1:n++;
case 2:m++;n++;break;
}
case 4:m++;
break;
default:
break;
}
printf("m=%d,n=%d\n",m,n);
return 0;
}
#include<stdio.h>
int main(){
int ch=0;
while ((ch=getchar())!=EOF) {
putchar(ch);
}
return 0;
}
输入r得出r
#include<stdio.h>
int main(){
// int ch=0;
// while ((ch=getchar())!=EOF) {
// putchar(ch);
// }
int ret=0;
char password[20]={0};
printf("请输入密码:>");
scanf("%s",password);
//缓冲区还剩余一个\n
//读取一下\n
int ch=0;
while ((ch=getchar())!='\n') {
;
}
printf("请确认(Y/N):>");
ret=getchar();
if(ret=='Y')
{
printf("确认成功");
}else {
printf("放弃确认");
}
return 0;
}
这里面的getchar()只能读取一个字符,而字符最后还有一个'\n'。为了读取掉\n使用一个getchar()
直到没有\n
然后就是识别成功,输入y,最后是确认成功
#include<stdio.h>
int main(){
int ch=0;
while ((ch=getchar())!=EOF) {
if (ch<'0'||ch>'9') {
continue;
putchar(ch);
}
}
return 0;
}
这个程序是检测是否具有0-9数字
#include<stdio.h>
int main(){
int i=0;
for (i=1; i<=10; i++) {
printf("%d",i);
}
return 0;
}
运行结果:
-
#include<stdio.h> int main(){ int i=0; for (i=1; i<=10; i++) { if (i==5) continue; printf("%d",i); } return 0; }
-
#include<stdio.h> int main(){ int i=1; while (i<=10) { if (i==5) continue; printf("%d",i); i++; } return 0; }
1234无限循环
-
#include<stdio.h> int main(){ int i=0; for (i=0; i<10; i++) { if (i=5) { printf("haha\n"); printf("hehe\n"); } } return 0; }
-
无限循环haha,hehe.因为这个代码执行非5,再赋值成为5,输出haha。这样无限循环。
-
#include <stdio.h> int main(){ int arr[10]={1,2,3,4,5,6,7,8,9,10}; int i=0; for (i=0;i<10;i++) { printf("%d",arr[i]); } return 0; }
-
#include<stdio.h> int main(){ int i=0; int j=0; for (; i<10; i++) { for (; j<10; j++) { printf("hehe"); } } return 0; }
-
#include<stdio.h> int main(){ for (int i=0; i<10; i++) { for (int j=0; j<10; j++) { printf("hehe\n"); } } return 0; }
-
以上的代码告诉我们,i,j不能随便省略。
-
#include<stdio.h> int main(){ int x,y; for(x=0,y=0;x<2&&y<5;++x,y++){ printf("hehe\n"); } return 0; }
-
#include <stdio.h> int main(){ int i=0; int k=0; for (i=0, k=0;k=0; i++,k++) k++; return 0; }
-
do while循环
-
#include<stdio.h> int main(){ int i=1; do{ printf("%d",i); i++; }while(i<=10); return 0; }
-
#include<stdio.h>
int main(){
int i=1;
do{
if (i==5)
break;
printf("%d",i);
i++;
}while(i<=10);
return 0;
}
#include<stdio.h>
int main(){
int i=1;
do{
if (i==5)
continue;
printf("%d",i);
i++;
}while(i<=10);
return 0;
}
#include<stdio.h>
int main(){
int i = 0;
int n = 0;
int ret = 1;
scanf("%d",&n);
for (i = 1; i <= n; i++) {
ret=ret*i;
}
printf("ret=%d\n",ret);
return 0;
}
#include<stdio.h>
int main(){
int i=0;
int n=0;
int ret=1;
int sum=0;
for (n=1; n<=3; n++) {
ret =1;
for (i=1; i<=n; i++) {
ret=ret*i;
}
sum=sum+ret;
}
printf("sum=%d\n",sum);
return 0;
}
算一下1!+2!+3!+4!+5!+6!+7!+8!+9!+10!=4037913
#include<stdio.h>
int main(){
int i=0;//1*2*3*4*5
int n=0;
int ret=1;
int sum=0;
for (n=1; n<=10; n++) {
ret=ret*n;//1*1 ret=1 sum=1 ret=1*2 sum=1+2=3 ret=2*3=6 sum=3+6=9
sum=sum+ret;
}
printf("sum=%d\n",sum);
return 0;
}