第十一次作业
1.输入一个字符串,统计大写字母、小写字母、空格、数字和其他字符的个数。(要求用字符数组)
#include <stdio.h> int main() { int capital=0,lowercase=0,number=0,space=0,other=0,i; char str[50]; printf("请输入一串任意字符:"); gets(str); for(i=0;str[i]!='\0';i++) { if(str[i]>='a'&&str[i]<='z') { lowercase++; } else if(str[i]>='A'&&str[i]<='Z') { capital++; } else if(str[i]==' ') { space++; } else if (str[i]>='0'&&str[i]<='9') { number++; } else { other++; } } printf ( "大写字母有%d个\n小写字母有%d个\n数字有%d个\n空格有%d个\n其他字符有%d个",capital,lowercase,number,space,other); return 0; }
2.利用字符数组进行密码的验证,如果密码正确则登陆成功,否则登录失败。密码允许输入三次。
#include <stdio.h> int main() { int i; char password[10]="12345",putpass[10]; for(i=3;i>0;i--) { printf("你还有%d次登陆机会,请输入密码:",i); scanf("%5s",putpass); if(strcmp(password,putpass)==0) { printf("登陆成功\n"); break; } else { printf("登陆失败\n"); } } return 0; }
3.编写一个函数,判断一个字符串是否是回文。若是回文函数返回值为1;否则返回值为0。回文是顺读和倒读都一样。如“level”“abba”等是回文,但“abcd”不是回文。在主函数中调用回文函数对输入的字符串进行判断。
#include <stdio.h> #include <string.h> int pan( char str[]); int main() { char hui[80]; printf("请输入一串字符:"); gets(hui); if (pan(hui)==1 ) printf( "该串字符回文\n"); else printf("该串字符不回文\n"); } int pan( char str[]) { int m,n,i; i=strlen(str); for(m=0,n=i-1;m<=(i-1)/2;m++,n--) { if(str[m]!=str[n]) break; } if(m>n) return 1; else return 0; }
实验总结
1字符串的末尾是\0而不是\n
2用strlen函数计算字符串长度时不将\0算在内
3用scanf读入字符串式可以在%s中加入数字强制限制读入长度
4用scanf读入字符串式时输入带空格与回车均代表输入结束
课程体会
1感觉至少写了上千行代码了吧。经过一个学期的锻炼,感觉编写代码不再那么遥不可及,那么神秘了。
2写代码一定要细心,写代码是真正的失之毫厘差之千里,有时候只是简单的符号错误就会需要改正很长时间。 其次,写代码一定要多钻研,不能将思路局限在一种单一的方法或模式上。
3采用技术博客提交作业这种形式我觉得很方便 但抄袭起来也方便了,这应该算是一个缺点吧 如果下一届的学弟学妹们入学了, 我会推荐给他们
4感觉应该增加学生上机实践的机会