网站设计网站维护dedecms 食品网站模板
news/
2025/9/28 2:04:13/
文章来源:
网站设计网站维护,dedecms 食品网站模板,做手机app,我做服装设计师的 求推荐资源网站目录
一、C语言的语句有哪些 1.1 空语句 1.2 表达式语句 1.3 函数调用语句 1.4 复合语句 1.5 控制语句 二、分支语句#xff08;两种#xff09; 1.1 if语句 1.1.1 普通分支语句(if、if_else) 1.1.2 嵌套if语句 1.1.3 else嵌套if两种写法的比较 1.1.4 else悬空问题 1.1.…目录
一、C语言的语句有哪些 1.1 空语句 1.2 表达式语句 1.3 函数调用语句 1.4 复合语句 1.5 控制语句 二、分支语句两种 1.1 if语句 1.1.1 普通分支语句(if、if_else) 1.1.2 嵌套if语句 1.1.3 else嵌套if两种写法的比较 1.1.4 else悬空问题 1.1.5 if语句的代码可读性 1.2 switch语句不常用
三、循环语句 3.1 while循环 3.2 do_while循环不常用 3.3 for循环 3.4 循环嵌套的练习 四、转向语句 4.1 break 语句 4.2 continue 语句 4.3 goto 语句 4.4 return 语句
五、选择语句_例题
六、循环控制_例题
七、循环打印二维图形_例题 一、C语言的语句有哪些 1. C语言代码由一条条语句构成每条语句的结束标志是封号。 2. C语言的语句有5大类分别是空语句、表达式语句、函数调用语句、复合语句和控制语句。 1.1 空语句 1. 概念封号前面什么都不写的一条语句称为空语句。 2. 用法这里需要一条语句但不希望这条语句其任何作用。 int main()
{;//空语句return 0;
} 1.2 表达式语句 1. 问编程语言中表达式可以由什么构成 答一个操作数、一个操作数和一个运算符、两个操作数和一个操作符多个操作数和多 个操作符例如1i1212*3cab。 2. 概念封号前面是表达式的一条语句称为表达式语句。 int main()
{int i 0;int a 0, b 0, c 0;1;//表达式语句i;//表达式语句1 2;//表达式语句1 2 * 3;//表达式语句c a b;表达式语句return 0;
}
1.3 函数调用语句 1. 概念封号前面是函数调用的一条语句称为函数调用语句。 2. 用法在函数中需要利用具有某功能的函数时使用。 int Add(int a, int b)
{return a b;
}int main()
{int a 1;int b 2;int sum Add(a, b);//自定义函数的函数调用printf(%d\n, sum);//库函数的函数调用return 0;
}
1.4 复合语句 1. 概念被{ }包裹起来的所有语句整体被称为复合语句。 2. 补充一个{ }被称为一个代码块。 //在屏幕上打印用*组成的金字塔行高列宽均为4int main()//复合语句1
{int i 0for (i 0; i 4; i)//复合语句2{int j 0;//空白for (j 0; j 4 - 1 - i; j)//复合语句3{printf( );}//星星for (j 0; j i; j)//复合语句4{printf(*);}//换行printf(\n);}return 0;
} 1.5 控制语句 1. 概念控制语句共9种用于控制程序的执行流程实现顺序、选择和循环结构。 ① 选择语句if_else语句、switch语句 ② 循环语句while语句、do_while语句、for语句 ③ 转向语句break语句、continue语句、goto语句、return语句 二、分支语句两种
1.1 if语句
1.1.1 普通分支语句(if、if_else) 1. 如果表达式成立就执行...否则就执行...。 2. if 和 else 默认只能控制一条语句相同时控制多条语句需使用{ }括起来。 1.1.2 嵌套if语句 1. 如果表达式1成立并且表达式2成立就执行...否则就执行...。 2. 如果表达式1不成立的基础上表达式2成立就执行...否则就执行...。 3. if_else if _else 适用于将主线直接分成几部分的情况。 4. 总之if语句的嵌套其实就是将分支单元划分为更小的分支单元。if中直接嵌套if表示条件的条件eles中嵌套if普通写法表示将上一个条件不满足的部分划分为更小的分支单元而 if_else if _else 写法常用于题目中有明显想将主线划分为多个并列分支单元的意向。 1.1.3 else嵌套if两种写法的比较
//else嵌套if两种写法的比较
//两种写法本质是一个意思只是在于使用者喜欢怎样去使用
//题目判断整型n是正数、负数还是0
//写法一
int main()
{int n 0;scanf(%d, n);//判断if(n 0){printf(%d是正数\n, n);}else//else部分就只剩下0的情况了{//理解成剩余部分再划分的写法if(n 0){printf(%d是负数\n, n);}else{printf(%d是0\n, n);}}return 0;
}
//写法二
int main()
{int n 0;scanf(%d, n);//判断if(n 0){printf(%d是正数\n, n);}else if(n 0)//理解成主线划分的多个并列的分支写法{printf(%d是负数\n, n);}else{printf(%d是0\n, n);}return 0;
}
1.1.4 else悬空问题 1. 问题起源在写C语言题目或读别人的代码时由于代码可读性差导致我们无法准确判断if语句中的else到底是跟着哪个if因而造成了else悬空问题。 2. 解决方法代码从上往下读只要遇到else就根据“else总是与最近的未配对的if配对”原则进行匹配即可。 int main()
{int a 1;int b 2;if ( a 0 )if ( b 2 )printf(123\n);elseprintf(abc\n);return 0;
}
//这段代码在屏幕上什么都不会打印
//是因为该代码中的else与第二个if配对而不是与第一个if配对
1.1.5 if语句的代码可读性
//示例1比较变量a和常数3是否相等相等就在屏幕上打印hehe
int main()
{int a 0;if (a 3)//手误写法最终会造成表达逻辑有误{printf(hehe\n);}
}
//启示
//变量和常数比较是否相等时把常数写在左边变量写在右边
//这样当我们粗心把写成时编译器会报警告而不是继续编译//示例2虽节省空间但可读性差
int main(){int a 0;if (a 0){printf(hehe\n);}else{printf(haha\n);
}
//启示
//不能省的空间不要省无论控制1条还是控制多条语句都写上代码块//示例3可读性好
int main()
{int arr[] { 1,2,3 };int sz sizeof(arr) / sizeof(arr[0]);//定义数字后立即计算数组大小int i 0;for (i 0; i sz; i){if (2 arr[i])//比较常量和变量是否相等时常量在左变量在右{printf(hehe);//不管控制几条语句都采用代码块括起来}}return 0;
}
1.2 switch语句不常用 1. switch语句可实现多分支由于使用条件苛刻所以在特定情况下才主动使用switch语句。 2. 苛刻条件 ①switch后面的表达式必须是整型表达式。 ②case后面的值必须是整型常量表达式字符是特殊的整型类型枚举类型也可以。 3. 需要理解 ①case和default相当于每个分支的入口而break相当于每个分支的出口如果某⼀个 case 语句的后边没有 break 语句代码会继续玩下执⾏直到遇到break语句或者来到switch语句的结尾才会跳出switch语句。 ②当所有case都不满足时才执行default分支default分支可依据具体情况选择写还是不写 ③每个switch语句只能有一个default分支。 ④case和default分支没有顺序要求但dafault通常写在最后面。 ⑤switch语句的最后一个分支可以不写break但最好是写上。 switch(表达式)
{
case 值1语句1;语句2;...break;
case 值2语句1;语句2;...break;
case 值3语句1;语句2;...break;
...
default:语句1;语句2;...break;
}
三、循环语句 3.1 while循环 1. 特点循环条件总是比循环体多执行一次且循环变量需在循环体内部调整。 2. 补充想要一直循环可以将表达式写成恒真的形式例如while(1)。 3. 运行过程先判断while后面的表达式是否为真如果为真就执行一次循环体的内容执行完后程序又会来到while循环的第一行继续判断while后面的表达式是否为真如果为假程序将跳过整个循环体的代码块不会执行循环体的任何内容。 3.2 do_while循环不常用 1. 特点循环体至少执行一次且循环变量需在循环体内部调整。 2. 注意do_while中while后面的封号别忘记写了。 3. 运行过程先执行do后面代码块内的所有内容执行完后来到while所在行判断while后面的表达式是否为真如果为真将继续执行一次循环体内的所有内容如果为假将跳出循环来到while(表达式)的下一行。 3.3 for循环 1. 表达式1循环变量初始化部分 表达式2循环是否继续的条件 表达式3循环变量的调整 2. 特点表达式1至执行一次表达式2总是比循环体多执行一次。 3. 注意①表达式之间是用封号隔开的 ②表达式1、2、3均可以省略但并不建议省略 ③for循环的循环条件所含的循环变量不一定要写在表达式3的位置例如《国王发金币问题》[NOIP2015]金币_牛客题霸_牛客网 (nowcoder.com) 4. 运行过程先执行表达式1再就表达式2的真假判断是否要执行循环体的内容如果表达式2为真那么将执行一次循环体内的内容执行完后程序将回到for循环的第一行执行表达式3执行完后再次执行表达式2判断是否要继续执行循环体的内容如果表达式2为假程序将跳过整个循环体的代码块不会执行循环体的任何内容包括表达式3。 //《国王发金币问题》
解法一
int main()
{int k 0;scanf(%d, k);int day 0;//已计算的天数int sum 0;//发放的金币总和for(int money 1; day k; money){for(int i 0; i money; i){sum money;day;if(day k){break;}}}//输出printf(%d\n, sum);return 0;
}//解法二
int main()
{int k 0;scanf(%d, k);int day 0;//已发金币的天数int money 1;int sum 0;while (money){int i 0;for (i 0; i money; i){sum money;day;if (day k){goto next;}}money;}
next://输出结果printf(%d\n, sum);return 0;
} 3.4 循环嵌套的练习
//【打印100~200之间的素数】
int main()
{int i 0;//循环产⽣100~200的数字for(i101; i200; i 2){int flag 1;//假设每次得到的i是素数int j 0;for(j2; j(int)sqrt((double)i); j){if(i % j 0){flag 0;break;}}//if(flag 1){printf(%d , i);}}return 0;
} 四、转向语句
4.1 break 语句 1. 关键字break的作用只要break在循环体中被执行就会直接跳出当前所在的一层循环。 4.2 continue 语句 1. 关键字continue的作用跳过本次循环体中后面的代码。 4.3 goto 语句 1. C语⾔提供了⼀种⾮常特别的语法就是 goto 语句和跳转标号goto 语句可以实现在同⼀个函数内跳转到设置好的标号处标号一定要顶格写。 2. goto 语句如果使⽤的不当就会导致在函数内部随意乱跳转打乱程序的执⾏流程所以建议能不⽤尽量不去使⽤但是 goto 语句也不是⼀⽆是处在多层循环的代码中如果想快速跳出使⽤ goto 就⾮常的⽅便了。 4.4 return 语句 1. return后边可以是⼀个数值也可以是⼀个表达式如果是表达式则先执⾏表达式再返回表达式的结果。 2. return后边也可以什么都没有直接写 return; 这种写法适合函数返回类型是void的情况。 3. return返回的值和函数返回类型不⼀致系统会⾃动将返回的值隐式转换为函数的返回类型。 4. return语句执⾏后函数就彻底返回后边的代码不再执⾏如下方图片代码。 5. 如果函数中存在if等分⽀的语句则要保证每种情况下都有return否则会出现编译错误。 五、选择语句_例题
[NOIP2008]ISBN号码_牛客题霸_牛客网 (nowcoder.com)
//18.ISBN号码//打印数组
void Print(char arr[], int sz)
{int i 0;//循环变量for (i 0; i sz; i){printf(%c, arr[i]);}
}int main()
{char arr[13] { 0 };int sz sizeof(arr) / sizeof(arr[0]);int sum 0;int j 1;int i 0;//循环变量for (i 0; i sz; i){scanf(%c, arr[i]);if (i ! 1 i ! 5 i ! 11 i ! 12){sum (arr[i] - 48) * (j);}}//if (sum % 11 10){if (arr[sz - 1] X){printf(Right\n);}else{arr[sz - 1] X;Print(arr, sz);}}else{if (arr[sz - 1] sum % 11 48){printf(Right\n);}else{arr[sz - 1] sum % 11 48;Print(arr, sz);}}return 0;
}
六、循环控制_例题
包含数字9的数_牛客题霸_牛客网 (nowcoder.com)
水仙花数_牛客题霸_牛客网 (nowcoder.com)
变种水仙花_牛客题霸_牛客网 (nowcoder.com)
小乐乐与进制转换_牛客题霸_牛客网 (nowcoder.com)
[NOIP2015]金币_牛客题霸_牛客网 (nowcoder.com)
回文对称数_牛客题霸_牛客网 (nowcoder.com)
//5.求1~2019之间含有数字9的数有几个int main()
{int i 0;//循环变量int count 0;//计数器for (i 1; i 2020; i){int i2 i;//替身while (i2){if (i2 % 10 9){count;break;}i2 / 10;}}//输出printf(%d\n, count);return 0;
}
//7.求整数m~n之间的水仙花数#include math.hint main()
{int m 0, n 0;while (~scanf(%d %d, m, n)){int flag 1;//如果这组中没有水仙花数for (; m n; m){int sum 0;int m2 m;while (m2){sum (int)pow(m2 % 10, 3.0);//调整m2 / 10;}if (m sum){flag 0;printf(%d , m);}}换行//printf(\n);//但题目的意思是不用换行//if (flag){printf(no\n);}}return 0;
}
//8.求5位数中的所有变种水仙花数int main()
{int i 0;//循环变量for (i 10000; i 100000; i){int j 0;//被除数int sum 0;for (j 10; j 100000; j * 10){sum (i % j) * (i / j);}if (i sum){printf(%d , i);}换行//printf(\n);//但题目的意思是不用换行}return 0;
}
//10.将一个10进制数转化成6进制数并输出int main()
{int n 0;int arr[20] { 0 };int i 0;scanf(%d, n);while (n){arr[i] n % 6;n / 6;}//for (i--; i 0; i--){printf(%d, arr[i]);//数组元素里面存的数字仍然是10进制的}return 0;
}
//11.国王发金币*int main()
{int k 0;scanf(%d, k);int day 0;//已发金币的天数int money 1;int sum 0;while (money){int i 0;for (i 0; i money; i){sum money;day;if (day k){goto next;}}money;}
next://输出结果printf(%d\n, sum);return 0;
}
//12.回文对称数int main()
{int n 0;int i 0;//循环变量scanf(%d, n);for (i 1; i n; i){int i2 i;int sum 0;while (i2){sum sum * 10 i2 % 10;//调整i2 / 10;}if (i sum){printf(%d\n, i);}}return 0;
}
七、循环打印二维图形_例题
菱形图案_牛客题霸_牛客网 (nowcoder.com)
K形图案_牛客题霸_牛客网 (nowcoder.com)
//8.菱形图案*int main()
{int n 0;while (~scanf(%d, n)){int i 0;//行int j 0;//列//上三角for (i 0; i n; i){//空格for (j 0; j n - i; j){printf( );}//星星for (j 0; j i; j){printf(* );}//换行printf(\n);}//下三角for (i (n 1); i 0; i--){//空格for (j 0; j (n 1) - i; j){printf( );}//星星for (j i; j 0; j--){printf(* );}//换行printf(\n);}}return 0;
}
//9.K形图案*int main()
{int n 0;while (~scanf(%d, n)){int i 0;//行int j 0;//列//上三角for (i n; i 0; i--){for (j i 1; j 0; j--){printf(* );}//换行printf(\n);}//下三角for (i 0; i n 1; i){for (j 0; j i; j){printf(* );}//换行printf(\n);}}return 0;
}
八、图片 本篇已完结。。。。。。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/920175.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!