一些基础的c语言编程题

转载请标明作者

题目汇总:

1.

2.输入一个正整数,判断这个数是偶数还是奇数,若是偶数进一步判断是不是5的倍数。

3. 输入一个算式,例如6+2,9*3,按照要求运算出结果。要求用if、switch,两种语句各编写一次。

4.
要求用switch语句编写。

5. 编程完成超市打折程序。购物1000元以上,8折;购物500元以上,8.5折;购物300元以上,9折;购物100元以上9.5折;购物100元以下,不打折。根据消费量,计算优惠率及实际应付款。

6. 编程完成1+2+3+4+5+……+100,用当型循环,直到型循环,for三种语句编写。

7. 编程完成:等差数列首项a=10,公差d=5,输出它前50和中,能被4整除的和。三种语句都写一遍。

8. 编写一个功能函数,要求判断一个数是不是质数。

9. 编程完成,输出所有的水仙花数。

10. 输出下三角九九乘法表。

11. 输出实心菱形。

12. 输出空心菱形。

13. 编程实现10个数的冒泡排序。

14. 按照从大到小,实现打擂法(选择)排序。

15.键盘输入5个数,找到最大值,并输出其所在位置。

1.

 见第四题

2. 输入一个正整数,判断这个数是偶数还是奇数,若是偶数进一步判断是不是5的倍数。

#include<stdio.h>
void main()
{
	
	int a;
	printf("请输入一个数:a="); 
	scanf("%d",&a);
	if(a%2==0)
	{
	    printf("a为偶数\n");
	    if(a%5==0)
	        printf("a是5的倍数\n");
	    else
	        printf("a不是5的倍数\n");
	}
	else
	     printf("a为奇数\n");
}

3. 输入一个算式,例如6+2,9*3,按照要求运算出结果。要求用if、switch,两种语句各编写一次。

#include <stdio.h>

void main() {
	float x, z, f;
	char y;
	printf("请输入一个算式:");
	scanf("%f%c%f", &x, &y, &z);
	if (y == '+') {
		f = x + z;
		printf("算式的结果为:%g\n", f);
	} else if (y == '-') {
		f = x - z;
		printf("算式的结果为:%g\n", f);
	} else if (y == '*') {
		f = x * z;
		printf("算式的结果为:%g\n", f);
	} else if (y == '/') {
		if (z == 0) {
			printf("除数不能等于0!");
		} else {
			f = x / z;
			printf("算式的结果为:%g\n", f);
		}
	} else
		printf("输入的算式错误!!!\n");
}
#include<stdio.h>
void main()
{
	float a,s;
	char op;
	printf("请输入一个算式:"); 
	scanf("%f%c%f",&a,&op,&s);
	switch(op)
    {
    	case'+': printf("结果为:%g\n",a+s);break;	
        case'-': printf("结果为:%g\n",a-s); break;
        case'*': printf("结果为:%g\n",a*s); break;
        case'/': 
		{
        	if(s==0)
		      printf("除数不能等于0!");
		    else 
		      printf("结果为:%g\n",a/s);break;	
	     }
		default : 
            printf("输入算式格式错误!!!"); 
	}
}

4.
要求用switch语句编写。

#include <stdio.h>
void main()
{
	float x,y;
	printf("请输入一个数: x="); 
	scanf("%f",&x);
	if(x<0)
	    printf("结果为:y=0   !\n");
	else
	{
		switch((int)x/10)
		{
			case 0: printf("结果为:y=%g",x);break;
			case 1: printf("结果为:y=10");break;
			case 2: printf("结果为:y=%g",-0.5*x+20);break;
			case 3: printf("结果为:y=%g",-0.5*x+20);break;
			default:
				printf("结果为:y=100");	
		}
	}
}

5. 编程完成超市打折程序。购物1000元以上,8折;购物500元以上,8.5折;购物300元以上,9折;购物100元以上9.5折;购物100元以下,不打折。根据消费量,计算优惠率及实际应付款。

#include <stdio.h>

int main() {
	float p, c;
	printf("请输入商品总价\n");
	scanf("%f", &p);
	if (p < 100) {
		c = 1.0;
		printf("总价:%g元,不打折,优惠率为0%%,应付:%g元", p, p * c);
	} else if (p < 300) {
		c = 0.95;
		printf("总价:%g元,打%g折,优惠率为%g%%,应付:%g元", p, c * 10, (1 - c) * 100, p * c);
	} else if (p < 500) {
		c = 0.9;
		printf("总价:%g元,打%g折,优惠率为%g%%,应付:%g元", p, c * 10, (1 - c) * 100, p * c);
	} else if (p < 1000) {
		c = 0.85;
		printf("总价:%g元,打%g折,优惠率为%g%%,应付:%g元", p, c * 10, (p - (p * c)) / p, p * c);
	} else if (p >= 1000) {
		c = 0.80;
		printf("总价:%g元,打%g折,优惠率为%g%%,应付:%g元", p, c * 10, (p - (p * c)) / p, p * c);
	} else
		printf("输入商品总价错误!");
	return (0);
}

6. 编程完成1+2+3+4+5+……+100,用当型循环,直到型循环,for三种语句编写。

#include <stdio.h>

void main() {
	int a, i;
	int sum;
	a = 1;
	sum = 0;
	i = 0;
	while (i < 100) {
		sum = sum + a;
		a++;
		i++;
		if (i == 100) {
			printf("结果为 : %d\n", sum);
		}
	}
}
#include <stdio.h>

int main() {
	int a, i;
	int sum;
	a = 1;
	sum = 0;
	i = 0;
	do {
		sum = sum + a;
		a++;
		i++;
		if (i == 100) {
			printf("结果为 : %d\n", sum);
		}
	} while (i < 100);

	return (0);
}
#include <stdio.h>
void main()
{
	int a;
	int sum;
	sum=0;
	for(a=1;a<=100;a++)
	
		sum=sum+a;
	    //i++;
	printf("结果为 : %d\n",sum);
}

7.编程完成,等差数列首项a=10,公差d=5,输出它前50和中,能被4整除的和。三种语句都写一遍。

#include <stdio.h>

int main() {
	int a, i;
	int sum;
	sum = 0;
	a = 10, i = 0;
	while (i < 50) {
		sum = sum + a;
		if (sum % 4 == 0) {
			printf("sum=%d\n", sum);
		}
		i++, a = a + 5;
	}
}
#include <stdio.h>

int main() {
	int a, i;
	int sum;
	sum = 0;
	a = 10, i = 0;
	do {
		sum = sum + a;
		if (sum % 4 == 0) {
			printf("sum=%d\n", sum);
		}
		i++, a = a + 5;
	} while (i < 50);
}
#include <stdio.h>

int main() {
	int a, i;
	int sum;
	sum = 0;
	for (a = 10, i = 0; i < 50; i++, a = a + 5) {
		sum = sum + a;
		if (sum % 4 == 0)
			printf("sum=%d\n", sum);
	}
}

 

8.编程完成,输入一个数,判断是不是质数。

编写一个功能函数,要求判断一个数是不是质数

#include <stdio.h>

int zhishu(int a) {
	int i;
	for (i = 2; i <= a - 1; i++) {
		if (a % i == 0) {
			break;
		}
	}
	if (i == a) {
		return 1;
	} else {
		return 0;
	}
}

void main() {
	int a;
	printf("请输入一个数\n");
	scanf("%d", &a);

	if (zhishu(a)) {
		printf("%d是一个质数。\n", a);
	} else {
		printf("%d不是一个质数。\n", a);
	}
}

9.编程完成,输出所有的水仙花数。

#include <stdio.h>

int main() {
	int a, b, c;
	int i;
	for ( i = 100; i <= 999; i++) {
		a = i / 100; //百位数
		b = (i / 10) % 10; //十位数
		c = i % 10; //个位数
		if (a * a * a + b * b * b + c * c * c == i)
			printf("%d\n", i);
	}
	return 0;
}

10.输出下三角九九乘法表。

#include <stdio.h>

void main() {
	int i, j, n;
	for (i = 1; i <= 9; i++) {
		for (j = 1; j <= i; j++) {
			printf("%d*%d=%2d  ", i, j, i * j);
		}
		printf("\n");
	}
}

11.输出实心菱形

#include <stdio.h>

void main() {
	int i, j, k, n;
	printf("输入一个奇数n=");
	scanf("%d", &n);

	//画上行
	for (i = 1; i <= n / 2 + 1; i++) {
		for (j = 1; j <= n / 2 + 1 - i; j++) {
			printf(" ");
			//printf("a");
		}
		for (k = 1; k <= (2 * i - 1); k++) {
			printf("*");
		}
		printf("\n");
	}
	//画下行
	for (i = n / 2; i >= 1; i--) {
		for (j = 1; j <= n / 2 + 1 - i; j++) {
			printf(" ");
			//printf("a");
		}
		for (k = 1; k <= (2 * i - 1); k++) {
			printf("*");
		}
		printf("\n");
	}
}

输入的数代表上行的行数

#include <stdio.h>

int main() {
	int i, j, k, n;
	scanf("%d", &n);
	//输出上半菱形
	for (i = 1; i <= n; i++) {
		for (k = 1; k <= n - i; k++)
			printf(" ");
		for (j = 1; j < 2 * i; j++)
			printf("*");
		printf("\n");
	}
	//输出下半菱形
	for (i = n - 1; i >= 1; i--) {
		//i=3,2,1
		for (k = 1; k <= n - i; k++)
			printf(" ");
		for (j = 1; j < 2 * i; j++)
			printf("*");
		printf("\n");
	}
	return 0;
}

12.输出空心菱形

#include <stdio.h>

int main() {
	int i, j, k, N;
	printf("输入一个奇数N=");
	scanf("%d", &N);

	for (i = 0; i < N; i++) {
		for (j = 0; j < N - i - 1; j++) //上下两部分每一行前面的空格数没有变化
			printf(" ");
		printf("*"); //注意这里只打印了一个“*”
		if (0 != i) { //这里判断条件的意思是仅当不是第一行时,后面每行才有第二个“*”需要打印
			for (k = 0; k < 2 * i - 1; k++) { //这里是确定一行中两个“*”之间间隔的空格数
				printf(" ");
			}
			printf("*"); //后面补上一个“*”
		}
		puts(""); //已打印完一行了,换一行继续
	}
	//down
	for (i = N - 2; i >= 0; i--) { //下半部分是上半部分的倒置,试着自己阅读代码思考一下原理吧
		for (j = 0; j < N - i - 1; j++)
			printf(" ");
		printf("*");
		if (0 != i) {
			for (k = 0; k < 2 * i - 1; k++) {
				printf(" ");
			}
			printf("*");
		}
		puts("");
	}

	return 0;
}

13.编程实现10个数的冒泡排序。

#include <stdio.h>
#define  N  10

int main() {

	int i, j, t, a[N];
	printf("input 10 numbers:\n");
	for (i = 0; i < N; i++)
		scanf("%d", &a[i]);
	printf("\n");
	for (i = 0; i < N; i++)
		for (j = 0; j < N - i; j++)
			if (a[j] > a[j + 1]) {
				t = a[j];
				a[j] = a[j + 1];
				a[j + 1] = t;
			}
	printf("the result is:\n");
	for (i = 0; i < N; i++)
		printf("%d ", a[i]);
	printf("\n");
	return 0;

}

14.按照从大到小,实现打擂法(选择)排序。

#include <stdio.h>
#define N 8

int main() {
	int arr[N];
	int i, j, max, tem;
	printf("请输入八个整数:\n");
	for (i = 0; i < N; i++) {
		printf("arr[%d]=", i);
		scanf("%d", &arr[i]);
	}
	printf("\n");

	for (i = 0; i < N - 1; i++) { //注意这边的是N-1,目的是防止j=i+1大于数组的元素个数
		max = i;
		for (j = i + 1; j < N; j++) {
			if (arr[j] > arr[max])
				max = j;
		}
		if (max != i) {
			tem = arr[i];
			arr[i] = arr[max];
			arr[max] = tem;
		}
	}
	printf("从大到小排序,输出为:\n");
	for (i = 0; i < N; i++)
		printf("%5d", arr[i]);
	printf("\n");
	return 0;
}

15.键盘输入5个数,找到最大值,并输出其所在位置。 

#include <stdio.h>

int main() {
	int  a[5], i, max, k ;         //k用来记录最大数的序号
	for (i = 0; i < 5; i++) {
		scanf("%d ", &a[i]);
	}

	max = a[0];
	k = 0;
	for (i = 1; i < 5; i++) {
		if (a[i] > max) {
			max = a[i];
			k = i;                  //记录新擂主的序号
		}
	}
	printf("最大数的序号是: % d\n", k + 1);
	return 0;
}

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值