C语言题库

来源:互联网 发布:wsbs.js l tax.gov.cn 编辑:程序博客网 时间:2024/05/16 05:30

更新日期:2016/8/4

<span style="font-size:18px;">1.有三个数a、b、c,由键盘输入,输出其中最大的数。</span>#include <stdio.h>int main(){   int a,b,c;   printf("请输入三个数:\n");   scanf("%d%d%d",&a,&b,&c);   if(a>b && a>c) printf("max=%d",a);   else if(b>a && b>c) printf("max=%d",b);   else printf("max=%d",c);   return 0;}<span style="font-size:18px;">2.任意十个数,打印出它们中的最大数、最小数。</span> #include <stdio.h>int main(){int max,min;int x[10]={1,3,32,0,321,4532,523,5,436,45};min=max=x[0];for(int i =1;i<10;i++){if(max<x[i]) max = x[i];    if(min >x[i]) min = x[i];}printf("max=%d min=%d\n",max,min);   return 0;}
<span style="font-size:18px;">3. 有一个数组,内放10个整数。要求找出最小的数和它的下标,然后把它和数组中最前面的元素对换位置。</span>#include <stdio.h>int main(){     int min,index=0;    int x[10]={9,8,7,6,5,4,3,2,1,0};min = x[0];for(int i=1;i<10;i++){if(min>x[i]) {min =x[i];index=i;}}printf("min= %d index= %d\n",min,index);x[index] = x[0];x[0] = min;for(int i = 0;i<10;i++){printf("%d  ",x[i]);}    return 0 }
<span style="font-size:18px;">4. 有一个二维数组整型数组中,每一行都有一个最大值,编程求出这些最大值以及它们的和。</span>#include <stdio.h>#define N 3#define M 3int main(){int x[N][M],y[N];printf("请输入%d个数\n",N*M);int max,sum=0;for(int i=0;i<N;i++){for(int j=0;j<M;j++){scanf("%d",&x[i][j]);}}for(int i =0;i<N;i++){max = x[i][0];for(int j=0;j<M;j++){if( max <x[i][j]) max = x[i][j];}y[i]=max;sum+=max;}for(int i=0;i<N;i++){printf("第%d行的最大值为:%d \n",i+1,y[i]);}printf("最大值总和为:%d\n",sum);return 0;}
<span style="font-size:18px;">5. 输入一个数,判断它能否被 3或者被 5整除, 如至少能被这两个数中的一个整除则将此数打印出来,否则不打印,编出程序。</span>#include <stdio.h>int main(){int x;printf("请输入一个数:\n");scanf("%d",&x);if(x%3==0 || x%5==0){printf("%d能被3或者5整除\n",x);}else printf("%d不能被3或者5整除\n",x);  return 0;}
<span style="font-size:18px;">6. 读入1到7之间的某个数,输出表示一星期中相应的某一天的单词:Monday、 Tuesday等等,用switch语句做。</span>#include<stdio.h>int main(){  int x;printf("请输入一个数(1-7):\n");scanf("%d",&x);switch (x){case 1:printf("Monday\n");break;case 2:printf("Tuesday\n");break;case 3:printf("Wednesday\n");break;case 4:printf("Thursday\n");break;case 5:printf("Friday\n");break;case 6:printf("Saturday\n");break;case 7:printf("Sunday\n");break;default:printf("输入错误!\n");break;   return 0;}<span style="font-size:18px;">7. 求 1到 100之间的奇数之和、偶数之和。</span>#include <stdio.h>int main(){int sum1=0,sum2=0;    for(int i=1;i<=100;i++){if(i%2 == 0){sum1+=i;}else sum2+=i;}printf("偶数和为:%d 奇数和为:%d",sum1,sum2);    return 0;}
<span style="font-size:18px;">8. 编程实现求n的阶乘</span>#include <stdio.h>double a(int n){if(n == 1) return 1;if(n>1)return n*a(n-1);}int main(){int n;printf("请输入一个数\n");scanf("%d",&n);printf("%d的阶乘为:%f\n",n,a(n));    return 0;}
<span style="font-size:18px;">9. 3025这个数具有一种独特的性质:将它平分为两段,即30和25,使之相加后求平方,即(30+25),恰好等于3025本身。请求出具有这样性质的全部四位数。</span>#include <stdio.h>int main(){   int x,y; for(int i=1000;i<10000;i++) { x=i/100; y=i%100; if((x+y)*(x+y) == i) printf("%d ",i); }   return 0;]
<span style="font-size:18px;">10. 从键盘中输入一个数字(不限位数),用循环语句编程判断并输出这个数字的位数。</span>#include<stdio.h>int main(){     int x,m,y=0;   printf("请输入一个数\n");   scanf("%d",&x);   m=x;   while(x)   {   x/=10;   y++;   }   printf("%d为%d位数\n",m,y);  return 0;}
<span style="font-size:24px;">11. 青年歌手参加歌曲大奖赛,有10个评委打分,试编 程求选手的平均得分(去掉一个最高分和一个最低分</span>#include <stdio.h>#define a 10int main(){           int x[a];double max,min,avg,sum=0;printf("请输入10个数:\n");for(int i =0;i<a;i++){scanf("%d",&x[i]);sum+=x[i];}max = x[0];min = x[0];for(int i=1;i<a;i++){if(max < x[i]) max = x[i];if(min > x[i]) min = x[i];}sum = sum-max-min;avg = sum/(a-2);printf("平均得分为:%.2f\n",avg);   return 0}
<span style="font-size:18px;">12.任意输入N个数,统计其中的正数个数和负数个数。</span>#include <stdio.h>int main(){       int n[5];int plus=0,minus=0;printf("输入5个数字:\n");for(int i = 0;i<5;i++){scanf("%d",&n[i]);if(n[i] < 0) {minus++;}else if(n[i] > 0) {plus++;}  }printf("正数有%d个  负数有%d个\n",plus,minus);   return 0;}<span style="font-size:18px;">13. 任意输入a[N][N]个数,找出并输出其中的最大数和 最小数,以及它们的下标。</span>#include <stdio.h>#define M 2#define N 3int main(){     int x[M][N];int max,min;int a1=0,a2=0;int b1=0,b2=0;printf("请输入%d个数\n",M*N);for(int i=0;i<M;i++){for(int j =0;j<N;j++)  {  scanf("%d",&x[i][j]);  }} max=min=x[0][0];for(int i=0;i<M;i++){for(int j=0;j<N;j++){if(max <x[i][j]) {max = x[i][j];a1=i;a2=j;}if(min >x[i][j]) {min = x[i][j];b1=i;b2=j;}}}printf("max=%d[%d][%d]  min=%d[%d][%d]\n",max,a1,a2,min,b1,b2); return 0;}<span style="font-size:18px;">14.打印出100-999中所有的“水仙花数”,所谓“水仙 花数”是指一个三位数,其各位数字立方和等于该数。</span>#include <stdio,h>int main(){      int x,y,z;for(int i = 100;i<1000;i++){   x=i/100;//百位数   y=(i/10)%10;//十位数    z=i%10;//个位数   if((x*x*x + y*y*y +z*z*z) ==i )   printf("%d \n",i);} return 0]<span style="font-size:18px;">15.输入一行字符,分别统计出其中英文字母、空格、 数字和其它字符的个数。</span>#include <stdio.h>int main(){printf("请输入一行字符:\n");char c[50];scanf("%d",&c);char *p;p=c;//使指针指向数组c,通过p来改变数组c的值。int z=0;//字母int n=0;//数字int s=0;//空格int q=0;//其他while (*p!='\0'){if((*p >='a' && *p<='z') || (*p>='A' && *p<='Z') ) z++;else if(*p>='0' && *p<='9')n++;else if(*p == ' ')s++;else q++;p++;}printf("字母:%d 数字:%d 空格:%d 其它:%d\n",z,n,s,q);return 0;}<span style="font-size:18px;">16.编写一个函数,将两个字符串连接起来。(不能用strcat函数)。</span>#include <stdio.h>void  stcat(char *x,char *y);int main(){char x1[20],x2[20];gets(x1);gets(x2);stcat(x1,x2);return 0;}void stcat(char *x,char *y){int m=0;char z[20];for(int i=0;x[i]!='\0';i++){z[m++] = x[i];}for(int i= 0;y[i]!='\0';i++){z[m++] = y[i];}for(int i=0;i<m;i++){printf("%c",z[i]);}printf("\n");}<span style="font-size:18px;">17.从键盘中输入一个不超过40个字符的字符串,再输 入一个位数,删除对应 位数的字符,然后输出删除 指定字符后的字符串。</span>#include <stdio.h>void dele(char *x,int n);int main(){char x[40];int num;printf("请输入不超过40个字符的字符串:\n");scanf("%s",&x);printf("请输入一个要删除的位数\n");scanf("%d",&num);dele(x,num);return 0;}void dele(char *x,int n){for(int i=n-1;i<40;i++){x[i] = x[i+1]; }printf("删除后字符串为;\n");for(int i=0;x[i]!='\0';i++){   printf("%c",x[i]);}printf("\n");}
<span style="font-size:18px;">18.. 函数void dele(char *s)的功能是删除字符串s中 的所有数字字符和非字母字符,并将字符串压缩。 例如原字符串为:abc12ef5ghij8#%%yz,处理后的 字符串为:abcefghijyz。</span>#include <stdio.h>#include <string.h>void dele(char *s);int main(){char x[100];scanf("%s",&x);dele(x);return 0;}void dele(char *s){int len=strlen(s);for(int i=0;i<len;i++){if((s[i] >='a' && s[i]<='z') || (s[i] >= 'A' && s[i]<='Z' )){ }else{for(int  j=i;j<len;j++ ){s[j] = s[j+1];//如果找到的不是字母,则把非字母删除}len--;//删除一次非字母,总长度-1;i--;//因为移除了非字母,为保证i的指向为下一个时,必须先i--,然后执行for的i++}}for(int i=0;i<len;i++){   printf("%c",s[i]);}printf("\n");}<span style="font-size:18px;">19. 输入一个字符,判断它如果是小写字母输出其对应大写字母;如果是大写字母输出其对应小写字母;如果是数字输出数字本身;如果是空格,输出“space”;如果不是上述情况,输出“other”</span>#include <stdio.h>int main(){char c;printf("请输入一个字符:\n");scanf("%c",&c);if(c>='a' && c<='z')printf("%c\n",c-32);else if(c>='A' && c<='Z')printf("%c\n",c+32);else if(c>='0' && c<='9')printf("%c\n",c);else if(c==' ')printf("space\n");else printf("other\n");return 0;}
<span style="font-size:18px;">20. 写一函数,求一字符串长度,即编写一strlen函数。</span>#include <stdio.h>#include <malloc.h>int str(char *x){int l=0;while (*x++!=0){l+=1;}return l;}int main(){char x[100];printf("请输入一个字符串:\n");scanf("%s",x);printf("该字符串的长度为:%d\n",str(x));return 0;}<span style="font-size:18px;">21. 输入某年某月某日,判断这一天是这一年的第几天。</span>#include <stdio.h>int main(){int year,month,day,sum=0;printf("请输入年月日:\n");scanf("%d%d%d",&year,&month,&day);int mon[12] = {31,28,31,30,31,30,31,31,30,31,30,31};for(int i=0;i<month-1;i++)sum+=mon[i];sum+=day;if( (year%4 == 0) && (year%100!=0)){if(month>2) sum+=1;}printf("%d年的%d月%d日是这一年的%d天\n",year,month,day,sum);return 0;}



0 0
原创粉丝点击