zoukankan      html  css  js  c++  java
  • C语言博客作业--字符数组

    一、PTA实验作业

    题目1:删除字符串中的子串

    1. 本题PTA提交列表

    2. 设计思路

    定义字符型数组s[81]储存主串,sub[81]储存子串.
    输入主串和子串
    do loop
       for(i=0,u=0; s[i] ;)
           如果s[i]==sub[0]
                for v=i+1 to s[v-i]==''  如果 s[v]!=sub[v-i] ,break.
                end for.
                如果sub[v-i]=='',i=v.
           end if
           s[u++]=s[i++];    
       end for
       s[u]=''.
    until u==i.
    输出删除子串后的主串 s .
    

    3.代码截图

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

    • 提交的时候多粘贴了一次代码???

    题目2:Left-pad

    1. 本题PTA提交列表

    2. 设计思路

    3.代码截图

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

    • 一开始数组设置得不够大

    题目3:正整数A+B

    1. 本题PTA提交列表

    2. 设计思路

    定义judge(char n[])函数判断A或B是否满足条件,正确时返回它的值.
    定义变量sum储存n转化为数字后的值,flag=1标记是否符合要求
    for n[i]=n[0] to n[i]==''
       如果n[i]>='0'&&n[i]<='9',  sum=10*sum+n[i]-'0'; 
       否则 flag=0并推出循环
    end for
    如果 sum>1000 flag=0.
    返回sum*flag.
    
    main():
    输入字符串A和B.
    调用juge()函数判断A或B是否满足条件.
    
    如果 judge(A)!=0 ,输出字符串A , 否则输出"?"
    输出" + ".
    
    如果 judge(B)!=0 ,输出字符串B , 否则输出"?"
    输出" = ".
    
    如果 judge(A)!=0&&judge(B)!=0 ,输出  judge(A)+judge(B) 的值,否则输出"?".
    

    3.代码截图

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

    • 无问题

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

    三、同学代码结对互评

    古风排版

    我的代码
    #include<stdio.h>
    int main()
    {
    	int n,m,sum;
    	static char s[1111];
    	scanf("%d ",&n);
    	gets(s);
    	for(sum=0; s[sum]; sum++);
    	m=sum/n+(sum%n>0);
    	for(int r=1;r<=n;r++){ 
    	    //n行m列. 
    		for(int c=m;c;--c){
    			if(s[n*(c-1)+r-1]) printf("%c",s[n*(c-1)+r-1]);
    			else printf(" ");
    		}
    		printf("
    ");
    	}
    	return 0;
    }
    
    炳辉的代码
    #include<stdio.h>
    int main(){
    	int i=0,j,N,k=0,x,flag=0;
    	scanf("%d",&N);
    	getchar();
    	char a[N][1000],b[1001];
    	while((b[i]=getchar())!='
    ') i++;
    	b[i]='';
    	int c;
    	if(i%N==0) c=i/N-1;
    	else c=i/N;
    	int r=0;
    	x=c;
    	while(b[k]!=''){
    		if(r<N) {a[r][c]=b[k];k++;r++;}
            if(r==N) {c--;
    		r=0;
    		}
    	}
    	for(i=r;i<N;i++) a[i][c]=' ';
    	for(i=0;i<N;i++){
    		for(j=0;j<=x;j++) printf("%c",a[i][j]);
    		printf("
    ");
    	}
    	return 0;
    }
    
    
    • 我的代码利用行、列的值与输出的值(即数组下标)之间的关系求解.
    • 他用二维数组将字符串化成矩阵形式,将矩阵元素变为古风排版后输出矩阵.
    • 思路不同,总体上我的代码比较简短.所以我更喜欢我的代码.

    四、本周学习总结

    1.你学会了什么?

    1.1指针变量如何定义?

    • 类型名 *指针名

    1.2 指针加法运算运用在哪种情况,2个指针变量能否相加?

    • 可以用于指针指向数组时,如 int *p=a; 则 *p为a[0] , *(p+1)为a[1].
    • 2个指针变量无法相加

    1.3 指针不赋初值,直接使用,会出现什么情况,请用DEVC验证,并截图展示?

    • 程序将无法运行

    1.4 课堂派上关于分离浮点数的整数部分和小数部分那题,请用DEVC验证实现,并在此贴图展示,同时说明哪句是指针变量做函数形参,函数实参应该怎么表示。指针变量做函数形参有什么用处?

    • int *i 和 float *f 将指针i和指针p]作为形参.
    • 实参用地址表示.
    • 可以直接修改内存改变实参的值.

    1.5 请把课本的冒泡排序的函数改成指针变量做形参格式,并把代码写在底下,注意用markdown语法渲染。

    void bubblde(int *p,int n)
    {
        int i,j,t;
        for(i=1;i<=n;i++) 
    	    for(u=0;u<n-i;u++)
                if(*(p+u)>*(p+u+1)){
                    t=*(p+u);
    				*(p+u)=*(p+u+1);
    				*(p+u+1)=t;
                }
    }
    
    

    1.6 如何定义一个指针变量指向数组,如何用指针变量表示数组元素?

    • 定义指针时指向数组名. 如, int a[10],*p=a.
    • 用 *(p+i) 表示 a[i].

    1.7 如何定义字符指针指向字符串?指针指向字符串后,初始位置在哪里?

    • 如 char *s="cpoint".
    • 初始位置为字符串首元素的地址,如char *s="cpoint" 中 , s 指向 c.

    1.8 利用字符指针操作字符串,如设计函数实现字符串连接,请在此贴图展示代码。说明指针表示字符的方法好处是什么?

    • 可以实现对主函数的数据传递.

    2.本周你不会内容有什么?

    • p+n错写成q+n
    • 刚做的时候不知道a是地址常量

    3.数组上机考试小结

    • 出现了一些细节错误,如十六进制里的字符"F"写成了小写的,还有定义数组时类型名写错了.
  • 相关阅读:
    验证码
    Linux 常用命令
    WTM_LayUI 二级联动
    文件上传漏洞及绕过
    Web For Pentester靶场(xss部分)
    文件上传漏洞fuzz字典生成脚本小工具分享
    两种搭建个人博客方法
    DVWA(xss部分源码分析)
    xss小游戏源码分析
    linux下启动tomcat报错:The BASEDIR environment...
  • 原文地址:https://www.cnblogs.com/wu98/p/8010770.html
Copyright © 2011-2022 走看看