C语言博客作业--数据类型

一、PTA实验作业

题目1:打印菱形图案

1. 本题PTA提交列表

2. 设计思路

  • 第一步:定义变量i(代表每一行),j(代表每一行的不同位置),n;并输入菱形的高度。
  • 第二步:打印菱形的上半部分,i<=(n+1)/2;j<=2n-1;判断菱形之外的位置条件j<(2n-1)/2-2(i-1),输出“空格”;菱形之内的条件j>((2n-1)/2)+2*(i-1)+1,输出“星号”。
  • 第三步:打印菱形的下半部分,i<=(n-1)/2;j<=2*n-1;判断菱形内外的条件同第二步。
  • 第四步:return 0。

3.代码截图

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

  • 本题主要碰到的问题是,输出的图形和pta提示的一样,但是提交后还是答案错误,看了题目的条件后说每个号后面都有一个空格,然后改正了下代码,提交后发现还是错误的,然后在上机课,我问了老师,老师叫我把空格换成#号试试,换了之后发现#号都在号的前面,之后又改了次代码,就正确了。

题目2:判断合法标识符

1. 本题PTA提交列表

2. 设计思路

  • 第一步:函数声明int judge (char ch[80]);,并定义变量char ch[80];,int i,n,j,k;,输入循环次数n。
  • 第二步:进入循环,输入字符串gets(ch);,调用函数 judge (ch[80])。
  • 第三步:进入函数判断ch【0】是否是字母或者下划线ch[0]>='a'&&ch[0]<='z'||ch[0]>='A'&&ch[0]<='Z'||ch[0]'_',判断输入的标识符是否合法!(ch[i]>='a'&&ch[i]<='z'||ch[i]>='A'&&ch[i]<='Z'||ch[i]'_'||ch[i]>='0'&&ch[i]<='9')。
  • 第四步:遍历完字符串就返回1,没有则返回0,返回主函数。

3.代码截图

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

  • 这道题的主要问题是卡在判断除第一个字符之外的字符的条件,想了想打出来了,在devc++上运行后答案是正确的,但是到了pta上答案又错了,想了很久,没办法,只好换成了函数的形式,然后复制到pta上,奇迹的对了!!!

题目3:简单计算器

1. 本题PTA提交列表

2. 设计思路

  • 第一步:定义全局变量int result;,并定义变量char ch;int number,count=0;,scanf("%d%c",&number,&ch);把number的值赋给result。
  • 第二步:进入给出循环判断条件ch!='=',进入循环后判断ch所代表的符号,并算出他的值,case '='😕/等号就退出循环,default:count++;//输入其它符号则错误。
  • 第三步:判断count的值,if(count!=0) printf("ERROR");else printf("%d",result);,结束运行,return 0;。

3.代码截图


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

  • 这道题主要的问题是会忘了分母为0和输入符号错误的条件和会忘了判断输出条件,并没有太大问题。

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

三、本周学习总结(3分)

1.你学会了什么?

1.1 一维数组如何定义、初始化?

  • 一维数组定义的一般形式为:类型名 数组名 [数组长度];-
  • 初始化:类型名 数组名 [数组长度]={初值表};初值表依次放数组的初值;初始化也可针对部分元素;静态数组如果没有初始化,系统会自动赋0。

1.2 一维数组在内存中结构?可画图说明。数组名表示什么?

  • 数组名表示该数组所分配连续内存空间中第一个单元的地址,即首地址。

1.3 为什么用数组?

  • 数组,顾名思义,是相同类型的数组成的一个组,也就是说是把相同类型的一系列数据统一编制到某一个组别中。这样就可以通过数组名+索引号简单快捷的操作大量数据。

1.4 介绍选择法、冒泡法、直接插入排序如何排序?伪代码展示.

  • 1.选择法:
    定义变量i,index,k,n,t;
    输入n,定义数组a[n],利用循环输入n个值,依次赋给数组a的每个元素
    for k=0 to k<n-1
    index=k;/存放最小值下标/
    for i=k+1 to n
    if a[i]小于a[index]
    如果是,则index=i end
    t=a[index];a[index]=a[k],a[k]=t最小元素与下标为k的元素互换 end
    输出n个数组元素的值和其所对应的下标。

  • 2.冒泡法:
    定义变量i,j,k,n
    输入n,定义数组a[n],利用循环输入n个值,依次赋给数组a的每个元素
    for i=0 to n-1
    for j=0 to n-i-1
    if a[j]大于a[j+1]
    互换a[j]和a[j+1]知道整个数组的顺序完全正确。
    输出n个数组元素的值和其所对应的下标。

  • 3.直接插入排序
    定义变量i,j,k,n,t。
    输入n,定义数组a[n],利用循环输入n个值,依次赋给数组a的每个元素
    for i=1 to n-1
    for j=0 to i-1
    if a[j]大于a[i] 跳出循环 end
    if j不等于i-1
    t=a[i]//将比a[i]大的数据向后移
    for k=j to i-1
    a[k+1]=a[k]
    a[k+1]=t//将a[i]放到正确位置上
    输出n个数组元素的值和其所对应的下标。

1.5 介绍什么是二分查找法?它和顺序查找法区别?

  • 二分查找法与上面三个法的不同点在于,它查找的数组要是一个已经排好顺序的含n个数的数组,折半查找,然后判断所找数与数(n)/2的大小,如果所找数大了,就把数(n)/2的值赋给min,小了就把数(n)/2赋给max,直到招到该数。

1.6 二维数组如何定义、初始化?

  • 定义:类型名 数组名 [行长度] [列长度]
  • 初始化:类型名 数组名 [行长度] [列长度]={ {初值表0},···,{初值表k},···},也可顺序赋值;二维数组初始化也可针对部分元素。

1.7 矩阵转置怎么实现?方阵中:下三角、上三角、对称矩阵的行标i列标j的关系?请说明。

  • 转置只需要在循环中将i和j的值对调就好了,就可以输出转置矩阵。
  • 下三角:i<=j 。上三角:i>=j。 对称矩阵:a[i][j]=a[j][i]。

1.8 二维数组一般应用在哪里?

  • 有一系列元素时用一维数组,如果这些元素有一定的位置逻辑,如矩阵,就用二维数组。

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

  • 我在本周参加了大学以来的第一次考试,考得就是c语言,在写题目的时候感觉不会太难,但是当分数出来的时候,傻眼了,然后叫学长指点下错误,其实有很多地方是都可以拿到分的但是,因为自己的低级错误而丢分了,这让我深刻反省了自己,还有字丑,太潦草的问题,也使得分丢了,下次一定要小心不能放松!!!
  • 本周所学的内容都只还是记得预习看懂的和一部分老师上课讲的内容,要我说什么不懂,现在也说不出来,只有在作pta的时候,遇到了问题,才能发现!!!

posted on 2017-11-26 20:52  不是本人  阅读(294)  评论(4编辑  收藏  举报

导航