代码改变世界

字符数组

2017-12-10 21:00  小厮sir  阅读(661)  评论(1编辑  收藏  举报

一、PTA实验作业(4分)

题目1:字符串转换成十进制整数

1. 本题PTA提交列表(要提交列表,不是结果)

2. 设计思路(伪代码或流程图)

define定义量 STRING_SIZE为1000
定义str数组
定义sum,i,flag,f
gets输入文本
for(i = 0; str[i] != '#'; ++i) 用循环来遍历每一字符并转为十进制
if(str[i] == '-' && !flag)
f = 1 标记数字前的第一个-,表示负数
else if((str[i] >= '0') && (str[i] <= '9'))字符0到9转十进制
sum = sum * 16 + str[i] - '0'转十进制然后求和
flag = 1;
小写字母转十进制*/
sum = sum * 16 + str[i] - 'a' + 10;
flag = 1;
大写字母转十进制后求和
sum = sum * 16 + str[i] - 'A' + 10;
flag = 1;
if(f)如果f==1则输出十进制整数变为负数
sum = -sum;

3.代码截图(注意,截图,截图,截图。不要粘贴博客上。不用用···语法去渲染)

题目2:统计大写辅音字母

1. 本题PTA提交列表(要提交列表,不是结果)

2. 设计思路(伪代码或流程图)

include <ctype.h>调用大写字母函数

定义char text[80]放输入的文本
           ctr做循环变量
           count=0记录个数,注意初始化 
           flag=0用来标记是大写字母
gets(text)得到文本
for遍历文本每一个字符直到\0时循环结束 
	如果(isupper(text[ctr]))
	文本是大写记录flag=1;
	在(flag==1)的条件下
	判断大写字母不是AEIOU
        是的话用count计数

3.代码截图(注意,截图,截图,截图。不要粘贴博客上。不用用···语法去渲染)

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

就是当第一次条件测试时大写字母时后面要不要加上else之类的还是不用,还有就是怎样简化我的那个嵌套的
if语句,还有就是我最后的那个判断如何缩短

题目3:找最长的字符串

1. 本题PTA提交列表(要提交列表,不是结果)

2. 设计思路(伪代码或流程图)

定义 n放N个字符串
定义指针数组 *a[n];放输入的字符串
定义普通字符数组 b[80]放每次输入的字符串
定义number[20];//存放字节数
定义 ctr,outer,inner,temp循环变量
标记值 found=0;

输入n scanf("%d",&n);
然后存入number中
	scanf("%s",b)		
            a[ctr]=b;
	number[ctr]=sizeof(a[ctr])
  用sizeof()将每次输入的字符串存入a中
  每次计算的字节数存入number中 	
  用冒泡法从大到小排序后搜索出最大值
for(outer=0;outer<(n-1);outer++){
	for(inner=outer;inner<n;inner++){
		if(number[outer]<number[inner]){
			temp=number[inner];
			number[inner]=number[outer];
			number[outer]=temp;	
  再遍历字符指针数组,找出字节数相等的地址
   for(ctr=0;ctr<n;ctr++){
	if(number[0]==sizeof(a[ctr]))
	找到时候标记found=1
	break结束循环 
if(found==1)如果找到了
输出a[ctr]);

3.代码截图(注意,截图,截图,截图。不要粘贴博客上。不用用···语法去渲染)


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

写到最后发现还是不能输出最长的字符串,因为我用冒泡法排序后顺序变了,用ctr对应不起来,不知道如何解决

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

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

1.你学会了什么?

1.1指针变量如何定义(设计代码可以用markdown代码符号渲染)?

在变量名前加上*,说明这个变量是指针,c程序可以识别他

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

当指针自身加一个数值时,表示改变指向的地址
不能相加

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


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

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

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

定义一个数组a[10],然后定义一个指针int *p,p=a[ctr]

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

char *p="字符串"
字符串的第一个字符

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

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

除了做运算和声明指针,还有哪些用处
如何将字符串通过输入储存在指针数组中
声明p是指针后后面如果用到p要不要加上

错题:

以下程序中调用scanf函数给变量a输入数值的方法是错误的,其错误原因是________. (*p只能说明p是一个指针)

main()

{

int p,q,a,b;

p=&a;

printf(“input a:”);

scanf(“%d”,*p);

……

}

A、

*p表示的是指针变量p的地址

B、

*p表示的是变量a的值,而不是变量a的地址

C、

*p表示的是指针变量p的值

D、

*p只能用来说明p是一个指针变量

有以下程序

include<stdio.h>

main()

{ int m=1,n=2,p=&m,q=&n,*r;

r=p;p=q;q=r;

printf("%d,%d,%d,%d\n",m,n,p,q);

}

程序运行后的输出结果是()b

A、
1,2,1,2

B、
1,2,2,1

C、
2,1,2,1

D、
2,1,1,2