第十一次作业

      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语言允许用字符串的方式对数组做初始化赋值。

 

posted @ 2016-12-15 16:58  宁萌啊  阅读(227)  评论(1编辑  收藏  举报