第十一次作业
一、实验内容
1.输入一个字符串,统计大写字母、小写字母、空格、数字和其他字符的个数。(要求用字符数组)
#include<stdio.h> #define N 100 int main() { char zifu[N]; int a=0,b=0,c=0,d=0,e=0,i; printf("请输入字符串\n"); gets(zifu); for(i=0;zifu[i]!='\0';i++) { if ('A'<=zifu[i]&&zifu[i]<='Z') a++; else if('a'<=zifu[i]&&zifu[i]<='z') b++; else if('0'<=zifu[i]&&zifu[i]<='9') c++; else if(zifu[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 password[]="000000",input[8]; int i; for(i=0;i<3;i++) { printf("请输入密码\n"); gets(input); if(strcmp(password,input)==0) { printf("输入正确!"); break; } else { printf("输入错误!\n"); } if(i==2) printf("登陆失败"); } return 0; }
3.编写一个函数,判断一个字符串是否是回文。若是回文函数返回值为1;否则返回值为0。回文是顺读和倒读都一样。如“level”“abba”等是回文,但“abcd”不是回文。在主函数中调用回文函数对输入的字符串进行判断。
#include<stdio.h> #include<string.h> int huiwen(char c[]); int main() { char str[]={'\0'}; printf("请输入一个字符串:\n"); scanf("%s",str); if(huiwen(str)==1) { printf("是回文数\n"); } else if(huiwen(str)==0) { printf("不是回文数\n"); } return 0; } int huiwen(char c[]) { int i=0,j=0; for(i=1,j=strlen(c);i<=j;i++,j--) { if(c[i]==c[j]) return 1; } return 0; }
(二)实验总结
1.'\0'标志字符串的结束,但它不是字符串的一部分。
2.数组初始化时所赋初值的字符个数少于数组元素个数时,系统会自动在其后的元素中加入'\0'。
3.gets函数可以输入带空格的字符串。
4.scanf函数不可以输入带空格的字符串。
(三)课程体会
1.经过一个学期的学习,我没有具体统计过写过多少行代码,但是应该也不会很少,随着学习的深入,让我感受到了C语言的难度,还有一些困难和阻碍,发现学好C语言也并没有想象中的那么容易。
2.学习C语言,上课认真听听懂了不掉队才是关键,之前自己经常上课走神没办法专注听课,课下自己复习发现更加吃力,关键的知识点有的都没有听,在写程序的时候也就遇到了一个又一个的问题。
3.博客提交作业我觉得是一个很好的形式,让大家可以熟练地掌握网上学习的方法,而且有固定交作业的时间,也可以很好的起到督促大家的作用,如果学弟学妹们来了我很推荐这种方式。
4.老师和助教们都很好,提出问题时大家都跟着一起解答。