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

本文解析了PTA平台上的三个编程题目,包括统计文本单词数、查验身份证有效性及统计大写辅音字母数量。通过详细的设计思路和调试过程,帮助读者理解和解决实际编程问题。

一、PTA实验作业

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

1.本题PTA提交列表

1120968-20171214163553404-843126319.png

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.代码截图

1120968-20171214164549795-248473436.png

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

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

题目2.7-4查验身份证

1.本题PTA提交列表

1120968-20171214164812045-1956898920.png

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.代码截图

1120968-20171214170052326-716238987.png

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

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

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

1.本题PTA截图

1120968-20171214170536795-2010453924.png

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.代码截图

1120968-20171214171936029-798618490.png

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

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

1120968-20171214172135857-1961360866.png

三、同学代码互评

四、本周学习总结

1.你学会了什么

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

定义指针变量的一般形式为:
类型名 *指针变量名;
类型名指定指针变量所指向变量的类型,必须是有效的数据类型,
int,float, char等。

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

指针指向数组首地址,然后用指针来对数组里的元素进行改变
两个指针不能相加,因为指针存放的是地址,两个地址相加,这个和就失去了意义

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

1120968-20171214172451873-873015636.png

直接报错 说是没有初始化

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

1.5

转载于:https://www.cnblogs.com/zc-565095526/p/8017840.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值