第十一次作业
1.输入一个字符串,统计大写字母、小写字母、空格、数字和其他字符的个数。(要求用字符数组)
#include<stdio.h> #include<string.h> #include<stdlib.h> int main() { int i,n,capital=0,lowercase=0,number=0,other=0,space=0; char alphabetic[30]={'\0'}; printf("请输入字符串:\n"); gets(alphabetic); printf("您输入的为:\n"); puts(alphabetic); n=strlen(alphabetic); if(n>30) { printf("超出30!"); exit(0); } else { for(i=0;i<n;i++) { if(alphabetic[i]>='A'&&alphabetic[i]<='Z') { capital++; } else if(alphabetic[i]>='a'&&alphabetic[i]<='z') { lowercase++; } else if(alphabetic[i]==' ') { space++; } else if(alphabetic[i]>='0'&&alphabetic[i]<='9') { number++; } else { other++; } } printf("一共有%d个字符,其中大写字母有%d个,小写字母有%d个,数字有%d个,空格有%d个,其他字符有%d个",n,capital,lowercase,number,space,other); } return 0; }
2.利用字符数组进行密码的验证,如果密码正确则登陆成功,否则登录失败。密码允许输入三次。
#include<stdio.h> #include<string.h> int main() { int i; char password1[17]={'\0'},password2[17]={'h','e','l','l','o','1','2','3','3','2','1',' ',' ','.','.'}; for(i=0;i<3;i++) { printf("请输入密码:\n"); gets(password1); if(strcmp(password1,password2)==0) { printf("系统欢迎您的登录!@-@"); break; } else { printf("输入错误,您还有%d次机会",2-i); continue; } } return 0; }
3.编写一个函数,判断一个字符串是否是回文。若是回文函数返回值为1;否则返回值为0。回文是顺读和倒读都一样。如“level”“abba”等是回文,但“abcd”不是回文。在主函数中调用回文函数对输入的字符串进行判断。
#include<stdio.h> #include<string.h> #include<stdlib.h> int main() { int i,number,length,j; char palindrome[50]={'\0'}; printf("请输入您的字符串:\n"); gets(palindrome); length=strlen(palindrome); if(length>50||length<0) { printf("请输入您的字符串:\n"); } else { for(j=0;j<length;j++) { if(palindrome[j]==palindrome[length-1-j]) { if(j>length-1-j) break; else continue; } else { printf("这个数不是回文数。\n"); exit(0); } } printf("这个数是回文数。"); } return 0; }
实验总结:这次的实验总体来说比以往都简单了,感觉还可以,不是很麻烦,就是字符数组的定义还是有些不太理解,额,我的第三题的截图等我回学校再放上去,额,也就这样吧。
知识点总结:1.二维字符数组同样可以省略第一维长度,但第二维长度不能省略。
2.字符数组的最后以\0结束,\0没有长度,只占一个内存空间。
3.C语言允许用字符串的方式对数组做初始化赋值。