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