zoukankan      html  css  js  c++  java
  • C语言博客作业--一二维数组

    一、PTA实验作业

    题目1:填充方阵

    1.本题PTA提交列表

    2.设计思路

    定义array[8][8]储存矩阵元素
    for r=1 to 7
       array[r][r]=array[r][8-r]=1;
       for c=1 to 7
          如果c>r&&c<8-r,array[r][c]=2
          如果c<r&&c<8-r,array[r][c]=3
          如果c>r&&c>8-r,array[r][c]=4
          如果c>8-r&&c<r,array[r][c]=5
          输出array[r][c]
       end for
       换行
    end
    

    3.代码截图

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

    • 无出现问题.

    题目2:简易连连看

    1. 本题PTA提交列表

    2.设计思路

    定义(void)output(int  array[][11],int n)用于输出盘面
    for r=1 to n
       for c=1 to n-1
          输出array[r][c]
       end
       输出array[r][n]
       换行
    end
    
    main()
    (int)定义k表示连线次数,chance=3表示可出错三次,x1,x2,y1,y2表示坐标,clear=0表示已清除字数数,array[11][11]储存矩阵元素.
    输入n
    for r=1 to 2n
       for c=1 to 2n
          输入array[r][c].
          吸收多余字符  end  end
    
    输入k
    for i=1 to k&&chance!=0
      输入坐标x1,y1,x2,y2
      如果array[x1][y1]==array[x2][y2]&&array[x1][y1]!='*'&&!(x1==x2&&y1==y2)
           array[x1][y1]=array[x2][y2]='*'
           clear+=2
           如果 clear==4n²
               输出Congratulations!
               结束进程
           否则:output(array,2*n);  continue;   
      end if
      否则
          chance--
          输出"Uh-oh
    "
          如果chance==0,输出"Game Over".
    end for
    

    3.代码截图

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

    • 一开始没考虑已被消除的字母之间的连线,而且以为k可以多次输入.补齐条件后解决问题.

    题目3:出生年

    1. 本题PTA提交列表

    2.设计思路

    int diff(int a[],int year):
    定义count=1表示有几个不同数,i.
    for(i=3 ; year ; year/=10) a[i--]=year%10;
    for i=1 to 3
       定义flag=1标识该数是否为不同数.
       for i=0 to i-1
          如果a[u]==a[i] flag=0
       end for
       如果flag==1 count++
    end
    返回count的值
    
    main():
    (int)定义birth表示出生年,year表示目标年,n表示不同数数量a[4]={0,0,0,0}储存年份中各位数的数值.
    
    输入birth和n.
    year=birth
    loop
       ++year
    until count==n
    
    输出year-birth和year.
    

    3.代码截图

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

    • 无问题

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

    三、同学代码结对互评

    林怡鹏的代码
    
    int main(){
    	int n,i,j;
    	scanf("%d",&n);
    	int a[n],b[n],c[n];
    	for(i=0;i<n;i++){
    		scanf("%d",&a[i]);
    	}
    	for(i=0;i<n;i++) b[i]=100;
    	for(i=0;i<n;i++) c[i]=0;
    	for(i=0;i<n;i++) {
    		printf("%d ",a[i]);
    		for(j=0;j<=i;j++){
    			if(a[i]<=b[j]){
    				b[j]-=a[i];
    				printf("%d
    ",j+1);
    				c[i]=j+1;
    				break;
    			}
    		}
    	}
    	int max=c[0];
    	for(i=1;i<n;i++){
    		if(c[i]>max)
    		max=c[i];
    	}                                
    	printf("%d",max);        
    	return 0;                    
    }
    
    我的代码
    
    #include<stdio.h>
    int main()
    {
       int n,weight,index,max=0,box[1001];
       scanf("%d",&n);
       for(int i=1;i<=n;i++){
       	box[i]=100; //初始容量为100 
            scanf("%d",&weight);
            for(index=1;;++index){
                if(box[index]>=weight ){
                    box[index]-=weight;
                    if(index>max) max=index;
                    printf("%d %d
    ",weight,index);
                    break;
                }            
            }
       }
       printf("%d",max);                
       return 0;                          
    }
    
    • 林怡鹏的代码用数组a[]记录每次装箱的重量,b[]表示箱子剩余容量,c[]记录每次装箱所用的箱子的序号,这样可以分开处理各个要求,便于求解.
    • 我的代码将箱子大小的初始,装箱及求箱子最大序号放在一起,比较简洁.
    • 我更喜欢我的代码

    四、本周学习总结

    1.你学会了什么?

    1.1 C中如何存储字符串?

    利用数组储存字符串

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

    • 结束符为‘’
    • 可以用结束标志判断什么时候停止输出。

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

    • 1.用for循环将字符一个一个存入数组。
    • 2.用gets()直接输入以回车作为结束标识的字符串。
    • 3.用scanf("%s“,数组名)输入以空格,回车,制表符为结束标识的字符串。

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

    定义num[66],sum=0储存整数大小,i=0.
    gets(num)
    loop
       sum=sum*10+num[i++]-'0'
    until num[i]==''.
    

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

    • 2进制转10进制只需将1.4中sum=sum10+num[i++]-'0'改为sum=sum2+num[i++]-'0'
    • 16进制转10进制,将1.4中的循环体改为:
    如果num[i] >= '0'&&num[i] <= '9'   sum=sum*16 + num[i++]-'0'
    如果num[i] >= 'a'&&num[i] <= 'z'   sum=sum*16 + num[i++]-'a'+10   
    如果num[i] >= 'A'&&num[i] <= 'Z'   sum=sum*16 + num[i++]-'A'+10
    

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

    • 感觉还是要多打开思路

    3.期中考试小结

    3.1 你认为为什么没考好?

    • 没复习
    • 基础知识不牢固,对拓展知识的了解不足.
    • 手写代码速度慢.

    3.2 罗列错题。

    选择题:1.10.17.19.20.知识了解不充分
    分析程序:第二题对了但没分,第三题不知道abs()函数是整型求绝对值函数.而且没注意要给出分析.
    程序填空:最后一空用的pow函数
    编程题手写慢,忘了随机数的产生以及空间分配不合理

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

    • 多学课外内容提高编程能力,多学习其他技能.
  • 相关阅读:
    善用不同语言描述问题
    评黑书《算法艺术与信息学竞赛》
    代码设计的几个基础技巧
    结构和类
    看很多算法书,有个体会就是:算法关我屁事
    看好win8应用商场
    12306 火车订票网站的改进方案(专家讲解)
    有限责任公司章程
    该如何抽象
    财务软件的设计
  • 原文地址:https://www.cnblogs.com/wu98/p/7957810.html
Copyright © 2011-2022 走看看