1 邮箱地址合法性验证,合法输出字符“1”,不合法输出字符“0”合法条件:A 仅包含一个“@”。
B 最后三位必须是“.com”C 字符直接没有空格B 有效数组是1~9、a~z、A~Z、“.”、“@”、“_”程序#include<stdio.h>int main(){char input[100],out=1;int len,i,flag=0,flag1=0,flag2=0,flag3=0,ttt=0;scanf("%s",input);len=strlen(input);if((input[len-1]=='m')&&(input[len-2]=='o')&&(input[len-3]=='c')&&(input[len-4]=='.')) {for(i=0;i<len-4;i++){if(input[i]=='@')ttt++;if(input[i]==' '){flag1=1;}if((((input[i]>='1')&&(input[i]<='9'))||((input[i]>'a')&&(input[i]<'z'))||((input[i]>'A')\ &&(input[i]>'Z'))||(input[i]=='.')||(input[i]=='@')||(input[i]=='_'))==0) {flag2=1;}}if(ttt!=1){flag3=1;}}else{flag=1;}if(flag==1||flag3==1||flag1==1||flag2==1){out='0';}else{out='1';}printf("%c",out);}2 m个相同苹果分到n个相同的篮子里。
允许有的篮子为空,一共有多少种分法?其中:0<=m<=10,0<=n<=10;\#include<stdio.h>int func(int m,int n){int a=0,i;if(n<=1) //如果没有篮子,只有一种方法“都没有”,或者有一个篮子,也是一种方法{return 1;}for(i=m;i>=0;i-=n){a+=func(i,n-1);}return a;}int main(){int M=3,N=3;scanf("%d%d",&M,&N);printf("%d",func(M,N));}3 手机电池余量显示#include<stdio.h>int func(int n){int f1;if(n==0)return 0;else if((n<=10)&&(n>=1)){f1=1;}else if((n<=20)&&(n>10)){f1=2;}else if((n<=30)&&(n>20)){f1=3;}else if((n<=40)&&(n>30)){f1=4;}else if((n<=50)&&(n>40)){f1=5;}else if((n<=60)&&(n>50)){f1=6;}else if((n<=70)&&(n>60)){f1=7;}else if((n<=80)&&(n>70)){f1=8;}return f1;}int main(){char a1[13]="|----------|",a2[13]="|++++++++++|";char d1[13]="|++++++++++|",d2[13]="|----------|",d3[16]="===============";int c,i,m;while(1){scanf("%d",&m);m=10-func(m);printf("%s\n",d1);for(i=0;i<=m-1;i++){printf("%s\n",a1);}for(i=0;i<(10-m);i++){printf("%s\n",a2);}printf("%s\n",d2);printf("%s\n",d3);}}4 将无符号数的指定比特进行置1.输入数字n(31bit,无符号整形),置位数m(0<=m<=31)。
输入:无符号数,指定bit位输出:指定的bit位被置1的值例如:输入891 7 输出1019#include<stdio.h>int main(){unsigned int c,tmp;unsigned char d;while(1){scanf("%d%d",&c,&d);if((d>=0)&&(d<=31)){tmp=c;tmp&=~(1<<d);tmp|=1<<d;c=tmp;printf("%d",c);}else{printf("%s","input error");}}}5 输入一个字符串。
交换前后顺序后再输出。
#include<stdio.h>int main(){char a[100],b[100];int len,i;while(1){scanf("%s",a);len=strlen(a);for(i=len;i>=0;i--){b[len-i]=a[i-1];}printf("%s\n",b);}}6 输入一个同学各科的高考成绩,计算出他的总成绩和平均成绩,共4个科目。
每个成绩范围0~150,无效分数不计算在总分数内(但科目永远是4课)#include<stdio.h>int main(){int a1,a2,a3,a4,sum,aver;while(1){scanf("%d%d%d%d",&a1,&a2,&a3,&a4);if((a1>=0)&&(a1<=150)&&(a2>=0)&&(a2<=150)&&(a3>=0)&&(a3<=150)&&(a4>=0)&&(a 4<=150)){sum=a1+a2+a3+a4;aver=sum/4;printf("%d %d\n",sum,aver);}}}7 找众数。
输入10个整形,输出10个整形中的众数。
#include<stdio.h>int main(){int a[10],b[10]={1,1,1,1,1,1,1,1,1,1},i=0,j,max=0;;while(1){for(i=0;i<10;i++) //输入个数{scanf("%d",&a[i]);}//把个数每个数出现的次数存到b[i]中for(i=0;i<9;i++){for(j=i+1;j<10;j++){if((a[i]==a[j])&&(b[i]!=0)){b[i]++;b[j]=0;}}}//求出b[i]中的最大值max=b[0];for(i=1;i<10;i++){max=(max>b[i])?max:b[i];}//把b[i]中最大值对应的a[i]中的数字输出for(i=0;i<10;i++){if(b[i]==max){printf("%d",a[i]);}}}}8 求两个数的最大公倍数,最大公约数。
A 最大公约数求法:1> m和n,如果m>n,k=m%n (若m<n 交换m,n)2> 如果k==0,则n为最大公约数3> 若k不等于0,m=n,n=k,再执行1>B 最大公倍数求法:m和n,w=m*n/最大公约数#include<stdio.h>int func(int m,int n){int t,g;if(m<n){t=m;m=n;n=t;}g=m%n;if(g!=0){m=n;n=g;return func(m,n);}return n;}int main(){int a1,a2,s1,s2;while(1){scanf("%d%d",&a1,&a2);s1=func(a1,a2);s2=a1*a2/s1;printf("最大公约数:%d最小公倍数%d\n",s1,s2);}}9 求字符种类计数。
字符包括:”a~z”,”A~Z”,0~9。
输入的字符长度不超过20个,不同字符总数不超过10个。
输入:字符串长度,字符串。
输出:字符种类个数。
#include<stdio.h>void main(){char a,c,*p,tt[21];int b,i,j,rr[21],out=0;while(1){for(i=0;i<20;i++)rr[i]=1;scanf("%d",&b); //先输入个数b//输入间隔符,限定“,”或者“”a=getchar();if((a==',')||(a==' ')){for(i=0;i<b;i++) //输入b个字符{a=getchar();//判定字符是不是满足要求if((a>='a')&&(a<='z')||(a>='A')&&(a<='Z')||(a>='0')&&(a<='9')){tt[i]=a;}}tt[i]='\0';}//统计字符中每个字符出现的个数,存放到对应数组rr中//重复字符在第一次出现的对应位置“++”,重复字节对应位置为“”for(i=0;i<b-1;i++){for(j=i+1;j<b;j++){if((tt[i]==tt[j])&&(rr[i]!=0)){rr[i]++;rr[j]=0;}}}//统计标记rr中不为“”的个数for(i=0;i<b;i++){if(rr[i]>0)out++;}printf("%d",out);}}10 求1~100之间的素数,并输出。