C语言题库

更新日期: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 3
int 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 10
int 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 3
int 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;
}



  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值