C语言题目练习100例——题目+题目分析+源代码(21—30)

【题目21】

题目 :定义一个3*2的二维整型数组,统计其中正数的个数。
1.题目分析:
2.题目源代码如下:

#include "stdio.h"

int main()
{
	int i,j,n=0,a[3][2];
	for(i=0;i<3;i++)
     	for(j=0;j<2;j++)
	   	scanf("%d",&a[i][j]);
	for(i=0;i<3;i++)
     	for(j=0;j<2;j++)
	   	if(a[i][j]>0)n++;
	printf("n=%d\n",n);
	return 0;
}		

【题目22】

题目 :任意输入一个字符串,统计小写字符的个数。
1.题目分析:
2.题目源代码如下:

#include "stdio.h"

int main()
{
	int i=0,n=0;
	char a[80];
	gets(a);
	puts(a);
	printf("\n");
	while(a[i]!='\0')
	{
	if(a[i]>='a' && a[i]<='z')n++;
	i++;
	}
	printf("n=%d\n",n);
	return 0;
} 	

【题目23】

题目 :将一个3×2的二维整型数组,转置为2×3的二维整型数组。
1.题目分析:
2.题目源代码如下:

#include "stdio.h"

int main()
{
int i,j,n=0,a[3][2],b[2][3];

for(i=0;i<3;i++)
     for(j=0;j<2;j++)
	 	scanf("%d",&a[i][j]);
for(i=0;i<3;i++)
     for(j=0;j<2;j++)
		 b[j][i]=a[i][j];
		 
printf("\n\n\n");

for(i=0;i<3;i++)
{   for(j=0;j<2;j++)
		 printf("%5d",a[i][j]);
	     printf("\n");
}
printf("\n\n\n");
for(i=0;i<2;i++)
{ for(j=0;j<3;j++)
		printf("%5d",b[i][j]);
	     printf("\n");
}
return 0;
}

【题目24】

题目 :用数组作函数参数,进行选择排序。
1.题目分析:
2.题目源代码如下:

#include "stdio.h"

void judge(int s[],int n)
{
	int i,j,k,t;
	
	for(i=0;i<n-1;i++)
	{
		k=i;
		for(j=i+1;j<n;j++)
		{
			if(s[j]<s[k])
			{
				k=j;
			}
		}
		if(k != i)
		{
			t=s[k];
			s[k]=s[i];
			s[i]=t;
		}
	}
}
int main()
{
	int i,a[6];
	printf("请输入6个数: \n");
	for(i=0;i<6;i++)
	{
		scanf("%d",&a[i]);
	}
	judge(a,6);
	printf("判断后的顺序为: \n");
	for(i=0;i<6;i++)
	{
		printf("%-4d",a[i]);
	}
	return 0;
} 

【题目25】

题目 :产生20个互不相同的二位随机整数。
1.题目分析:
2.题目源代码如下:

#include "stdio.h"
#include "stdlib.h"
#include "time.h"

int main()
{
	int i,j,stat,a[20];
	
	srand(time(NULL));
	a[0]=10+rand()%90;
	
	for(i=1;i<20;i++)
	{
		loop:
			stat=10+rand()%90;
			for(j=0;j<i;j++)
			{
				if(stat == a[j])
				goto loop;
			}
			a[i]=stat;
	}
	
    for(i=0;i<20;i++)
	{
		if((i+1)%5 == 0)
		{
			printf("%4d \n",a[i]);
		}
		else
		{
			printf("%4d",a[i]);
		}
	}
	return 0; 
}

【题目26】

题目 :求6个数的平均值,用指针处理.
1.题目分析:
2.题目源代码如下:

#include "stdio.h"

int main()
{
	int i,a[6];
	int *p=a;
	double s=0;
	
	printf("Please input 6 numbers: "); 
	for(i=0;i<6;i++)
	{
		scanf("%d",p++);
	}
	for(p=a;p<a+6;p++)
	{
		s=s+*p;
	}
	printf("平均值为: %lf \n",s/6);
	return 0;
 } 

【题目27】

题目 :找出6个数中的最大的,用指针处理。
1.题目分析:
2.题目源代码如下:

#include "stdio.h"

int main()
{
	int i,a[6];
	int *p=a,*t=a;
	
	printf("Please input 6 numbers: "); 
	for(i=0;i<6;i++)
	{
		scanf("%d",p++);
	}
	p=a;
	for(i=0;i<6;i++)
	{
		if(*(p+i) > *t)
		{
			t=p+i;
		}
	}
	printf("最大值为: %d \n",*t);
	return 0;
 } 

【题目28】

题目 :输入两个字符串,将两个合并一个字符串。
1.题目分析:字符串特点:以’\0’结尾
2.题目源代码如下:

#include "stdio.h"

int main()
{
	int i=0,j=0,n=0;
	char a[80],b[80];
	
	printf("请输入2两个字符串: ");
	gets(a);
	gets(b);
	puts(a);
	puts(b);
	
	while(a[i]!='\0')
	i++;
	while(b[j]!='\0')
	a[i++]=b[j++];
	puts(a);
    return 0;
}

【题目29】

题目 :有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
1.题目分析:排列与组合
2.题目源代码如下:

#include "stdio.h"

int main()
{
	int i,j,k;
	for(i=1;i<5;i++)
	{
		for(j=1;j<5;j++)
		{
			for(k=1;k<5;k++)
			{
				if(i != j && i != k && j != k)  //使i,j,k三个变量不相同
				{
					printf("%d%d%d \n",i,j,k);
				}
			}
		}
	}
	return 0;
}

【题目30】

题目 :企业发放的奖金根据利润提成。

利润(I)低于或等于10万元时,奖金可提10%;

利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;

20万到40万之间时,高于20万元的部分,可提成5%;

40万到60万之间时高于40万元的部分,可提成3%;

60万到100万之间时,高于60万元的部分,可提成1.5%;

高于100万元时,超过100万元的部分按1%提成。

从键盘输入当月利润I,求应发放奖金总数?
1.题目分析:
2.题目源代码如下:


#include "stdio.h"

int main()
{
	double i;
	double bonus1,bonus2,bonus4,bonus6,bonus10,bonus;
	printf("你的当月利润: \n");
	scanf("%lf",&i);
	
	bonus1=100000*0.1;
	bonus2=bonus1+100000*0.075;
	bonus4=bonus2+200000*0.05;
	bonus6=bonus4+200000*0.03;
	bonus10=bonus6+400000*0.015;
	
	if(i <= 100000)
	{
		bonus=i*0.1;
	}
	else if(i <= 200000)
	{
		bonus=bonus1+(i - 100000)*0.075;
	}
	else if(i <= 400000)
	{
		bonus=bonus2+(i - 200000)*0.05;
	}
	else if(i <= 600000)
	{
		bonus=bonus4+(i - 400000)*0.03;
	}
	else if(i <= 1000000)
	{
		bonus=bonus6+(i - 600000)*0.015;
	}
	else if(i > 1000000)
	{
		bonus=bonus10+(i - 1000000)*0.01;
	}
	printf("你的奖金为:%lf",bonus);
	printf("\n");
	return 0; 
}
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值