河北专升本——C语言基础练习题

目录

一、求100~200之间的素数

二、给出一个大于或等于3的整数,判断它是不是素数

三、判断2000-2500年中的每一年是否为闰年,并将结果输出

四、判断一个数是否能被3和5整除

五、求1+2+3+4.....100的和

六、求两个数m和n的最大公约数

七、依次输入10个数,求出之中的最大数

八、输入十进制,转换相应的二进制

九、输入一个整数n,输出n的逆序

十、用switch语句实现简单的计算器

十一、三条边是否可以构成三角形(两边之和需大于第三边)

十二、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

十三、一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

十四、用*号输出字母C的图案。

十五、接收键盘输入整数生成一个 4X4 矩阵,求其左下三角的元素的和。

十六、用 5 行 3 列的二维数组存储 5 名学生 3 门课程的考试成绩,计算每名学生的平均成绩。

十七、将一个数组中能被 3 整除的数放到另一个数组中

十八、随机产生若干个 10 以内的自然数存储在数组中,删除其中重复的元素,输出原数组与新数组。

十九、有两个红球、三个黄球、四个白球,任意取四个球,其中必须有一个红球,编程输出所有可能的方案

二十、编写程序:假设有 13 位评委参与评分工作。计算每位歌手最终得分的方法是:去掉一个最高分和一个最低分,然后计算剩余 11 个分数的平均值,所得结果就是选手的最终得分。


一、求100~200之间的素数

#include<stdio.h>
main() {
        int f,a=0;
        for (int i = 100; i <= 200; i++)
        {
            f = 0;
            for (int j = 2; j <= i; j++)//i每循环一个数,就把j的初始值赋值为2,然后j会一直加加。但是始终会小于i循环的数。

            {
                printf("j=%d\ni=%d", j, i);
                if (i % j == 0) break; //如果i循环的数,能被j其中的一个值整除了,那么他就不是素数。就结束这条语句。
                else f = 1;//否则那么i就是素数,然后f赋值为1.
            }
            if (f == 1)printf("素数:%d\n", i);//如果f=1,那么这个i值就是素数。
        }

}

二、给出一个大于或等于3的整数,判断它是不是素数

#include <stdio.h>
main() {
	int a, b,f;
	printf("请输入一个大于或等于3的整数:");
	scanf("%d", &a);
	if (a >= 3 ) {
		for (int  j = 2; j<a; j++)
		{
			if (a % j == 0) {
				f = 0;
				break;
			}
			else f = 1;
		}
		if (f == 1) {
			printf("是素数");
		}
		else
		{
			printf("不是素数");
		}

	}
	else
	{
		printf("输入违法");
	}
}

三、判断2000-2500年中的每一年是否为闰年,并将结果输出

#include<stdio.h>
main() {
	int a, b;
	for (int i = 2000; i <= 2500; i++) {
		if (i%400==0|| i % 4 == 0 && i % 100 != 0) {//能被400整除或能被4整除并且不能被100整除的数为闰年
			printf("闰年的年份:%d\n", i);
			continue;
		}
		else
		{
			printf("不是闰年的年份:%d\n", i);
		}

	}
}

四、判断一个数是否能被3和5整除

#include <stdio.h>
main() {
	int a, b;
	printf("请输入一个数:");
	scanf("%d", &a);
	if (a % 3 == 0 && a % 5 == 0) {
		printf("能被3和5整除,这个数是:%d", a);
	}
	else
	{
		printf("不能被3和5整除,这个数是:%d", a);
	}
}

五、求1+2+3+4.....100的和

//求1+2+3+4.....100
#include <stdio.h>

main() {
	int i, a=0;
	for (i = 1; i <= 100; i++) {

		a=a+ i;
		printf("1+100的和为:%d\n", a);
	}


}

六、求两个数m和n的最大公约数

#include<stdio.h>
main() {
	int m, n;
	printf("输入两个数:");
	scanf("m=%d,n=%d", &m,&n);
	for (int a = n; a>=1;) { //将输入的n值赋值给a,这个值必须是大于等于1的
		printf("a=%d", a);//输出一下 这个a值有没有被赋值
		if (m % a == 0 && n %  a== 0) { //如果输入的m值可以整除这个a 并且 输入的n值也可以整除这个a
			printf("公因数为:%d",a);//那么这个就是公因数
			break;
		}
		else
		{
			printf("不是公因数,该数为:%d",a);
			break;
		}
	}


}

七、依次输入10个数,求出之中的最大数

//依次输入10个数,求出之中的最大数
#include <stdio.h>


main() {
	int b[10] = {0};
	int a;
	int max;
	int i;
	for (i = 0; i < 10; i++)
	{
		printf("请输入你的第%d个数:", i);
		scanf("%d", &b[i]);
	}
	max = b[0];
	for ( i = 0; i <10; i++)
	{
		if (max < b[i]) {
			max = b[i];
			a = i + 1;
		}
	}
	printf("最大值:max=%d\n", max);
	printf("最大值的下标:%d", a);

	


}

八、输入十进制,转换相应的二进制

//输入十进制,转换相应的二进制
#include <stdio.h>

main() {
	int x, y, i, a[8], j, u, v;
	printf("请输入十进制数字:");
	scanf("%d", &x);
	y = x; i = 0;
	do {
		u = y / 2;
		a[i] = y % 2;
		i++; y = u;
	} while (y >= 1);
	{
		for (j = i - 1; j >= 0; j--)printf("%d", a[j]);

	}
}

九、输入一个整数n,输出n的逆序

//输入一个整数n,输出n的逆序,例如n=1234,则n的逆序数为4321
#include <stdio.h>
void main()
{
	int m, n;
	scanf_s("%d", &n);
	m = 0;
	while (n)
	{
		//假如输入的n为1245,那么n%10就是把5取出来,然后乘10就是50
		m = m * 10 + n % 10;
		printf("m=%d\n", m);
		//假如输入的n为1245,那么1245除10就是124
		n = n / 10;
		printf("n=%d\n", n);
	}
	printf("m=%d\n", m);

}

十、用switch语句实现简单的计算器

#include <stdio.h>

main() {
	float a, b;
	char op;
	printf("输入你的计算值:");
	scanf("%f%c%f", &a,&op,&b);
	switch (op)
	{
	case'+':printf("%f+%f=%f", a, b, a + b); break;
	case '-':printf("%f+%f=%f", a, b, a - b); break;
	case '*':printf("%f*%f=%f", a, b, a * b); break;
	case '/':if (b != 0)
				printf("%f/%f=%f", a, b, a / b);
			else 
				printf("除法输入错误"); 
			break;
	default:printf("输入错误");
		break;
	}

}

十一、三条边是否可以构成三角形(两边之和需大于第三边)

#include<stdio.h>	//标准输入输出头文件
#include<math.h>	//需用数学公式sqrt【平方根计算】
void main()
{
	float a, b, c, p;	//边长和面积可为小数
	double S;
	printf("请输入三边长度:\n");	//每次输入以Enter键结束
	scanf("%f %f %f", &a, &b, &c);	//输入变量
	if (a + b > c && b + c > a && a + c > b)		//判断任意两边之和是否大于第三边
	{
		p = (a + b + c) / 2;
		S = sqrt(p * (p - a) * (p - b) * (p - c));	//sqrt开平方,计算面积
		printf("此三角形面积为:%7.2f\n", S);		//宽度为7,其中.2表示小数点后保留2位
	}
	else
	{
		printf("您输入的三边不构成三角形!\n");
	}
}

十二、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

#include<stdio.h>
main() {
	int a,b,c,d=0;
	for (a = 1; a < 5; a++) {
		for (b = 1; b < 5; b++) {
			for (c = 1; c < 5; c++) {
				if (a != b && b != c && a != c) {
					d = d++;
					printf("组成%d个", d);
					printf("number=%d%d%d\n", a, b, c);

				}
			}
		}
	}




}

十三、一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

#include<stdio.h>
#include<math.h>
main() {
	int x=0, y=0, i;
	for (i = 10; i <= 2000; i++) {
		x = sqrt(i + 100);
		y = sqrt(i + 268);
		if (x * x == i + 100 && y * y == i+268) {
			printf("该数是:%d\n", i);
		}
	}
}

十四、用*号输出字母C的图案。

#include <stdio.h>
main() {

	for (int i = 0; i < 10; i++) {
		printf("*");
	}
	for (int c = 0; c < 10; c++) {
		printf("\n*");
	}
	for (int a = 0; a < 1; a++) {
		printf("\n");
	}
	for (int b = 0; b < 10; b++) {
		printf("*");
	}

}

十五、接收键盘输入整数生成一个 4X4 矩阵,求其左下三角的元素的和。

#include<stdio.h>
#define M 4
#define N 4
main() {
	int a[M][N],sum=0;
	for (int i = 0; i < M; i++) {
		for (int j = 0; j < N; j++) {
			printf("请输入4*4(16)矩阵:\n");
			scanf("%d", &a[i][j]);
		}
	}
	printf("\n");
	for (int i = 0; i < M; i++) {
		for (int j = 0; j <N; j++) {
			printf("%d\t", a[i][j]);
			if (j<=i || i==j) {
				sum += a[i][j];
			}
		}
		printf("\n");
	}
	printf("左下三角和为:%d", sum);
	
}

十六、用 5 行 3 列的二维数组存储 5 名学生 3 门课程的考试成绩,计算每名学生的平均成绩。

#define H 5
#define L 3
#include<stdio.h>
main() {
	int a[H][L],b=0,sum=0;
	float avg;
	for (int i = 0; i < H; i++) {
		b += 1;
		printf("\n第%d个同学:\n", b);
		for (int j = 0; j < L; j++) {
			printf("请输入三门课的成绩:\n");
			scanf("%d", &a[i][j]);
		}
	}
	for (int i = 0; i < H; i++) {
		for (int j = 0; j < L; j++) {
			printf("\na[i][j]=%d\n", a[i][j]);
			if (b += 1) {
				sum = sum + a[i][j];
				avg = sum / 3;
			}
		}
	}
	printf("学生的总成绩:%d\n", sum);
	printf("每名学生的平均成绩:%f", avg);

十七、将一个数组中能被 3 整除的数放到另一个数组中

#define N 10
#include<stdio.h>
main() {
	int a [N],b[N];
	for (int i = 0; i < N; i++) {
		printf("请输入数组:");
		scanf("%d", &a[i]);
	}
	for (int i = 0; i < N; i++) {
		if (a[i] % 3 == 0) {
			b[i] = a[i];
		}
		if (a[i] % 3 != 0) {
			b[i] = 0;
		}
		printf("b[i]=%d\n", b[i]);
	}

十八、随机产生若干个 10 以内的自然数存储在数组中,删除其中重复的元素,输出原数组与新数组。

#include<stdio.h>
#include<time.h>
#define N 11
#include<stdlib.h>
main() {
	int a[N];
	srand((time(0)));
	for (int i = 0; i < N; i++) {
		a[i] = rand() % 11;
		printf("旧数组:%d\n", a[i]);
	}
	printf("\n");
	for (int i = 0; i < N; i++) {
		for (int j = i + 1; j < N; j++) {
			if (a[j] == a[i] && a[j] != -1) {
				a[j] =- 1;
			}
		}
		if (a[i] != -1) {
			printf("新数组:%d\n", a[i]);
		}
	}
}

十九、有两个红球、三个黄球、四个白球,任意取四个球,其中必须有一个红球,编程输出所有可能的方案

#include<stdio.h>
main() {
	int red, yellow, white;
	for (red = 1; red <3; red++) {
		for (yellow = 0; yellow < 3; yellow++) {
			for (white = 0; white < 3; white++) {
				if (red + yellow + white == 3) {
					printf("红球:%d 黄球:%d 白球:%d\n", red, yellow, white);
				}
			}
		}
	}
}

二十、编写程序:假设有 13 位评委参与评分工作。计算每位歌手最终得分的方法是:去掉一个最高分和一个最低分,然后计算剩余 11 个分数的平均值,所得结果就是选手的最终得分。

#include<stdio.h>
#define N 13

#include<stdio.h>
int main()
{
	int i, a[N], max, min, sum = 0;
	float aver;
	for (i = 0; i < N; i++) {
		printf("请输入第%d个评分:", i);
		scanf("%d", &a[i]);
		max = min= a[0];

	}
	for (i = 0; i < N; i++) {
		if (a[i] > max) {
			max = a[i];
		}
		if (a[i]<min) {
			min = a[i];
		}
	}
	printf("最大值:%d,最小值:%d", max, min);
	for (i = 0; i < N; i++) {
		sum += a[i];
	}
	sum -= max - min;
	printf("\nsum=%d", sum);
	aver = sum / 11.0;
	printf("\n平均分=%f", aver);


}

  • 16
    点赞
  • 162
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小黄爱吃辣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值