zoukankan      html  css  js  c++  java
  • 第三次博客作业

    PTA分数


    本章学习总结

    for循环语法

    for 循环语句的一般形式为:

    for (表达式1; 表达式2; 表达式3)
    {
            循环体语句;
    }
    
    1. for语句中,用两个分号分隔三个表达式,但for的后面没有分号,因为for与其后面的循环体语句合起来作为一条完整的语句。
    2. 在for语句的执行过程中,表达式2,循环体语句和表达式3将重复执行,而表达式1只有进入循环前执行一次。

    while、do while循环语法

    while 循环执行顺序的格式是:

    while (表达式)
    {
           循环体 语句;
    }
    
    1. 当表达式的值为“真”时,循环执行,直到表达式的值为“假”,循环中止并继续执行while的下一条语句。
    2. while语句中的表达式可以是任意合法的表达式,循环语句只能是一条语句。

    do while循环语法

    do-while语句的一般形式为:

        do
    {
            循环体语句
    }
        while(表达式);
    
    1. 它先执行循环体,后判断循环条件,所以无论循环条件的值如何,至少会执行一次循环体。
    2. 第一次进入循环时,首先执行循环体语句,然后再检查循环控制条件,即计算表达式,若值为“真”,继续循环,直到表达式的值为“假”,循环结束,执行do—while的下一条语句。

    break语句

    1. break语句强制控制循环结束,一旦执行了break语句,循环提前结束,不再执行循环体中位于其后的其他语句。
    2. break语句应该和if语句配合使用,循环提前结束,不在执行循环体中位于其后的其他语句;否则,若break无条件执行,意味着永远不会执行循环体中break后面的其他语句。

    continue语句

    1. continue语句的作用是跳过循环体中continue后面的语句,继续下一次循环,一般也需要与if语句配合使用。
    2. continue循环语句和break语句的区别在于,break结束循环,而continue只是跳过后面语句继续循环。break语句除了可以终止循环外,还用于switch语句,而continue只能用于循环。

    循环嵌套

    嵌套类型

    在C语言中,if-else、while、do-while、for 都可以相互嵌套。所谓嵌套(Nest),就是一条语句里面还有另一条语句,例如 for 里面还有 for,while 里面还有 while,或者 for 里面有 while,while 里面有 if-else,这都是允许的。

    嵌套错误

    1. 在c中可以嵌套调用函数,但不可以嵌套定义函数。
    2. 出现标识符未定义,重定义等错误。

    学习体会·

    1. 代码的难度逐渐增加,越来越考验自己的思维逻辑能力,而且题目难度增大。
    2. 感觉自己在c语言学习方面仍有欠缺,很多时候看到一个题目,根本不知道该从哪里去做,从哪里开始。
    3. c语言学习应注意一些细节问题,像有时候一个嵌套错误,语法错误,甚至是符号错误,这条代码也无法运行。

    编程技巧总结

    判断是否为素数

    1. 即判断数m能否被2~m-1之间的整数整除,用%来判断。
    2. 设i取值[2,m-1],如果m不能被此区间上的任何一个数整除,即对每个i,m%i都不为0,则m是素数;若m被此区间的某个数整数,则m是素数。

    通过循环打印图形

    运用双重for的循环嵌套

    max初值/min初值

    先读入第一个数,将它赋给min和max,然后读余下的n-1个数,与它们比较

    统计整数位数

    只需要设计一个计时器,因为C语言中除法只留下整数部分,所以可以拿数字/10;数字位数即为循环次数,待n为个位时n/10=0,循环结束。

    交错数列实现方式

    使用sign来实现正负号转变

    大小写字母的转化方式

    小写转大写:ch-'a'+'A'
    大写转小写:ch-'A'+'a'

    字符转数字问题

    让数字字符去减‘0’得到的就是数字的值

    四则运算

    用'+''-''*''/'符号进行运算。

    数字逆序

    每分离一位数,就把这位数变为个位,之前的乘以十升为高位,以此类推

    PTA实验作业

    数列求和问题

    流程图或伪代码介绍思路

    奇数列为正,偶数列为负,用%来判断是否为偶数列。用for循环结构进行运算。

    代码截图

    #include<stdio.h>
    int main()
    {
        int i, n;
        double x = 1;
        double m = 1;
        double sum;
        scanf("%d", &n);
        for (i = 1; i <= n; i++)
        {
            if (i % 2 == 0)
            {
                x = -(i / m);
            }
            else
            {
                x = i / m;
            }
            sum = sum + x;
            m = m + 2;
        }
        printf("%.3lf", sum);
        return 0;
    }
    

    PTA提交列表及说明


    刚开始是没有想到它的求和关系是什么,偶数列和奇数列如何进行符号转换运算。

    图形打印问题

    代码截图

    #include<stdio.h>
    int main()
    {
        char ch;
        int n,i,j,k;
        scanf("%c %d",&ch,&n);
        char arr[10][10];
        for(i=0;i<n;i++)
            for(j=0;j<n;j++)arr[i][j]=' ';//初始化二维数组全为字符0
        arr[0][(n-1)/2]=arr[n-1][(n-1)/2]=ch;//第一排和最后一排特殊处理
        arr[0][(n-1)/2+1]=arr[n-1][(n-1)/2+1]='1';
        arr[(n-1)/2][n]='1';//特殊处理用1来标志每一行的字符后面
        ch++;   //字符由整型存储固ch++可以是b变成c
        for(i=1,j=1;i<=(n-1)/2;i++,j++){//由一行最中间来开始,每往下一行便分别加一减一
            arr[i][(n-1)/2+j]=ch;
            arr[i][(n-1)/2-j]=ch;
    		arr[i][(n-1)/2+j+1]='1';
    		ch++;	
        }//上半部分 
        ch-=2;j-=2;
        for(;i<n;i++,j--){
            arr[i][(n-1)/2+j]=ch;
            arr[i][(n-1)/2-j]=ch;
    		arr[i][(n-1)/2+j+1]='1';
    		ch--;	
        }
        for(i=0;i<n;i++){//输出处理好的二维数组,遇到1便换行否则行末会多多余空格pta会判格式错误
            for(j=0;j<n;j++){
                if(arr[i][j]=='1')break;
                printf("%c",arr[i][j]);
            }printf("
    ");//一行结束后输出换行符。
        }   
    }
    

    PTA提交列表及说明


    在网上进行了查询,也是在室友的帮助下完成的。

    自选一题,介绍printf调试如何检查错误

    单步调试截图

    代码截图

    #include<stdio.h>
    int main()
    {
    	int time;
    	int rabbitdis = 0;
    	int turtledis = 0;
    	int totaltime;
    
    	scanf("%d", &totaltime);
    
    	for (time = 1; time <= totaltime; time++)
    	{
    		rabbitdis = rabbitdis + 9;
    		turtledis = turtledis + 3;
    		if (time % 10 == 0)
    		{
    			if (turtledis < rabbitdis)
    			{
    				if (time + 30 > totaltime)
    				{
    					turtledis = turtledis + 3 * (totaltime - time);
    					break;
    				}
    				else
    				{
    					turtledis = turtledis + 3 * 30;
    					time = time + 30;
    				}
    			}
    		}
    	}
    	if (turtledis > rabbitdis)
    	{
    		printf("@_@ %d", turtledis);
    	}
    	else if (turtledis == rabbitdis)
    	{
    		printf("-_- %d", turtledis);
    	}
    	else
    	{
    		printf("^_^ %d", rabbitdis);
    	}
    	return 0;
    }
    

    PTA提交列表及说明

  • 相关阅读:
    selenium加载配置参数,让chrome浏览器不出现‘Chrome正在受到自动软件的控制’的提示语,以及后台静默模式运行,不占用桌面的方法
    CentOS7使用firewalld打开关闭防火墙与端口
    LVM基本介绍与常用命令
    CentOS 7 网络配置详解
    rm删除破折号开头的文件或目录
    linux时间的查看与修改
    linux 下shell中if的“e,d,f”是什么意思
    selenium之 定位以及切换frame(iframe)
    Unix/Linux 命令速查表
    History(历史)命令用法 15 例
  • 原文地址:https://www.cnblogs.com/yang123789/p/14020001.html
Copyright © 2011-2022 走看看