• C语言博客作业一二维数组


    一、PTA实验作业

    题目1:出生年

    1. 本题PTA提交列表

    2. 设计思路

    int y,n,count,i,a,b,c,d;//a为千位,b为百位,c为十位,d为个位 ,y为出生年,count表示几位数不同
    输入y,n
    for(i=y;i<9999;i++)
    a=i/1000;得出千位
    b=i/100%10;得出百位
    c=i/10%10;得出十位
    d=i%10;得出个位
    if(ab&&ac&&ad) count=1;
    else if(a!=b&&a!=c&&a!=d&&b!=c&&b!=d&&c!=d) count=4;
    else if((a
    b&&ac&&a!=d)||(bc&&bd&&a!=b)||(ab&&ad&&a!=c)||(ac&&ad&&a!=b)) count=2;
    else count=3;
    判断有几个不同的数,count来存放,
    当count
    n时,跳出循环
    并输出i-y和i。

    3.代码截图

    4.本题调试过程碰到问题及PTA提交列表情况说明。

    本题总是说我没补0;可是我明明用了%04d,调试出来也是有前导0,就是不让过。

    题目2:加法口诀表

    1. 本题PTA提交列表

    2. 设计思路

    int repeat,n,i,j,k;//repeat为可运行次数,n为几阶加法
    输入repeat
    for(i=1;i<repeat;i++){
    输入n
    有n+1个阶层;即将n=n+1
    int a[n][n];
    有前导+号,需要先输出printf("%-4c",'+');
    第一行和第一排都是按1到n-1排列;
    即if(i0){for(j=0;j<n-1;j++){
    a[i][j]=j+1;
    if(j
    n-2){//当j=n-2时,为第一排最后一位数,后面不要跟空格
    printf("%d",a[i][j]);
    }
    else
    printf("%-4d",a[i][j]);
    }putchar('\n')换行
    }//第一行结束
    else {
    for(j=0;j<n;j++){
    if(j0){a[i][j]=i;printf("%-4d",a[i][j]);//第一列由1到n-1排列
    else{ f(j<=i){
    if(j
    i){//每一行最后一位数不需要空格
    printf("%d",a[i][0]+a[0][j-1]);
    }
    else{
    printf("%-4d",a[i][0]+a[0][j-1]);
    }
    if(j==i){//由于他只表示一个下三角,当j=i时换行
    putchar('\n');
    }
    }

    3.代码截图

    4.本题调试过程碰到问题及PTA提交列表情况说明。

    本题中一直忘记最后一位数不能跟空格,所以出现了多次的错误。我用#号来代替空格才知道到底哪里错了

    题目3:杨辉三角

    1. 本题PTA提交列表

    2. 设计思路

    int n,i,j;//n为几阶
    输入n ,int a[n][n]
    由杨辉三角的规则可以知道每行第一个数字和最后一个数字均为1,及规定a[0][0]=1;
    for(i=1;i<n;i++){
    	for(j=0;j<=i;j++){
    if(j==0){//每一行第一个数为0
    a[i][j]=1;printf("%4d",a[i][j]);}
    else if(j==i){//每行最后一位数
    	a[i][j]=1;printf("%4d",a[i][j]);}
    else {
    		a[i][j]=a[i-1][j-1]+a[i-1][j];
    		printf("%4d",a[i][j]);}}
    每行完需要换行putchar('\n')
    

    3.代码截图

    4.本题调试过程碰到问题及PTA提交列表情况说明。

    本题较为顺利,在思考后没有出现什么较大的错误。

    二、截图本周题目集的PTA最后排名。

    三、同学代码结对互评

    林艺薇同学


    林艺薇同学的代码,它运用了数组的方式来解决这一题,而我在这一题时看下去,就没想过用数组的方式来做,她的注释很详细,我使用了a,b,c,d的方式,显得有点低俗。
    它使用数组可读性很高,而我的方式胜在于刚好遇到这种题,代码打的比较简便。

    四、本周学习总结

    1.你学会了什么?

    1.1 C中如何存储字符串?

    使用数组的方式来储存,例如a[10]="hello";

    1.2 字符串的结束标志是什么,为什么要结束标志?

    结束的标志是'\0',要是没有结束的话,后面的字符将会出现随机字符

    1.3 字符串输入有哪几种方法?

    ch=getchar(); gets(); scanf("%s",a[n]);

    1.4 数字字符怎么转整数,写个伪代码?

    例如将‘2’转化为2 number='2'-'0';

    1.5 16进制、二进制字符串如何转10进制?写伪代码?

    16进制:
    定义数组a[n],数number,sum=0
    判断a[n]中的数是否合法;
    for(i=0;a[n]!='\0';i++)
    if(a[i]>='0'&&a[i]<='9') sum=sum16+a[i]-'0';
    if(a[i]>='a'&&a[i]<='f') sum=sum16+a[i]-'a'+10;
    if(a[i]>='A'&&a[i]<='F') sum=sum16+a[i]-'A'+10;
    输出sum
    2进制:
    定义num,输入num,定义sum,shu
    while(num!=0){
    shu=num%2;
    sum=sum
    2+shu;
    num/=2;}

    2.本周的内容,你还不会什么?

    PTA 7-6 图书馆 复杂的各种排序插入,感觉有很多的地方都不懂。

    3.期中考试小结

    3.1 你认为为什么没考好?

    基础不扎实,在看完书后,其实记忆并不牢靠,平时的积累不够,还有读程序的能力不行,在读那个打印菱形的题目时,还是看不懂,以后再上课的时候一定要记下重点,并在课后及时复习和锻炼相应的习题。

    3.2 罗列错题。

    选择题:
    第12题 这一题其实错的很不应该,主要是判断 if(a) if(!a) if(a==0) if(a!=0) 其实这三个很容易找出第三个与其他的不同;当初应该是模模糊糊的写了下去。
    填空题:
    第7空:(ch=getchar()) 这一个是输入一个字符,我当时真的是不懂,基础确实很烂,现在理解了他的意思。
    改错题:
    第二题:int n;-->int n=1;忘记要初始化了,这种事典型的错误。
    term = -termxx/(n+1)(n+2);//改为 term = -termxx/((n+1)(n+2)); 分母要看清。
    n++//改为 n = n + 2;
    程序题:
    第二题:忘记用a来分情况,我没有照顾到当a=0,a=0&&b=0时的情况,这真的是一个很大的错误,疏忽不得。

    3.3 下半学期要怎么调整C的学习?

    1.基础的东西要去记忆,很多地方都是从基础上来的。
    2.上课要集中注意力听讲,课后要及时巩固并做一些相关的练习。
    3.要提高学习效率,真的是感觉有时候真的心力憔悴。
    4.锻炼手写代码,这一次考试的程序题做的一塌涂地。

  • 相关阅读:
    ASP.NET(4):多语言的解决方案
    无题
    SIP 计时器的总结(转)
    一个Sip协议栈的实现方案
    通过拦截WCF消息进行身份栈传播
    从WPF控件拖放到Winform控件的注意事项
    一个用C#操作OpenLDAP的例子
    通过定制行为拦截WCF消息
    一个基于Prism的方案的介绍
    MVVM模式下附加属性的使用
  • 原文地址:https://www.cnblogs.com/gongshunde/p/7966488.html
Copyright © 2020-2023  润新知