第十一次作业
一、实验内容
1.输入一个字符串,统计大写字母、小写字母、空格、数字和其他字符的个数。(要求用字符数组)
#include<stdio.h> int main() { char c[100]; int i,m,n,d,s,o; gets(c); m=0; n=0; d=0; s=0; o=0; for(i=0;c[i];i++) { if(c[i]>='A'&&c[i]<='Z') { m++; } else if(c[i]>='a'&&c[i]<='z') { n++; } else if(c[i]>='0'&&c[i]<='9') { d++; } else if(c[i]==' ') { s++; } else o++; } printf("%d %d %d %d %d\n",m,n,d,s,o); }
2.利用字符数组进行密码的验证,如果密码正确则登陆成功,否则登录失败。密码允许输入三次。
#include<stdio.h> #include<string.h> int main() { char c[10]="LXN527mlj"; char h[11]; int i; for(i=0;i<3;i++) { printf("请输入密码:\n"); scanf("%9s",h); if(strcmp(c,h)==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 find(char c[N]); int main() { int i; char c[N]; i=find(c); if(i==0) { printf("不回文\n"); } else { printf("回文\n"); } return 0; } int find(char c[N]) { int i,j=-1,x=1; gets(c); for(i=0;c[i]!='\0';i++) { j++; } for(i=0;i<=j;i++,j--) { if(c[i]!=c[j]) { x=0; break; } } if(x==0) { return 0; } else { return 1; } }
二、实验总结(实验中遇到的问题及解决方法)
1.第一道题没大问题,编程思路基本为:首先要输入整个字符串,用gets函数,然后分别用变量表示大写字母、小写字母、空格、数字和其他字符的个数,用循环语句,在最后输出个数。
2.第二道题遇到的问题是printf("请输入密码:\n");scanf("%9s",h);
这两条语句在for循环外,导致在输入密码的时候,若第一次输错,就会连续出现三次输入错误,而不能输入三次 。
3.第三道题判断字符串是否回文,由主调函数和被调函数,判断是否符合回文条件。
三.课程体会
1.并没有统计过写了多少代码,开学刚接触这门课程觉得挺好玩,现在虽然复杂的程序编起来还是会出错,但对C语言编程,有很用心在学,当自己写出一个代码并能运行成功的时候最开心。
2.还是要多练,写程序不怕出错,能将一个个的错误解决就是一种经验。
3.博客提交的方式挺好,可以在实验课之余再写一次代码,熟练度有所帮助,对我个人来说,有些程序思路不会,可以问其他同学的编程思路,纠正小错误,反正收获不少。
4.对于老师和助教的工作,首先要跟你们说谢谢,经常遇到编程出错的时候就会问老师,老师总能及时帮助,还有上实验课的时候,帮我们纠错,辛苦了。