您的位置:首页 > 编程语言 > C语言/C++

C语言博客作业--字符数组

2017-12-10 19:42 363 查看

一、PTA实验作业

题目1.7-2统计一行文本的单词个数

1.本题PTA提交列表



2.设计思路

* 定义数组c[100000],i,n.count
* 输入字符串gets(c);
* for (i = 0; i < strlen(c)&&c[i]!='.'; i++) {//当i小于数组长度并且c[i]不等于.时进入循环
while(c[i] != ' ') {//当c[i]不等于空格时进入
n++;
i++;
}
if (n) count++;//先判断单词
if(c[i]==' ') n = 0;//初始化
}
printf("%d\n", count);.//输出单词数

3.代码截图



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

一直在想如何判断多空格的情况,但是后来发现这个只是输出单词的个数,没必要去管空格多少个,直接判断多少个连续字符串就行了

题目2.7-4查验身份证

1.本题PTA提交列表



2.设计思路

1.定义i,j作为循环变量,n为身份证号码个数,flag[100]为判断身份证号是否正确,count为出错身份证号个数,sum[100]为加权和,char型a[101][19]储存身份证号
2.输入n
3.for (i = 0; i < n; i++)
输入身份证号
4.for (i = 0; i < n; i++)//判断前17位是否全为数字
for (j = 0; j < 17; j++)
if (a[i][j] > '9' || a[i][j] < '0') {
flag[i]变为1表示出错
count+1
跳出循环
}
5.  for (i = 0; i < n; i++)//根据题目要求来求出没个身份证号前17位的加权和
for (j = 0; j < 17; j++)
if (flag[i] != 1) {
switch (j%10)
{
case 0:sum[i] += 7 * (a[i][j] - '0'); break;
case 1:sum[i] += 9 * (a[i][j] - '0'); break;
case 2:sum[i] += 10 * (a[i][j] - '0');break;
case 3:sum[i] += 5 * (a[i][j] - '0'); break;
case 4:sum[i] += 8 * (a[i][j] - '0'); break;
case 5:sum[i] += 4 * (a[i][j] - '0'); break;
case 6:sum[i] += 2 * (a[i][j] - '0'); break;
case 7:sum[i] += 1 * (a[i][j] - '0'); break;
case 8:sum[i] += 6 * (a[i][j] - '0'); break;
case 9:sum[i] += 3 * (a[i][j] - '0'); break;
}
}
6.for(i=0;i<n;i++)//判断校验码是否相等
switch (sum[i]%11)
{
case 0:if (a[i][17] != '1'){flag[i] = 1; count++;} break;
case 1:if (a[i][17] != '0'){flag[i] = 1; count++;} break;
case 2:if (a[i][17] != 'X'){flag[i] = 1; count++;} break;
case 3:if (a[i][17] != '9'){flag[i] = 1; count++;}break;
case 4:if (a[i][17] != '8'){flag[i] = 1; count++;} break;
case 5:if (a[i][17] != '7'){flag[i] = 1; count++;} break;
case 6:if (a[i][17] != '6'){flag[i] = 1; count++;} break;
case 7:if (a[i][17] != '5'){flag[i] = 1; count++;} break;
case 8:if (a[i][17] != '4'){flag[i] = 1; count++;} break;
case 9:if (a[i][17] != '3'){flag[i] = 1; count++;} break;
case 10:if (a[i][17] != '2'){flag[i] = 1; count++;} break;
}
7.for (i = 0; i < n; i++)
如果flag[i]=1,输出身份证号
8.如果count=0,代表没有身份证号出错,输出All passed

3.代码截图



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

题目不难就是太过繁琐,可能我这个是比较笨的方法,还有就是一开始没理解题目什么意思,对11取模?后来才知道就是对11取余啊

题目3.7-5统计大写辅音字母

1.本题PTA截图



2.设计思路

1.定义数组ch[81]用来存放字符串,i做循环变量,count做计数器
2. while ((ch[i]=getchar())!='\n') i+1 输入字符串
3.ch[i]='\0';
4. for(i=0;i<strlen(ch);i++)
如果字符在A-Z之间,并且不是A E I O U五个字符,count+1
5.输出大写辅音字母个数

3.代码截图



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

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



三、同学代码互评

四、本周学习总结

1.你学会了什么

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

定义指针变量的一般形式为:

类型名 *指针变量名;

类型名指定指针变量所指向变量的类型,必须是有效的数据类型,

int,float, char等。

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

指针指向数组首地址,然后用指针来对数组里的元素进行改变

两个指针不能相加,因为指针存放的是地址,两个地址相加,这个和就失去了意义

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



直接报错 说是没有初始化

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

1.5

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: