程序设计基本三大结构
目标:
输入输出格式化
顺序结构、选择结构、循环结构
break和continue
goto结构
常用的输出函数
多种类型数据输出函数printf();使用格式:printf(格式控制,输出列表)
%c:输出单个字符(linux C:整数%256-》ASCII);
%d:输出十进制整数;
%o:输出八进制整数;
%x:输出十六进制整数;
%u:输出无符号整数;
%s:输出字符串;
%f:输出浮点数;
%e:输出指数形式浮点数;
%g:自动选择浮点数格式;
位数限制:%.2f;
前导0、0x:0%d、0x%d;
左对齐:%-3d;
常用的输入函数:
多种类型数据输入函数scanf();格式为:scanf(格式控制,地址列表);在scanf()的格式控制字符串里不安排任何分隔符,只能使用空格、tab键、回车键(Enter)作为数据输入的分隔符;还可以使用方括号([])来指定输入字符的范围。
printf函数为用户提供输入信息:
#include<stdio.h>
main()
{
int a,b;
LOOP:printf("请输入数字:a(int),b(int):\n");
scanf("%d%d",&a,&b);
printf("a=%d,b=%d\n",a,b);
goto LOOP;
}
示例如下:

getchar()表示单个字符;
三大基本结构
顺序结构:按照语句出现的先后顺序依次执行;
选择结构:根据条件判断是否执行相关语句;
循环结构:当条件成立时重复执行某些语句;
选择结构:
if语句: if-else语句:

switch语句:

例子:输入一个人的成绩,判断其成绩等级(A,B,C,D,E);
#include<stdio.h>
main(){
float score;
int k;
scanf("%f",&score);
k=(int)(score/10);
switch(k){
case 10:
case 9:printf("你的成绩等级为:A\n"); break;
case 8:printf("你的成绩等级为:B\n");break;
case 7:printf("你的成绩等级为:C\n");break;
case 6:printf("你的成绩等级为:D\n");break;
default:printf("你的成绩等级为:E\n");
}
}
例子:计算器程序。用户输入运算符和四则运算符,输出计算结果。
#include<stdio.h>
main(){
float a,b;
char c;
LOOP:printf("请输入计算数字:a+(-,*,/)b\n");
scanf("%f%c%f",&a,&c,&b);
switch(c){
case '+':printf("%f\n",a+b);break;
case '-':printf("%f\n",a-b);break;
case '*':printf("%f\n",a*b);break;
case '/':printf("%f\n",a/b);break;
default:printf("输入的格式不对\n");
goto LOOP;
}
}
循环结构
循环四要素:
起点——初始值 做什么事——循环体 终点——结束值 起点到终点的变化——步进控制值
循环的语句:
while语句: 先执行,后判断 ;表达式:while(表达式)循环体语句
do-while语句:先执行,后判断 ;表达式:do 循环体 while(表达式);
for语句: 先执行,后判断 ;表达式:for(表达式1;表达式2;表达式3) 循环体语句;
goto语句:是一种无条件的转移语句,可以控制程序流程转向到指定名称标号的地方。语句格式为:
goto语句标号;
.........
标号名:语句;
其中,goto为保留字。
例如一下几个图片就是goto的实例:


break和continue
continue只能在循环中使用;continue可以跳过循环体中语句执行下一条语句。break一个循环体可以包含多个break;break与switch使用时break只能影响switch不会影响循环;break还表示结束当前的循环。
循环嵌套:
九九乘法表
#include<stdio.h>
main(){
int i , j;
int num;
for(i=1;i<10;1++){
for(j=1;j<10;j++){
num=i*j;
printf("%d*%d=%-4d",i,j,num);}
printf(“\n”);}
}
