1.输入一个字符串,统计大写字母、小写字母、空格、数字和其他字符的个数。(要求用字符数组)
#include <stdio.h> #define N 1000 int main() { char ch[N]; int i,num=0,bigletter=0,smallletter=0,space=0,other=0; printf("ÇëÊäÈë×Ö·û´®£º\n"); gets(ch); // puts(ch); for(i=0;ch[i]!='\0';i++) { if(ch[i]>='0'&&ch[i]<='9') { num++; } else if(ch[i]>='A'&&ch[i]<='Z') { bigletter++; } else if(ch[i]>='a'&&ch[i]<='z') { smallletter++; } else if(ch[i]==' ') { space++; } else { other++; } } printf("Êý×ÖÓÐ%d¸ö\n",num); printf("´óд×ÖĸÓÐ%d¸ö\n",bigletter); printf("Сд×ÖĸÓÐ%d¸ö\n",smallletter); printf("¿Õ¸ñÓÐ%d¸ö\n",space); printf("ÆäËû×Ö·ûÓÐ%d¸ö\n",other); return 0; }
2.利用字符数组进行密码的验证,如果密码正确则登陆成功,否则登录失败。密码允许输入三次。
#include <stdio.h> #include <string.h> #define N 10 int main() { char ch[N],hc[N]; int i=0; printf("Çë´´½¨Ò»¸ö²»¶àÓÚ¾ÅλµÄÃÜÂ룺\n"); gets(ch); printf("ÇëÊäÈëÄãµÄÃÜÂ룺\n"); gets(hc); while(i<3) { if (strcmp(ch,hc)==0) { printf("ÊäÈëÕýÈ·£¡\n"); break; } else { printf("ÃÜÂë´íÎó£¡\n"); } i++; gets(hc); } if(i==3) { printf("\nÄãµÄ´ÎÊýÒÑÓÃÍ꣡"); } return 0; }
3.编写一个函数,判断一个字符串是否是回文。若是回文函数返回值为1;否则返回值为0。回文是顺读和倒读都一样。如“level”“abba”等是回文,但“abcd”不是回文。在主函数中调用回文函数对输入的字符串进行判断。
#include<stdio.h> #include<string.h> #define N 100 int huiwen(char str[]); int main() { int n; char str[N]; printf("请输入一段字符串:\n"); scanf("%s",str); n=huiwen(str); if(n==1) { printf("该字符串为回文字符串。\n"); } else { printf("该字符串不是回文字符串。\n"); } return 0; } int huiwen(char str[N]) { int i,g,m; g=strlen(str); for(i=0,m=g-1;i<=m;i++,m--) { if(str[i]!=str[m]) { return 0; } } return 1; }
实验总结:
1:字符串的scanf是%s,没有取地址符&!!,字符串的scanf是%s,没有取地址符&!!,字符串的scanf是%s,没有取地址符&!!
2:使用除gets和puts以外的字符串处理函数时要记得使用头文件string.h。
3:scanf和gets的几个区别
scanf函数输入字符串里不能包含空格,需要使用gets函数。
gets函数:\n等不会读入数组,会转化为\0,会将其从缓冲区读走。
4:字符串最后一位是\0。
课程体会:
1:代码写了...据不完全统计...有一千多行,(一个万年历和另一个程序就直接堆了不少。。。)
C语言这东西很好玩。就是告诉你什么是干什么的,具体怎么做,就得靠自己了。
C呢,就是现吃现做.JAVA就是外卖。
作为经典中的经典,基础的基础,必须学好C。。
2:教训...好好听课多练练,还有,学!好!数!学!
编程说着是编程,但我感觉更多的是数学问题。
编程问题模型化,模型问题数学化
3:头一次用博客写作业,感觉不错
最好的地方在于复习方便。要拿本子写,我估计,期末的时候我只能找到最近几次作业。。。