• C语言博客作业02--循环结构


    这个作业属于哪个班级 C语言--网络2011/2012
    这个作业的地址 C博客作业00--循环结构
    这个作业的目标 学习循环结构内容,包括for循环、while循环、循环嵌套
    姓名 张官德

    0.PTA总分排名


    1.本章学习总结

    1.1 for循环语法

    语法: for(循环变量赋初值; 循环条件; 循环变量增量)

    • 注意语句间用‘;’隔开,不是‘,’。
      并不是所有的条件都要填,例如循环条件不填则代表这个函数进入无限循环。

    简单案例如:

    #include <stdio.h>
    #include<math.h>
    int main()
    {
    	int n;
    	int i;
    	double sum=0;
    	scanf("%d", &n);
    	for (i = 1; i <= n; i++) {
    		sum = sum + pow(-1, i +1 )*i / (2 * i - 1);
    	}
    	printf("%.3f", sum);
    	return 0;
    }
    

    1.2 while、do while循环语法

    语法:

    • while
    while(条件)
    {循环体}
    
    • do while
    do
    {循环体}
    while(条件)
    
    • while先判断条件后进入循环;
      do while先做一次循环后再判断条件,比较适合用于第一个条件特殊情况的例子。

    案例如

    1. 用do-while语句计算从1加到100的值
    #include <stdio.h>
    int main(){
        int i,sum=0;
        i=1;
        do{
            sum=sum+i;
            i++;
        }
        while(i<=100);
        printf("%d
    ",sum);
        return 0;
    }
    

    1.3 跳出循环相关语句breakcontinue

    • break语句在循环体中使用,表示结束循环,常用于在死循环中找到正确的值后退出。
      也用于switch-case语句中,执行case语句后退出。

    • continue语句在循环中使用,表示结束下面循环语句,并且重新开始循环,常用于循环中符合条件的情况下执行(如例题所示)。

    案例一(break

    #include<stdio.h>
    int main(void)
    {
      int n,N,a,i;
      scanf("%d %d",&n,&N);
      for(i=1;;i++)
      {
        scanf("%d",&a);
        if(a<0||i>N)
        {printf("Game Over
    ");
         break;}
        if(a>n) 
        printf("Too big
    ");
        else if(a<n) 
        printf("Too small
    ");
        else if(a==n&&i==1)
        {printf("Bingo!
    ");
         break;}
        else if(a==n&&i>1&&i<=3)
        {printf("Lucky You!
    ");
         break;}
        else if(a==n&&i>3&&i<=N)
        {printf("Good Guess!
    ");
         break;}
      }
    }
    

    案例二(continue)

    • 题目:输出0到100以内偶数的和
    
    #include <stdio.h>
    int main()
    {
         int sum = 0;
         for(int i=0;i<=100;i++)
         {
             if(i % 2 != 0){
                 continue;
             }
             sum += i;
         }
         printf("100位数字中的偶数和为:%d",sum);
     
        return 0;
    }
    

    1.4 嵌套循环

    • 嵌套循环是指在大循环中套用小循环如
    for( ; ;){
    for( ; ;){}
    }
    

    经典案例(硬币换算)

    #include<stdio.h>
    int main() {
    	int money;
    	int i;
    	int j;
    	int k;
    	int count = 0;
    	scanf("%d", &money);
    	for (i = money/5; i >0; i--) {
    		for (j = money / 2; j >0; j--) {
    			for (k =money; k>0 ; k--) {
    				if (i * 5 + j * 2 + k == money) {
    					printf("fen5:%d, fen2:%d, fen1:%d, total:%d
    ", i, j, k, i + j + k);
    					count++;
    				}
    
    			}
    		}
    	}
    	printf("count = %d", count);
    	return 0;
    }
    
    • 像嵌套循环这类题集一定要理清楚思路,大循环是什么?小循环如何嵌套进去?像这个硬币换算,以前不会做,现在觉得简单了,是因为了解到“大循环循环一次,小循环整个运行完”,理解后就豁然开朗了。

    学习体会

    1. 戒骄戒躁,嵌套循环思路不能乱。
    2. 合理利用break与continue,在代码中畅通无阻。
    3. 多次练习才能掌握好(如换硬币题)
    4. 不会就要去求助他人,别在一棵树上吊死。

    2 编程技巧总结

    1. 数列求和问题
    • 数列求和关键点在于规律,凡是数列都会有规律,如本题,应该想到每次循环加上的项应该是前一项的10倍加上a,问题就解决了。
    1. 字符如何转数字、数字逆序问题等
    • 字符转数字只要将字符减去一个字符‘0’即可,同理数字转字符加上一个字符即可(注意字符Ascall码所对应的值)。
    • 数字逆序问题在于在循环中巧妙的运用‘%’和‘/’解析每一个数,然后将第一个数乘10n(n为位数),加上第二个数乘10(n-1),以此类推。
    1. 图形打印问题
    • 此类题目应该与嵌套循环结合,从视频中注意到i j k的关系表达式式关键,思考如何才能用简洁的代码打出。
    1. 四则运算
      注意点:while循环和switch-case复合使用
      如案例:简单计算器
      循环语句为
    while (1) {
    
    		scanf("%d ", &num);
    		switch (c) {
    		case '+':
    			sum += num;
    
    			break;
    		case '-':
    			sum -= num;
    
    			break;
    		case '*':
    			sum *= num;
    
    			break;
    		case '/':
    			if (num == 0) {
    				printf("ERROR");
    				goto out;
    			}
    			sum = sum / num;
    
    			break;
    
    		default:
    			printf("ERROR");
    			goto up;
    			break;
    }
    
    
    • 小心除数为0的特殊情况!

    3.PTA实验作业

    3.1 数列求和问题

    • 伪代码
    int 首项a;总项数n;
    int 储存a的数b;
    int 计数i;
    定义 总和sum=0;
    输入a,n;
    for(i=1;i<=n;i++){
      和前一项相加赋值给sum;
    }
    输出sum;
    


    • 注意点:每次乘10后都要加a,如何实现,可以用b储存。

    3.2图形打印问题

    数据处理:定义计数的i j k;
    i控制行数;j控制空格;k控制*数;

    代码:

    • 此类题目应该与嵌套循环结合,从视频中注意到i j k的关系表达式式关键,思考如何才能用简洁的代码打出(不要像我一样复杂。。)

    3.3 printf 调试检误

    例:



    • 提交列表:
  • 相关阅读:
    zookeeper基础
    4. Zookeeper单机版安装
    3. 服务中间件Dubbo
    2. Maven工程的搭建
    Maven的优点
    应用架构的演进历史 MVC、 RPC、SOA 和 微服务架构
    js 正则表达式验证
    后台正则表达式验证部分部分总结
    Linux下记录登录用户历史操作
    Django使用Ace实现在线编辑器
  • 原文地址:https://www.cnblogs.com/zhangguande/p/14021572.html
Copyright © 2020-2023  润新知