c语言保姆级笔记四

输入输出

#incldue <stdio.h>

printf("%d", a);

%d 以十进制输出

%x 以16进制输出

%c 输出一个字符

%f 输出一个浮点型变量

%lf 长浮点型

%s 输出一个字符串

%o 以8进制输出

while循环

while(条件)

{

;

}

for 循环

for(i = 0; i < 100; i++)

{

}

do //先执行,然后判断,条件成立,继续执行

{

}while(i < 100);

作业:

1. 水仙花数(3位数, 个位立方和 + 十位立方和 + 百位立方和 = 这个数)

#include <stdio.h>

int main()

{

inti;

for(i= 100; i < 1000; i++) //穷举(一个一个检查,是不是满足)

{

inta, b, c;

a= i / 100; //987 / 100 =9

b= i % 100 / 10; //987 % 100 = 87/ 10 = 8

c= i % 10; //987 % 10 =7

if(i== a * a * a + b * b * b + c * c * c)

{

printf("%d\n",i);

}

}

}

//3 编写一个程序,输出100~199的全部素数。

//素数,除了1和自己,不能被任何数整除的数

#include <stdio.h>

int main()

{

inti, j;

for(i= 100; i < 200; i++) //穷举法

{

intk = 0; //k是一个标志位,k = 1 说明被整除了

for(j= 2; j < i; j++)

{

if(i% j == 0)

{

k= 1; //说明被某整除了, 不是素数

break;

}

}

if(k== 0)

{

printf("%d\n",i);

}

}

}

3 1维数组

如果有一些同类型的数据,又特别多,

有100个学生,输入这些学生的成绩,又求平均值

int a1, a2, a3, a4, a5, a6, a7, a8, a9,a10....a100

可以用数组解决上面的问题

怎么定义一个数组

int a[100]; //a 是数组名 100 是元素个数 int 元素类型

int a[5] = {10, 20, 30, 40, 50}; //定义数组时,直接给元素赋值

1 数组元素怎么赋值(数组元素是从0开始的)

a[0] 第一个元素

a[1] 第二个元素

a[2] 第三个元素

a[3] 第四个元素

a[4] 第五个元素

举例 输出数组所有元素

#include <stdio.h>

int main()

{

inta[5] = {10, 20, 30, 40, 50};

inti;

printf("%d,%d, %d, %d, %d\n", a[0], a[1], a[2], a[3], a[4]);

for(i= 0; i < 5; i++)

{

printf("%d\n",a[i]);

}

}

练习,

1) 有10个学生成绩是

int a[10] = {90, 80, 70, 60, 50, 40, 30,99,98,77};

要求,求出学生总成绩,求出学生平均成绩

#include <stdio.h>

int main()

{

inta[10] = {90, 80, 70, 60, 50, 40, 30,99,98,77};

inti, sum = 0;

for(i= 0; i < 10; i++)

{

sum+= a[i];

}

printf("sumis %d, avg is %d\n", sum, sum / 10);

}

scanf("%d",&a[0]);

2) ///上面的练习,成绩由键盘输入

#include <stdio.h>

int main()

{

inta[10];

inti, sum = 0;

for(i= 0; i < 10; i++)

{

scanf("%d",&a[i]);

sum+= a[i];

}

printf("sumis %d, avg is %d\n", sum, sum / 10);

}

整形数组

int a[5];

字符型数组

char a[5];

浮点型数组

float a[5];

数组占用内存空间大小

int a[5];

sizeof(a) ? 20 //sizeof能求出变量占用的内存空间大小

char a[5];

sizeof(a) ? 5 //每个char是 1字节

float a[5];

sizeof(a) ? 20

#include <stdio.h>

int main()

{

inta[5];

charb[5];

floatc[5];

printf("a%d b %d, c %d\n", sizeof(a), sizeof(b), sizeof(c));

}

数组初始化 (定义数组时,直接付初值)

1 完全初始化,所有的元素,都会赋值

int a[5] = {10, 20, 30, 40, 50};

2 部分初始化(没赋值的元素默认为0)

int a[5] = {10, 20}; //a[0] 10, a[1] 20, a[2] 0, a[3] 0, a[4] 0

3 元素个数不写

int a[] = {10, 20, 30, 40, 50}; //编译器能通过初始化元素个数,算出数组元素个数

4 错: 初始化元素个数不能多于定义时的元素个数

int a[3] = {10, 20, 30, 40, 50};

#include <stdio.h>

int main()

{

inta[5] = {10, 20};

inti;

for(i= 0; i < 5; i++)

{

printf("%d\n",a[i]);

}

}

练习

2) 输出Fibonacci数列前20项, 先正序输出,然后逆序输出。

1 1 2 3 5 8 13 21 34 55 .....

提示: 前两个固定是1

a[i] = a[i - 1] + a[i - 2]

#include <stdio.h>

int main()

{

inta[20] = {1, 1};············································90

inti;

for(i= 2; i < 20; i++)

{

a[i]= a[i - 1] + a[i - 2];

}

for(i= 0; i < 20; i++)

{

printf("%d", a[i]);

}

printf("\n");

for(i= 19; i >= 0; i--)

{

printf("%d", a[i]);

}

printf("\n");

}

冒泡排序

原理:每次两个数进行比较,从数组的前两个元素开始,如果前面的数 > 后面的数,就交换

第一趟会求出一个最大值,并且放在最后面,

然后依此类推,经过最多N-1趟,排好序

a[7] = {85, 12, 35, 71, 92, 45, 25}; //从小到大排序

85 12 35 71 92 45 25

第一轮

12 35 71 85 45 25 92

第二轮

12 35 71 45 25 85

第三轮

12 35 45 25 71

第四轮

12 35 25 45

第五轮

12 25 35

第六轮

12 25

7个数,比较6轮,每轮比较 7 - i次

#include <stdio.h>

int main()

{

inta[7] = {85, 12, 35, 71, 92, 45, 25};

inti, j;

for(i= 0; i < 7 - 1; i++) //因为7个数,比较6轮

{

for(j= 0; j < 7 - i - 1; j++) //每轮比较 6, 5, 4, 3, 2, 1 次

{

if(a[j]> a[j + 1]) //如果前面的大于后面的,就交换

{

intt = a[j];

a[j]= a[j + 1];

a[j+ 1] = t;

}

}

}

for(i= 0; i < 7; i++)

printf("%d\n",a[i]);

}

int a= 5, b = 9;

int t = a;

a = b;

b = t;

练习

1:

输入10个考试分数,

然后计算最高分、最低分。 (不用冒泡排序)

#include <stdio.h>

int main()

{

inta[10], max = 0, min = 100, i; //初始时max 最小, min最大

for(i= 0; i < 10; i++)

{

scanf("%d",&a[i]);

}

for(i= 0; i < 10; i++)

{

if(a[i]> max)

max= a[i];

if(a[i]< min)

min= a[i];

}

printf("maxis %d, min is %d\n", max, min);

}

字符和字符串

'a' 字符

"hello" 字符串 用 " " 括起来

字符串是如何组成的 ?

"hello" -----> 'h' 'e' 'l' 'l' 'o' '\0'

'\0' 又称为 字符串结束符 (它会被放到字符串尾,不可见)

如何存储字符串,如何输出字符串?

存储:

char a[] = "hello";

输出:

方法1 : 用循环 +printf("%c");

#include <stdio.h>

int main()

{

chara[] = "hello";

inti;

for(i= 0; i < 5; i++)

{

printf("%c",a[i]);

}

printf("\n");

方法2: 用printf("%s");

printf("%s\n",a); //a 是数组名,同时也是数组首地址

}

输入:

char a[100]; //可以定义大一些,因为不知道该输入多少

1) scanf("%s", a);

2) gets(a);

例1:

#include <stdio.h>

int main()

{

chara[100];

scanf("%s",a); //碰到空格结束 "hello world"----> 只截取到 "hello"

printf("ais %s\n", a);

}

例2:

#include <stdio.h>

int main()

{

chara[100];

gets(a); //可以接收空格

printf("ais %s\n", a);

}

练习1

//给你字符串数组,chara[] = "hello";

写一个程序,求出字符串长度,"hello" ----> 5 (不算 '\0')

提示: 可以用while 循环 + 判断 '\0' 的方式 ('\0' 设计的目的就是 找到结束)

#include <stdio.h>

int main()

{

inti = 0;

chara[] = "hello";

while(a[i]!= '\0') //a[0]->'h' a[1]->'e' .... a[5]->'\0'

{

i++;

}

printf("lenis %d\n", i);

}

对于数组来说,如果将一个数组赋值给另一个数组

不可以

int a[5] = {10, 20, 30, 40, 50};

int b[5];

b = a; //错,相当于将a数组的首地址给b

只能一个一个赋值

b[0] = a[0];

b[1] = a[1];

....

例:

#include <stdio.h>

int main()

{

inta[5] = {10, 20, 30, 40, 50};

intb[5], i;

for(i= 0; i < 5; i++)

{

b[i]= a[i];

}

for(i= 0; i < 5; i++)

printf("%d\n",b[i]);

}

练习: 输入字符串到a中 , 将字符数组a 赋值给 字符数组b,打印b

char a[100] = { 0 }; //scanf("%s", a); 参照求字符串长度,

char b[100];

#include <stdio.h>

int main()

{

inti = 0;

chara[100] = { 0 }; //{ 0 } 第一个元素是0, 后面的都是默认值 ( 0 )

charb[100]; // '\0' 字符串结束符,同时它是数字0 { 0 }相当于给数组所有元素都赋值 '\0'

scanf("%s",a);

while(a[i]!= '\0')

{

b[i]= a[i];

i++;

}

b[i]= '\0'; //对于字符串来说,必须要有'\0'结束符

printf("bis %s\n", b); //如果字符串没有'\0', printf会一直找 '\0', 不是'\0'就输出

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值