第十一次作业
一:实验内容
1.
实验要求:.输入一个字符串,统计大写字母、小写字母、空格、数字和其他字符的个数。(要求用字符数组)
代码:
#include<stdio.h> #define N 100 int main() { int i,number[5]={0}; char c[N]; printf("请输入一串字符。\n"); gets(c); for(i=0;c[i]!='\0';i++) { if(c[i]>='A'&&c[i]<='Z') number[0]++; else if(c[i]>='a'&&c[i]<='z') number[1]++; else if(c[i]==' ') number[2]++; else if(c[i]>='0'&&c[i]<='9') number[3]++; else number[4]++; } printf("大写字母有%d个\n小写字母有%d个\n空格有%d个\n数字有%d个\n其他字符有%d个",number[0],number[1],number[2],number[3],number[4]); return 0; }
运行结果:
2.
实验要求:利用字符数组进行密码的验证,如果密码正确则登陆成功,否则登录失败。密码允许输入三次。
代码:
#include<stdio.h> #include<string.h> int main() { int n=2; char password[]="yangge",input[100]; printf("请输入密码,你有三次机会:\n"); do { gets(input); if(strcmp(password,input)==0) { printf("密码正确,成功登陆\n"); break; } else { if(n==0) { printf("登陆失败\n"); } else { printf("输入错误,请重新输入,你还有%d次机会\n",n); } n--; } } while(n>=0); return 0; }
运行结果:
3.
实验要求:编写一个函数,判断一个字符串是否是回文。若是回文函数返回值为1;否则返回值为0。回文是顺读和倒读都一样。如“level”“abba”等是回文,但“abcd”不是回文。在主函数中调用回文函数对输入的字符串进行判断。
代码:
#include<stdio.h> #include<string.h> #define N 100 int palindrome(char c[]); int main() { char str[N]; printf("请输入一个字符串:\n"); gets(str); if(palindrome(str)) { printf("这个字符串是回文。\n"); } else { printf("这个字符串不是回文。\n"); } return 0; } int palindrome(char c[]) { int i,j=-1; j=strlen(c)-1; for(i=0;i<j;i++,j--) { if(c[i]!=c[j]) { return 0; } } return 1; }
运行结果:
二:实验总结
1.使用除gets和puts以外的字符串处理函数时要记得使用头文件string.h。
2.gets函数:\n等不会读入数组,会转化为\0,会将其从缓冲区读走。
3.C语言允许用字符串的方式对数组做初始化赋值。