第十一次作业

一、实验内容      

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.对于老师和助教的工作,首先要跟你们说谢谢,经常遇到编程出错的时候就会问老师,老师总能及时帮助,还有上实验课的时候,帮我们纠错,辛苦了。

posted @ 2016-12-15 22:27  小北ML  阅读(204)  评论(1编辑  收藏  举报