博客园最新作业
1、思维导图
2、语法认识
(1)if
if(条件) { 语句1; } else{ 语句2; }
若只有单个语句可不加{} 可嵌套使用,else跟最近的if使用,表示条件,如果怎么样就怎么样,否则怎么样。
遇到的问题:else匹配的if有时会弄错。忘记加{}。
解决方法:多写几遍就不会错了。
(2)switch
switch(条件) { case 1: case 2: default: }
跟if的用法差不多但是如果分类数量比较多的话用起来比较方便。
遇到的问题:刚开始不知道后面的()要填什么。
解决方法:多看看例子慢慢理解。
(3)for
for( ; ; ) { 语句1; }
for第一个括号中是初始量,然后第二个括号可以控制循环几次,第三个括号循环最后结束要做的事情,比如初始量++;{}里就是循环过程中要做的事情。
遇到的问题:不知道怎么无限循环。
解决方法:求助大佬。
(4)while
while(条件) { 语句1; }
循环语句,符合条件的时候就进行循环直到条件不符合,在结尾要设置能够结束循环的语句。
(5)do while
do{ 语句1; } while(条件)
跟while和for差不多,就是先做一次指令再看符不符合条件再进行循环。
(6)break continue
for(i=1;i<=9;i++) for(i=1;i<=9;i++) { { 语句1; if(i=3) break; continue; } 语句1; }
break 一般是在循环语句中有个if语句,这样一符合if的条件就break退出循环。continue 是跳过这一圈循环的剩下语句,继续执行下一遍循环。
3、pta分数截图
4、pta代码分析
本题要求计算给定的一系列正整数中奇数的和。
输入格式:
输入在一行中给出一系列正整数,其间以空格分隔。当读到零或负整数时,表示输入结束,该数字不要处理。
输出格式:
在一行中输出正整数序列中奇数的和。
输入样例:
8 7 4 3 70 5 6 101 -1
输出样例:
116
#include<stdio.h> int main() { int a,i,s=0; for(i=1;;i++) { scanf("%d",&a); if(a<=0)break; else if(a%2!=0) { s+=a; } } printf("%d",s); return 0; }
大概思路就是先定义需要的标识符,然后scanf输入,用for循环和if条件控制结束循环或者把符合要求的加起来。
错误原因:s忘记定义为0,不知道怎么无限循环。通过这道题我学会了如何无限循环。
第二题、
本题要求编写程序,找出给定一系列整数中的最小值。
输入格式:
输入在一行中首先给出一个正整数n,之后是n个整数,其间以空格分隔。
输出格式:
在一行中按照“min = 最小值”的格式输出n个整数中的最小值。
输入样例:
4 -2 -123 100 0
输出样例:
min = -123
#include<stdio.h> int main() { int n,i,min,l; scanf("%d %d",&n,&l); min=l; for(i=1;i<n;i++) { scanf("%d",&l); if(min>l) min=l; } printf("min = %d",min); return 0; }
思路就是先定义,然后输入多少个数字和其中的一个数字,然后设那个数字为最小值,进行循环,如果新输入的数字小于最小值,则将新输入的数字赋给最小值。
错误原因:没想到这种方法。通过这道题学会了更多的赋值方法。
第三题、
对于给定的正整数N,求它的位数及其各位数字之和。
输入格式:
输入在一行中给出一个不超过109的正整数N。
输出格式:
在一行中输出N的位数及其各位数字之和,中间用一个空格隔开。
输入样例:
321
输出样例:
3 6
#include<stdio.h> int main() { int n,count=0,s=0; scanf("%d",&n); while(n!=0) { count++; s+=n%10; n=n/10; } printf("%d %d",count,s); return 0;
}
思路是将输入的数字多次/10,最后数字被/到0的时候,累加/的次数,就是几位数,利用%可分出每个位的数,再加起来。
最后总结:我觉得通过做题我学到了更多的方法,而且运用那些语法语句都更加流畅,更加熟悉,我觉得收获很大,刷题还是挺有用处的。通过刷题可以更快更容易地熟悉知识点,而且通过不断思考会留下更深的印象。