循环结构程序
循环程序注意问题:
1.变量处置
2.终止条件
3.变量变化
循环控制结束句:
break continue
continue:结束本次循环,继续下一次
break:终止循环
return 0:结束程序
goto语句
例子:
#include<stdio.h>
int main(){
int i=1;
int sum=0;
loop:
if(i<=100){
sum+=i;
i++;
goto loop;
}
printf("1+2+...+%d=%d\n",i,sum);
}
while语句
格式
while(表达式)
{
}
int i=1;
while(i<4)
{
printf("qqqq\n");
i++;
}
死循环:while(1)
例子:
#include<stdio.h>
int main(){
int i=1;
int sum=0;
while (i<=100){
sum+=i;
i++;
}
printf("1+2+...+%d=%d\n",i,sum);
}
水仙花数: C语言求水仙花数-CSDN博客
回文数:
方法1:
#include <stdio.h>
int main() {
int n;
while (1) {
printf("请输入一个五位数(输入0结束程序): ");
scanf("%d", &n);
if (n == 0) {
printf("程序结束。\n");
break;
}
if (n < 10000 || n > 99999) {
printf("输入的数字不是五位数。\n");
} else {
if (n / 10000 == n % 10) {
if (n / 1000 % 10 == n / 10 % 10) {
printf("%d 是回文数。\n", n);
} else {
printf("%d 不是回文数。\n", n);
}
} else {
printf("%d 不是回文数。\n", n);
}
}
}
return 0;
}
方法2:
#include<stdio.h>
int main(){
int num;
while(1){
printf("请输入一个五位数:");
scanf("%d",&num);
if ((num<10000||num>99999)&&num==0){
printf("输入有错误\n");
continue;
}else if(num!=0){
int a=num/10000;
int b=num/1000%10;
int c=num/10%10;
int d=num%10;
if(a==d&&b==c)
printf("%d是回文\n",num);
else
printf("%d不是回文数\n",num);
}
else
return 0;
}
}
do-while语句
例子:
int a=8;
do
{
printf("qqqqq\n");
a++;
} while (a<5);
例子:
#include<stdio.h>
int main(){
int i=1;
int sum=0;
do{
sum+=i;
i++;
}while (i<=100);
printf("1+2+...+%d=%d\n",i,sum);
}
练习:
do-while和while的区别:
while:先判断再执行
do...while:先执行一次程序,再判断
for语句
//格式
for(表达式1;表达式2;表达式3)
{
代码段;
}
//嵌套
for(表达式1;表达式2;表达式3)
{
for(表达式1;表达式2;表达式3)
{}
}
外层循环执行一次,内层循环执行一轮
int i,j;
for(i=1;i<10;i++)
{
for(j=1;j<=i;j++)
{
printf("%d*%d=%2d ",i,j,i*j); //%2d 位宽
}
printf("\n");
}
//输出格式注意:
int a=2,b=22,c=222;
printf("%3d\n",a);
printf("%3d\n",b);
printf("%3d\n",c);
//注释
表达式1:变量赋初值
表达式2:终止条件
表达式3:增值或减值
执行顺序:首先执行表达式1进行赋值,然后判断表达式2是否成立,如果成立就进入循环执行语句块,再执行表达式3进行增值或减值然后继续判断表达式2是否成立,直到表达式2不成立退出循环
//变形:
int i;
for(i=0;i<4;i++)
{
printf("%d ",i);
}
printf("-------%d\n",i);
变形1:
int i=0;
for(;i<4;i++)
{
printf("%d ",i);
}
变形2:
int i=0;
for(;i<4;)
{
printf("%d ",i);
i++;
}
变形3:
int i=1;
for(;;)
{
printf("%d ",i);
i++;
}
注意:变形3该程序无限循环,ctrl c 退出程序执行
练习:计算1到10之间的奇数和
#include<stdio.h>
int main(){
int i,sum=0;
for(i=0;i<=10;i++){
if (!(i%2==0)){
sum+=i;
}
}
printf("sum是%d",sum);
}
练习2:
答案:D
练习3:打印九九乘法表
#include<stdio.h>
int main(){
int i,j;
for(i=1;i<10;i++){
for(j=1;j<=i;j++){
printf("%d*%d=%2d ",i,j,i*j);
//%2d,打印两位数让它对齐
}
printf("\n");
}
return 0;
}
//外层循环执行一次,内层循环执行一轮
数组:
特点:
内存连续
数据类型相同
分类:
一维数组
格式:
存储类型 |
数据类型 |
数组名 |
[元素个数] |
int |
arr |
[5] |
例:int a[5]={2,3,5,8,9};
a[0]------2
a[1]------3
a[2]------5
a[4]------9
访问时,索引从0开始
char a[5]={'q','w','e'};
数组名:
也是数组首地址
字节大小
int a[5];
4*5=20
printf("%d",sizeof(a));
初始化
完全初始化
int a[5]={2,3,5,8,9};
部分初始化
int a[5]={9}; 未初始化部分值为0
int arr[66]={};
未初始化
int b[33]; 值为随机值
b[0]=9;
循环遍历
int a[5]={};
for(int j=0;j<5;j++)
scanf("%d",&a[j]);
for(int i=0;i<5;i++)
{
printf("%d\n",a[i]);
}
练习:
求输入的十个数的平均值,去掉最高分和最低分
#include<stdio.h>
int main(){
float a[10]={};
for(int i=0;i<10;i++){
scanf("%f",&a[i]);
}
float sum=0;
for(int i=0;i<10;i++){
sum+=a[i];
}
printf("总数是%.2f",sum);
float max = a[0];
float min = a[0];
for (int i = 1; i < 10; i++) {
if (a[i] > max) {
max = a[i];
}
if (a[i] < min) {
min = a[i];
}
}
printf("最高分是: %.2f\n", max);
printf("最低分是: %.2f\n", min);
float ave=(sum-max-min)/8;
printf("平均数是%.2f",ave);
}
答案D
课后作业:
int a[15]={1,1};
斐波那契数列:1 1 2 3 5 8 13 21
2.
打印以下图案:
要求行数从终端输入。
输入:5
*
**
***
****
*****
*****
****
***
**
*
3.
答案跳转:day03课后练习-CSDN博客