循环结构

01 当型循环while

格式:

  while(表达式)

  语句;

*先计算while后面表达式的值,如果岂值为真,则执行循环体

*执行完循环体后,再次执行计算while后的表达式,其值还为真则继续执行循环体,其值为假,则退出循环。

*一开始表达式为假,则一次循环也不执行

*循环体有多个语句,用{}括起来

*循环体中应有使循环体结束的语句,避免死循环

*循环初始值,累加常设置为0,累乘常设置为1

// 输入若干字符,如果是大写字母,则转换为小写,如果不是则不转换,输入0程序结束

#include <stdio.h>
int main()
{
    char ch;
    while ((ch=getchar())!=0)
    {
        ch = ((ch>='A'&&ch<='Z')?(ch+32):ch);
        printf("%c",ch);
    }
    
    
  
}

 

02 do-while

格式:

do

{

   语句;

 }while(表达式)

*执行do后面的循环体语句,然后再计算表达式,如果表达式为真,则继续执行循环体,如果表达式为假,则退出循环。

*while后面必须加;

 

// 计算:1+1/2+1/4+....+1/50

#include <stdio.h>
int main()
{
    int i=2;
    float sum=1;
    while (i<=50)
    {
        sum = sum+1.0/i;
        i+=2;
    }
    
    printf("sum=%f\n",sum);
    
    
    return 0;
}

 

03 for循环

for(表达式1;表达式2;表达式3)

   循环体;

*先计算表达式1,再计算表达式2,如果其值为真,则执行循环体,再执行表达式3,然后再继续循环。其值为假,则退出循环。

 

四 break语句和continue语句

01           break语句

格式:break;

*终止对switch语句或循环语句的执行,而转移到其后的语句处执行。

02 continue语句

   格式:continue;

*continue的作用是结束本次循环,即跳过本次循环中余下尚未执行的语句,接着进行下一次循环的判定。

*与break语句不同,执行continue语句并没有使整个循环终止。

// 求正整数n的阶乘n!,其中n由用户输入

#include <stdio.h>
int main()
{
    float fact;
    
    int n,i;
    
    printf("请输入整数:\n");
    
    scanf("%d",&n);
    
    for (i=1,fact=1.0; i<=n; i++)
    {
        fact = fact*i;
    }
    
    printf("fact=%f\n",fact);
    
    
    return 0;
}

 

五 指针程序设计

01 指针变量的含义:指针变量就是一类存取其他变量或函数的地址的变量。

02           指针变量的定义:

 基类型 *指针变量名【=初始值】

03           指针变量的赋值:

*通过地址运算符&赋值,可以把一个变量的地址赋给指针变量。

如:float f,*p;

p=&f;

*定义指针变量的同时赋值

  如:float f,*p=&f;

*通过其他指针赋值

如:int i,*p1=&i,*p2;

p2=p1;

注意:两个指针类型所指的数据类型必须相等

 

// 输出九九乘法口诀
#include <stdio.h>
int main()
{
    int i,j;
    for (i=1; i<=9; i++)
    {
        for (j=1; j<=i; j++)
        {
            printf("%d*%d=%-3d",j,i,i*j);
           
        }
         printf("\n");
    }
    
    
    
    
    return 0;
}

 

04           指针运算符

   指针运算符*是单目运算符,可以用来存取所指向的存储单元中得数据。

如:int x,*p;

   p=&x;

说明指针p指向x,x是p指向的对象,可以用*p来引用x。

// 从键盘上连续输入字符,并统计其中大写字母的个数,直到输入“换行”字符时结束


#include <stdio.h>
int main()
{
    char ch ;
    int sum = 0;
    while (1)
    {
        ch = getchar();
        
        if (ch=='\n')
        {
            break;
        }
        if (ch>='A'&&ch<='Z')
        {
            sum++;
        }
       
    }
    
     printf("%d\n",sum);    
    return 0;
}
// 从键盘输入30个字符,统计其中数字字符的个数

#include <stdio.h>
int main()
{
    char ch;
    int i,sum=0;
    for (i=1; i<=30; i++)
    {
        ch =getchar();
        if (ch<'0'||ch>'9')
        {
            continue;
            
        }
        sum++;
        
    }
    
    printf("%d\n",sum);    
    
    
    return 0;
}
// 由键盘输入一个正整数,求出其最高位数字

#include <stdio.h>
int main()
{
    int i,*P;
    P=&i;
    printf("请输入一个正整数:\n");
    scanf("%d",&i);
    while (*P>=10)
    {
        *P= *P/10;
    }
    
    printf("最高位数字是:%d\n",*P);
    
    return 0;
}