C语言博客作业--字符数组
一、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验证,并截图展示?
直接报错 说是没有初始化