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验证,并截图展示?

直接报错 说是没有初始化

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

1.5

posted @ 2017-12-10 19:42  网络1611张弛  阅读(171)  评论(2编辑  收藏  举报