第十一次作业
(一)实验内容
1.实验要求:输入一个字符串,统计大写字母、小写字母、空格、数字和其他字符的个数。(要求用字符数组)
1.1 代码:
#include <stdio.h> #include <string.h> #define N 100 int main ( ) { int i,sum1=0,sum2=0,sum3=0,sum4=0,sum5=0; char a[N]; printf("请输入一串字符\n"); gets(a); for(i=0;i<strlen(a);i++) { if(a[i]>='A'&&a[i]<='Z') { sum1++; } else if(a[i]>='a'&&a[i]<='z') { sum2++; } else if(a[i]>='0'&&a[i]<='9') { sum3++; } else if(a[i]==' ') { sum4++; } else { sum5++; } } printf("大写字符有%d个\n小写字符有%d个\n数字有%d个\n空格有%d个\n其他字符有%d个\n",sum1,sum2,sum3,sum4,sum5); return 0; }
1.2 程序运行结果:
2.利用字符数组进行密码的验证,如果密码正确则登陆成功,否则登录失败。密码允许输入三次。
2.1 代码:
#include <stdio.h> #include <string.h> int main() { int a; char password[]="shouwei",input[8]; printf("please input the password\n"); for(a=0;a<3;a++) { scanf("%7s",input); if(strcmp(password,input)==0) { printf("welcome!"); } else { if(a==2) { printf("三次输入机会已用完"); } else { printf("wrong password!\nplease input the password again\n"); } } } return 0; }
2.2 程序运行结果:
3.编写一个函数,判断一个字符串是否是回文。若是回文函数返回值为1;否则返回值为0。回文是顺读和倒读都一样。如“level”“abba”等是回文,但“abcd”不是回文。在主函数中调用回文函数对输入的字符串进行判断。
3.1 代码:
#include <stdio.h> #include <string.h> #define N 100 int a(char str[]); int main() { int x; char str[N]; printf("请输入字符\n"); scanf("%s",str); x=a(str); if(x==0) { printf("这串字符不是回文数\n"); } else { printf("这串字符是回文数\n"); } return 0; } int a(char str[]) { int b,i,j; b=strlen(str); for(i=0,j=b-1;i<j;i++,j--) { if(str[i]==str[j]) { continue; } else { return 0; } } return 1; }
3.2 程序运行结果:
(二)实验总结(实验中遇到的问题及解决方法)
1. scanf与gets的运用要合理,建议写程序时运用gets,因为C语言不对越界做检查,运用scanf容易越界。
2.求和时记得给sum赋初始值。
3.回文数的判断不能只看几个数位,比如在有的程序语言中asdssaa也会被判断为回文数
4.另外要看清程序的要求。
(三)课程体会
1. 说实话,自己写过多少行代码真的是没有统计过,正确的加上编写的有问题的代码怎么也有4000-5000行了吧,因为我的程序有时会出现许许多多的问题,需要不断地改,所以应该不少。而且通过学习,我从一开始的一点儿都不懂,到现在的可以自己写出一些小程序,感觉学到了很多,也让我认识到了只有不断地练习才可以更加熟练,比如C语言代码,写的多了,也就知道了其中的乐趣。
2.在自己不会的时候不妨问问自己的舍友或者同专业的同学,当然高年级的学长以及我们的认可老师也可以为我们提供帮助,也可以借鉴下别的同学的程序也不是不可以,但仅限于借鉴,不可以抄,一个程序可以有很多种方法来写,也许看完别人的代码就可以激发自己的灵感。
3.对于博客提交作业这种形式,我的看法是这是一种好方法,不仅为我们提供了交流的平台,而且也可以督促我们及时完成作业。