第十一次作业
1.输入一个字符串,统计大写字母、小写字母、空格、数字和其他字符的个数。(要求用字符数组)
#include<stdio.h> #define N 100 int main() { int a=0,b=0,c=0,d=0,e=0,i; char ch[N]; printf("请输入一串字符:\n"); gets(ch); for(i=0;ch[i]!='\0';i++) { if(ch[i]>='a'&&ch[i]<='z') { a++; } else if(ch[i]>='A'&&ch[i]<='Z') { b++; } else if(ch[i]>='0'&&ch[i]<='9') { c++; } else if(ch[i]==' ') { d++; } else { e++; } } printf("小写字母有%d个,大写字母有%d个,数字有%d个,空格有%d个,其他字符有%d个\n",a,b,c,d,e); return 0; }
2.利用字符数组进行密码的验证,如果密码正确则登陆成功,否则登录失败。密码允许输入三次。
#include<stdio.h> #include<string.h> int main() { char secret[]="jackon",code[7]; int i; printf("请输入密码,你有3次机会:\n"); for(i=0;i<3;i++) { scanf("%6s",code); if(strcmp(secret,code)==0) { printf("密码正确\n"); break; } else { printf("密码错误\n"); } } return 0; }
3.编写一个函数,判断一个字符串是否是回文。若是回文函数返回值为1;否则返回值为0。回文是顺读和倒读都一样。如“level”“abba”等是回文,但“abcd”不是回文。在主函数中调用回文函数对输入的字符串进行判断。
#include<stdio.h> #include<string.h> #define N 100 int ch(char c[]); int main() { char c[N]; printf("请输入字符串:\n"); scanf("%s",c); if(ch(c)) { printf("是回文数\n"); } else { printf("不是回文数\n"); } return 0; } int ch(char c[]) { int i,a,m,n; a=strlen(c)-1; for(m=0,n=a;m<=n;m++,n--) { if(c[m]!=c[n]) { return 0; } } return 1; }
二.实验总结
1.注意字符串的初始化复制常写成ch[]=“helloword”;
2.第二题输密码定义长度的时候应该多定义一个,给\0一个位置;
3.第三题回文数要定义两个变量,i,j, 一个从头 一个从尾 c[i]和c[j]比较当i>=j时结束循环;
4.第一题要想输入空格,那你定义的输入函数得是gets,不能是scanf,因为用scanf输入,会以空格作为串的结束符。
(三)课程体会
专门算了一下代码有1600多行,这只是提交作业的,就不算平常改掉的那些; 原来以为代码就和电视上演的一样在一个全屏的那里边咔咔咔的打那些,还有就是二进制那样的编码,事实上不是那样的,就是感觉很神奇,特别是前段时间看见一个c语言表白的代码,我还不信就运行一下,哇塞惊呆了 真的运行出来了,这让我对c语言以后的学习更喜欢了
学c语言就得好好听课吧,然后写代码的话自己先想想画画,不要上去就开始写 感觉那样好浪费时间; 教训的话就是老是会出那种小错误 不是少标点符号,要么就是标点符号用了中文的
对用博客交作业的这种方式 感觉很好,这样老师就能发现你的问题 帮你解决,有那些课上不好意思问老师的,就可以在作业上问了,强烈推荐下届学生也用这种方式