c语言数据类型
一、PTA实验作业
题目1:交换a和b的值
1. 本题PTA提交列表
2. 设计思路
` 1.
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明。
` 没有碰到问题.
题目2:7-6 掉入陷阱的数字
1. 本题PTA提交列表
2. 设计思路
1.定义变量 N,i,m,n,H,s,k,j,p,l,s为运算后结果,N为输入数据,N的值赋予k.
2.输入N
3.m=N%10;//取出个位
4.s=s+m;//各位相加
5.N=N/10;//划掉个位
6.if N0 brean//结束语句
7.H=s*3+1;//进行操作
8.进行i=1;i<=k的循环语句
9.if k!=H.输出i和H;s=0;k=H
10.在进入j=1;j<=k的嵌套循环
11.同样进行.m=N%10;//取出个位,s=s+m;//各位相加,H=NH10;//划掉个位,H=s*3+1;
12.if kH,直接输出i和H.
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明。
` 没有写入如果与上一轮的操作数相同就退出循环.
题目3:7-8 判断合法标识符
1. 本题PTA提交列表
2. 设计思路
1.定义repeat,ch,i,flag./repeat做为执行的次数 ch是输入的字符
2.输入reapeat的值
3.进入i=1.i<=repeat的循环语句
4.ch=getchar()//输入字符
5.if((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z')||(ch=='_'))//判断字符
6.令fag=1.
7.进入嵌套循环while(ch!='\n"){//输入所有的字符
8.ch=getchar(); //输入字符.
9.判断ch等于‘\n’的话退出while循环否则继续判断
10.ifif((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z')||(ch'_')||(ch>='0'&&ch<='9')||(ch'\n')),若符合continue;
11.若不符合,flag=0;
12.if(flag==1) 输出Yes换行
` 13.不是,则输出No.
}
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明。
` 因为输入的字符数目不确定,所以刚开始用for的循环语句会一直运行超时,而用while则不用考虑这种问题
二、截图本周题目集的PTA最后排名。
三、本周学习总结
1.你学会了什么?
1.1 一维数组如何定义、初始化?
1.定义一个数组需要明确数组的变量名,数组元素的类型和数组的大小,一般类型为 类型名 数组名[数组长度].
2.在定义数组时,也可以对数组元素赋初值,其一般形式为:类型名[数组长度]=[初值表],并且c语言规定只有静态储存才能初始化,但一般也允许对动态储存的数字赋初值.数字的初始化也可以只针对部分元素.
1.2 一维数组在内存中结构?可画图说明。数组名表示什么?
1.不同数组名的数组对应的内存结构也不一样,例如int类型的数组名的起始地址是4010,每个数组元素需要2个字节.
2.数组名表示该数组所分配连续内存空间中第一个单元的地址,是一个地址常量,存放内存空间的首地址.
1.3 为什么用数组?
` 使用数组能更简单地解决复杂的程序问题.
1.4 介绍选择法、冒泡法、直接插入排序如何排序?伪代码展示.
选择法:数组a[N]进行循环,循环N-1次,将第一个数作为最小数,比较n-1次,与后面数比较,如果后面数比较小,记住他的下标,与最小数交换
冒泡法:数组进行循环,循环n-1次,相邻的值进行比较,逆序交换,较大的数放在后面.
` 直接插入顺序:进行循环,寻找插入的位置,将原来数组i所对应的值变为插入的值,后面数组i+1对应原先数组i的值;
1.5 介绍什么是二分查找法?它和顺序查找法区别?
二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好,占用系统内存较少,二分查找的基本思想是将n个元素分成大致相等的两部分,取a[n/2]与x做比较,如果x=a[n/2],则找到x,算法中止;如果x<a[n/2],则只要在数组a的左半部分继续搜索x,如果x>a[n/2],则只要在数组a的右半部搜索x.
区别:1.顺序查找法是从n个数从头到尾逐个查找x的值是否存在.而二分法是先将n个数的顺序大小排好,然后再将对半的那个值b与查找的x的值进行比较,若b>n,则从左半部分继续二分查找,若b<n,则从右半部分继续二分查找,直到找到x的值为止.
2.相对于顺序查找法,二分法的比较次数较少,查找速度快,占内存较少.
1.6 二维数组如何定义、初始化?0
1.二维数组的定义形式为 类型名 数组名 [行长度] [列长度]
2.初始化数组
分行赋初值,形式为:类型名 数组名 [行长度] [列长度]={初值表0},...,{初值表k},...}
顺序赋初值,形式为:类型名 数组名[行长度] [列长度]={初值表}
1.7 矩阵转置怎么实现?方阵中:下三角、上三角、对称矩阵的行标i列标j的关系?请说明。
转置的实现在程序中可以通过语句temp=a[i][j];a[i][j]=a[j][i];a[j][i]=temp;来实现.
下三角:i>=j.
` 上三角:j>=i.
1.8 二维数组一般应用在哪里?
` 应用在类似求方阵的转置和闰年和非闰年的每月的天数等多个变量题目的求解.