Python123 C编程题答案解析

Python123 C编程题答案解析(不定期更新) 不要直接复制,请尝试理解,不懂可以问,发评论区也行,看完点个赞呗

请自行先按https://blog.csdn.net/weixin_43593986/article/details/110384759排除错误
避免遇到错误就手足无措的情况

C(python123)

1、顺序结构

1、求三角形面积

描述
假设三角形的三条边长为a,b和c,从键盘输入三条边的边长(要求在一条scanf()中输入3个值,中间用逗号分隔),求三角形的面积area,‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬
输出保留两位小数
Python123 C编程题答案解析

#include <stdio.h>
#include<math.h>
int main()
{
	float a, b, c,s,area;
	scanf("%f,%f,%f", &a, &b, &c);
	s = 0.5*(a + b + c);
	area = sqrt(s*(s - a)*(s - b)*(s - c));
	printf("area=%.2f", area);
	return 0;
}

    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

2、计算球的体积

根据输入的半径值,计算球的体积。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬
描述
通过键盘输入球的半径,计算球体积,结果保留3位小数;
球体积计算公式:Python123 C编程题答案解析
其中,定义PI=3.1415;

#include <stdio.h>
int main()
{
	float v, r, pi=3.1415;
	scanf("%f", &r);
	v = (4 * pi*r*r*r) / 3;		//注意4/3=1,所以不能先写4/3
	printf("%.3f", v);
	return 0;
}

    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

3、计算圆的周长和面积

描述
输入圆1和圆2的半径(实数类型),按指定格式输出圆1和圆2的周长与面积。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬
公式中圆周率取3.141592‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬
d1后面两个空格is后面3个空格,其余雷同

#include <stdio.h>
int main()
{
	float r1, r2,d1,d2,s1,s2,pi=3.141592;
	scanf("%f%f", &r1, &r2);
	d1 = pi * 2 * r1;
	d2 = pi * 2 * r2;
	s1 = pi * r1 * r1;
	s2 = pi * r2 * r2;
	printf("d1  is   %f\n",d1);			//题目要求空格前2后3
	printf("d2  is   %f\n",d2);
	printf("s1  is   %f\n", s1);
	printf("s2  is   %f", s2);
	return 0;
}

    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

4、整数拆解组合

问题描述:
编程实现通过键盘输入两个两位数的正整数放入变量a和变量b中,拆解量a和变量b中的数,然后合并形成一个新的整数放在变量c中。合并的方式是:将变量a中数的十位和个位数依次放在变量c中数的千位和十位上,变量b中数的十位和个位数依次放在变量c数的个位和百位上。例如,当a中是45,b中是12,那么c中是4251。

#include<stdio.h>
int main()
{
	char a,b,c,d;		//定义4个变量表示两个数的十位和个位
	a=getchar();
	b=getchar();
	getchar();			//getchar吃掉中间的空格
	c=getchar();
	d=getchar();
	printf("c is %c%c%c%c",a,d,b,c);	//按要求顺序输出
	return 0;
}

    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

2、选择结构

1、判断是否3的倍数

问题描述:编程实现,若输入的整数是3的倍数,则显示 “OK!”(其中OK为大写字母,且双引号不输出);
若输入的整数不是3的倍数,则没有任何结果显示。

#include <stdio.h>
int main()
{
	int a;
	scanf("%d", &a);
	a % 3 == 0 ? printf("OK!") : a;
	return 0;
}

    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

2、几位数

描述
编写一个程序,输入一个整数(0-9999之间),请输出它的位数

#include<stdio.h>
#include<string.h>
int main()
{
	char a[10] = { '\0'	};
	gets(a);
	printf("%d", strlen(a));
	return 0;
}

    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

3、大写转小写

描述
输入一个大写字母,输出相应的小写字母‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬

提示:字符型输入输出使用格式控制字符:%c

#include<stdio.h>
int main()
{
	char ch;
	ch=getchar();
	ch = ch + 32;
	printf("%c", ch);
	return 0;
}

    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

4、求三角形面积 (加判断)

描述
假设三角形的三条边长为a,b和c,从键盘输入三条边的边长(要求在一条scanf()中输入3个值,输入时用空格分隔),先判断这三条边是否能构成三角形,如果能则求三角形的面积area并输出,保留两位小数,否则输出 Error!。
Python123 C编程题答案解析

#include <stdio.h>
#include<math.h>
int main()
{
	float a, b, c,s,area;
	scanf("%f %f %f", &a, &b, &c);
	if(a+b>c && b+c>a && a+c>b)
	{
    	s = 0.5*(a + b + c);
    	area = sqrt(s*(s - a)*(s - b)*(s - c));
        printf("%.2f", area); 
	}
	else
	{
	    printf("Error!");
	}
	return 0;
}

    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

5、空气质量状况判定

描述
下表是我国空气质量分级表,请编写程序,由用户输入空气污染指数API值,输出相应的空气质量状况
Python123 C编程题答案解析

#include<stdio.h>

int main()
{
int API = 0;
scanf("%d", &API);
if (API >= 0 && API <= 50)
{
printf(“优”);
return 0;
}
else if (API >= 51 && API <= 100)
{
printf(“良”);
return 0;
}
else if (API >= 11 && API <= 150)
{
printf(“轻微污染”);
return 0;
}
else if (API >=151 && API <=200)
{
printf(“轻度污染”);
return 0;
}
else if (API >=201 && API <= 250)
{
printf(“中度污染”);
return 0;
}
else if (API >= 250 && API <=300)
{
printf(“中度重污染”);
return 0;
}
else if(API >=301)
{
printf(“重污染”);
return 0;
}
else
{
printf(“输入错误”);
return 0;
}

}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48

6、大小写转换

描述
输入一个字母,先进行判断,如果是小写则转换成大写,反之则转换成小写,并输出‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬

提示:字符型输入输出使用格式控制字符:%c,或者用getchar()和putchar()函数

#include<stdio.h>
int main()
{
    char c;
    c=getchar();
    if(c<'a')
    {
        c+=32;
    }
    else
    {
        c-=32;
    }
    putchar(c);
    return 0;
}

   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

7、编程输入年份和月份,输出每个月的天数

编程输入年份和月份,输出每个月的天数(其中闰年二月就输出29天,平年二月输出28天)。如果输入的月份超出12,就输出 Input error!

#include <stdio.h>
int main()
{
	int year, a,month;
	scanf("%d%d", &year,&month);
	if (year % 400 == 0)
		a = 1;
	else
	{
		if (year % 4 == 0 && year % 100 != 0)
			a = 1;
		else
			a = 0;
	}
	switch (month)
	{
	case 1:
	case 3:
	case 5:
	case 7:
	case 8:
	case 10:
	case 12:
		printf("31");
		break;
	case 4:
	case 6:
	case 9:
	case 11:
		printf("30");
		break;
	case 2:
		if (a == 1)
		{
			printf("29");
		}
		else
		{
			printf("28");
		}
		break;
	default:
		printf("Input error!");
		break;
	}
	return 0;
}

   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47

8、5位的回文数

#0035003500360033003000311606745210169
回文数‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬

输入一个5位数,判断它是不是回文数。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬

输入12321 输出YES‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬

输入12345输出NO

#include <stdio.h>
int main()
{
	char a[6] = { '\0' };
	gets(a);
	(a[0] == a[4] && a[1] == a[3]) ? printf("YES") : printf("NO");
	return 0;
}

   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

9、字符类型判断

描述
题目内容: ‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬

从键盘键入任意一个字符,判断该字符是英文字母(不区分大、小写)、数字字符还是其它字符。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬

若键入字母,则屏幕显示 It is an English character.;若键入数字则屏幕显示It is a digit character. ;若输入其它字符,则屏幕显示:It is other character.

#include <stdio.h>
int main()
{
	char c;
	c = getchar();
	if (c >= 'A' && c <= 'z')
	{
		printf("It is an English character.");
	}
	else if (c >= '0' && c <= '9')
	{
		printf("It is a digit character.");
	}
	else
	{
		printf("It is other character.");
	}
	return 0;
}

   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

10、求一元二次方程的根

描述
‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬Python123 C编程题答案解析
注意:a、b、c三个变量由一条输入语句输入,中间用逗号分隔,先判断是否有实根,如果有则计算并输出,否则输出:No Real Root!‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬
Python123 C编程题答案解析

#include <stdio.h>
#include<math.h>
int main()
{
	float a, b, c,x1,x2;
	scanf("%f,%f,%f", &a, &b, &c);
	if (b*b > 4 * a *c)
	{
		x1 = (-b + sqrt(b*b - 4 * a *c))/(2*a);
		x2 = (-b - sqrt(b*b - 4 * a *c)) / (2 * a);
		printf("x1=%.2f\nx2=%.2f", x1, x2);
	}
	else if (b*b == 4 * a *c)
	{
		x1 = -b / (2 * a);
		x2 = x1;
		printf("x1=%.2f\nx2=%.2f", x1, x2);
	}
	else
	{
		printf("No Real Root!");
	}
	return 0;
}

   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

11、输入三个整数,排序后输出

要求:‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬

通过键盘输入三个整数(在键盘上输入这三个数时用空格间隔),利用简单形式if语句设计算法,将这三个数按照从小到大顺序排序后输出。(输出时,这三个数中间用空格间隔)

#include<stdio.h>
int main()
{
	int a, b, c,t,max,min,middle=0;
	scanf("%d%d%d", &a, &b, &c);
	max = a; min = a;
	if (max < b)
		max = b;
	if (max < c)
		max = c;
	if (min > b)
		min = b;
	if (min > c)
		min = c;
	if (a > min && a < max)
		middle = a;
	if (b > min && b < max)
		middle = b;
	if (c > min && c < max)
		middle = c;
	printf("%d %d %d", min,middle, max);
	return 0;
}

   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

12、求解简单的四则运算(switch)

[问题描述]利用switch语句编程设计一个简单的计算器程序,要求根据用户从键盘输入表达式包括:两个操作数(double类型)和一个运算符;然后依据指定运算符包括加(+)、减(-)、乘(*)、除(/),计算四则运算的结果。
说明:‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬

1、可以包含+、-、*和/四种运算,如果用户输入其它运算符,输出:“DataError!”,当用户输入除法算式时,先判断除数是否为零,不为零输出计算结果,为零输出“DataError!”

#include <stdio.h>
#include<math.h>
int main()
{
	double a, b, result;
	char c;
	scanf("%lf%c%lf",&a,&c,&b);
	switch (c)
	{
	case '+':
		result = a + b;
		break;
	case '-':
		result = a - b;
		break;
	case '*':
		result = a * b;
		break;
	case '/':
		if (b !=0)
		{
			result = a / b;
		}
		else
		{
			printf("DataError!");
			return 0;
		}
		break;
	default:
		printf("DataError!");
		return 0;
	}
	printf("%.2lf", result);
	return 0;
}

   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36

13、简单的猜数游戏

描述
事先由计算机指定一个正整数,computer_num=65,然后让用户猜,如果用户输入等于此数,输出“Right”,如果大于此数,输出“Big”,小于输出“Small”

#include <stdio.h>
#include<math.h>
int main()
{
	int n;
	scanf("%d", &n);
	if (n > 65)
	{
		printf("Big");
	}
	else if(n == 65)
	{
		printf("Right");
	}
	else
	{
		printf("Small");
	}
	return 0;
}

   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

14、温度自动转换

输入一个温度,用C或者F结尾,如果是C结尾,则将温度转换为华氏温度,如果是F结尾,则将温度转换为摄氏温度,结果保留2为小数,如果结尾是其他字符,输入“Error!”。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬

华氏温度转摄氏温度 公式为 C=5(F-32)/9 ‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬

摄氏温度转华氏温度 公式为 F=C*1.8+32

#include<stdio.h>

int main()
{
char ch;
float C=0, F=0,t=0;
scanf("%f%c", &t, &ch);

<span class="token keyword">if</span> <span class="token punctuation">(</span>ch <span class="token operator">==</span> <span class="token string">'C'</span><span class="token punctuation">)</span>
<span class="token punctuation">{<!-- --></span>
	F <span class="token operator">=</span> t <span class="token operator">*</span> <span class="token number">1.8</span> <span class="token operator">+</span> <span class="token number">32</span><span class="token punctuation">;</span>
	<span class="token function">printf</span><span class="token punctuation">(</span><span class="token string">"%.2fF"</span><span class="token punctuation">,</span> F<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token keyword">else</span> <span class="token keyword">if</span><span class="token punctuation">(</span>ch <span class="token operator">==</span> <span class="token string">'F'</span><span class="token punctuation">)</span>
<span class="token punctuation">{<!-- --></span>
	C <span class="token operator">=</span> <span class="token number">5</span><span class="token operator">*</span><span class="token punctuation">(</span>t <span class="token operator">-</span> <span class="token number">32</span><span class="token punctuation">)</span> <span class="token operator">/</span> <span class="token number">9</span><span class="token punctuation">;</span>
	<span class="token function">printf</span><span class="token punctuation">(</span><span class="token string">"%.2fC"</span><span class="token punctuation">,</span> C<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token keyword">else</span>
<span class="token punctuation">{<!-- --></span>
	<span class="token function">printf</span><span class="token punctuation">(</span><span class="token string">"Error!"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token keyword">return</span> <span class="token number">0</span><span class="token punctuation">;</span>

}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

15、第几天

编写一道程序,输入三个正整数,表示某年某月某日,判断这一天是这一年的第几天?‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬
输入2013 7 12 输出193‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬
输入2012 5 15 输出136

#include <stdio.h>
int getdays(int year, int month);
int main()
{
	int sum=0, day, year, month,i;
	scanf("%d %d %d", &year, &month, &day);
	for (i = 1; i < month; i++)				//循环到前一个月
	{
		sum = sum + getdays(year, i);
	}
	sum = sum + day;						//加上本月天数
	printf("%d", sum);
	return 0;
}
int getdays(int year, int month)			//根据年月返回对应天数
{
	int a,day;
	if (year % 400 == 0)
		a = 1;
	else
	{
		if (year % 4 == 0 && year % 100 != 0)
			a = 1;
		else
			a = 0;
	}
	switch (month)
	{
	case 1:
	case 3:
	case 5:
	case 7:
	case 8:
	case 10:
	case 12:
		day = 31;
		break;
	case 4:
	case 6:
	case 9:
	case 11:
		day = 30;
		break;
	case 2:
		if (a == 1)
		{
			day = 29;
		}
		else
		{
			day = 28;
		}
		break;
	default:
		printf("Input error!");
		break;
	}
	return day;
}

    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59

16、中英文数字

描述‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬

输入一个两位数,输出该数的英文单词

#include<stdio.h>

int main()
{
int num = 0,a,b;
scanf("%d", &num);
if (num >= 10 && num <=19)
{
switch (num)
{
case 10:
printf(“ten”);
break;
case 11:
printf(“eleven”);
break;
case 12:
printf(“twelve”);
break;
case 13:
printf(“thirteen”);
break;
case 14:
printf(“fourteen”);
break;
case 15:
printf(“fifteen”);
break;
case 16:
printf(“sixteen”);
break;
case 17:
printf(“seventeen”);
break;
case 18:
printf(“eightteen”);
break;
case 19:
printf(“nineteen”);
break;
}
}
else
{
a = num / 10;
b = num - a*10;
switch (a)
{
case 2:
printf(“twenty”);
break;
case 3:
printf(“thirty”);
break;
case 4:
printf(“forty”);
break;
case 5:
printf(“fifty”);
break;
case 6:
printf(“sixty”);
break;
case 7:
printf(“seventy”);
break;
case 8:
printf(“eighty”);
break;
case 9:
printf(“ninety”);
break;
}
switch (b)
{
case 0:
break;
case 1:
printf("-one");
break;
case 2:
printf("-two");
break;
case 3:
printf("-three");
break;
case 4:
printf("-four");
break;
case 5:
printf("-five");
break;
case 6:
printf("-six");
break;
case 7:
printf("-seven");
break;
case 8:
printf("-eight");
break;
case 9:
printf("-nine");
break;
}
}
return 0;
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108

3、简单循环结构

1、几位数

[问题描述]输入一个整数,判断是几位数?

#include <stdio.h>
int  main()
{
	int count = 0;				//计数,必须初始化为0
	int num = 0;				//输入的数
	scanf("%d", &num);			//不能漏掉&
	while (num != 0)			//循环整除10直到为0
	{							//每次整除10后原数位数会减一
		num /= 10;				//1位数整除10=0
		count++;				//通过整除次数可知原数位数
	}
	printf("%d", count);		
	return 0;
}

     
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

2-1、输出n位整数的后n-1位数

方法一

#include<stdio.h>
#include<math.h>
int  main()
{
	unsigned int w;			
	int count = 0;								//count计数
	int w1,high;								//w1作为w的副本,high表示w最高位的数字
	scanf("%d", &w);
	w1 = w;
	while (w1 != 0)								//判断位数
	{											//原理每次整除10位数会减一
		w1 /= 10;								//判断整除次数即可判断位数
		count++;
	}
	high = w / (pow(10.0, 1.0*count - 1));		//w整除10的(位数-1)次方即是最高位数字
	w = w - high * (pow(10.0, 1.0*count-1));	//w减去(最高位数字乘10的(位数-1)次方)就是剩下的数
	printf("%d", w);
	return 0;
}

     
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

2-2、输出n位整数的后n-1位数

[问题]
w是一个大于10的无符号整数,若w是n(n≥2)位的整数,输出w的后n-1位的数。例如w 值为5923,则输出923;w的值为923,则输出23。无符号整型变量w定义为:unsigned int w; 无符号整型变量对应的格式符为%u 。
方法二

#include<stdio.h>
int main()
{
	unsigned int w;
	char c;
	scanf("%c%u",&c,&w);						//通过%c取出第一位,其余位作为整数赋值给w
	printf("%u",w);
	return 0;
}

     
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

3、判断[a,b]间有多少个闰年

描述
请判断【a,b】年之间(含a年,含b年),共包含多少个闰年,要求输出闰年的个数。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬

闰年的判断条件:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬

能被4整除但不能被100整除,或者能被400整除。

#include <stdio.h>
int  main()
{
	int a, b,i,count=0;
	scanf("%d,%d", &a, &b);
	for ( i = a; i <= b; i++)
	{
		if (i % 4 == 0 && i % 100 != 0 || i % 400 == 0)
		{
			count++;
		}
	}
	printf("%d", count);
	return 0;
}

     
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

4、求出1到1000之内能被7或者11整除、但不能同时被7和11整除的所 有整数的个数

#include<stdio.h>
int main()
{
    int i,count=0;
    for(i=7;i<=994;i++)
    {

if((i%70 ||i%110) && !(i %70 && i % 110))
count++;

<span class="token punctuation">}</span>
<span class="token function">printf</span><span class="token punctuation">(</span><span class="token string">"%d"</span><span class="token punctuation">,</span>count<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">return</span> <span class="token number">0</span><span class="token punctuation">;</span>

}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

5、输出三位数中所有的水仙花数

描述
题目内容:请输出【a,b】之间(含a,含b)所有水仙花数,水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。(例如:1^3 + 5^3+ 3^3 = 153)。

#include<stdio.h>
#include<math.h>
int main()
{
	int num,gw,sw,bw,result;			//bw表示百位....
	int a,b;
	scanf("%d,%d",&a,&b);
	for (num = a; num <= b; num++)
	{
		bw = num / 100;	
		sw = (num - bw * 100) / 10;
		gw = num % 10;
		result = pow(bw, 3) + pow(sw, 3) + pow(gw, 3);
		if(result==num)
		printf("%d\n", num);
	}
	return 0;
}

      
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

6、鸡兔同笼问题

		见循环进阶部分

      
  • 1

7、猴子吃桃

[问题描述]‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬

猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。 第二天早上又将剩下的桃子吃掉一半,又多吃一个。以后每天早上都吃了前一天剩下的一半零一个。 到第N天早上想再吃时,见只剩下一个桃子了。求第一天共摘多少桃子。

#include<stdio.h>
int main()
{
	int n,num=1,i;
	scanf("%d", &n);
	for (i = 1; i < n; i++)
	{
		num = (num + 1) * 2;
	}
	printf("%d", num);
	return 0;
}

      
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

8、求Sn=1!+2!+3!+4!+5!+…+n!的值

#include<stdio.h>
long int jiecheng(int i);
int main()
{
	int n,i;
	float sum = 0;
	scanf("%d", &n);
	for (i = 1; i <= n; i++)
	{
		sum = sum + jiecheng(i);
	}
	printf("%f", sum);
	return 0;
}
long int jiecheng(int i)
{
	int sum=1;
	for (i; i >= 1; i--)
	{
		sum = sum * i;
	}
	return sum;
}

      
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

9、组合数的问题

[问题]
根据以下公式求P的值。m与n为两个正数且要求m>n。例如:m=12,n=8时,运行结果为495.000000。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬
Python123 C编程题答案解析

#include<stdio.h>
int jiecheng(int i);
int main()
{
	int n,i,m;
	float p;
	scanf("%d%d", &m,&n);
	p = 1.0*jiecheng(m) / (jiecheng(n)*jiecheng(m-n));
	printf("%f", p);
	return 0;
}
int jiecheng(int i)
{
	int sum=1;
	for (i; i >= 1; i--)
	{
		sum = sum * i;
	}
	return sum;
}

      
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

10、计算自然常数e的近似值

编写程序,用e≈1+1/1!+1/2!+1/3!+……+1/n!,求e的近似值,n由用户输入。 输出e的值,保留10位小数。 由于int类型的最大值有限,建议使用long int,更准确表示13以上的阶乘数。

#include<stdio.h>
long int jiecheng(int i);
int main()
{
	int n,i,m;
	double e=1;
	scanf("%d", &n);
	for (i = 1; i <= n; i++)
	{
		e = e + (1.0/jiecheng(i));
	}
	printf("%.10lf", e);
	return 0;
}
long int jiecheng(int i)
{
	long int sum=1;
	for (i; i >= 1; i--)
	{
		sum = sum * i;
	}
	return sum;
}

      
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

11、 用格雷格列公式求pi的近似值

用格雷格里公式求pi的近似值,当某一项的绝对值小于10的-6次方时停止
Python123 C编程题答案解析

#include<stdio.h>
#include<math.h>
int main()
{
	int i=1,j=1;
	double x,pi=0;
	do
	{
		x = 1.0 / i;
		if (j % 2 == 0)
		{
			x = -x;
		}
		pi = pi + x;
		i += 2;
		j++;
	} while (fabs(x) >= 1e-6);      //fabs为取绝对值
	pi = pi - x;
	pi *= 4;
	printf("%lf", pi);
	return 0;
}

      
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

12、输出Fibonacci数列小于等于n的项

斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递推的方法定义:F(1)=1,F(2)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 3,n ∈ N*)‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬

编程序输出Fibonacci(斐波那契)数列小于等于n的项,n由用户指定

#include<stdio.h>
int  main()
{
	int a, b, c=0, d,n;
	scanf("%d", &n);
	a = 1; b = 1;
	printf("1 1");
	for (;;)
	{
	c <span class="token operator">=</span> a <span class="token operator">+</span> b<span class="token punctuation">;</span>
	d <span class="token operator">=</span> b <span class="token operator">+</span> c<span class="token punctuation">;</span>
	a <span class="token operator">=</span> c<span class="token punctuation">;</span>
	b <span class="token operator">=</span> d<span class="token punctuation">;</span>
	<span class="token keyword">if</span> <span class="token punctuation">(</span>a <span class="token operator">&lt;=</span> n<span class="token punctuation">)</span>
		<span class="token function">printf</span><span class="token punctuation">(</span><span class="token string">" %d"</span><span class="token punctuation">,</span> a<span class="token punctuation">)</span><span class="token punctuation">;</span>
	<span class="token keyword">if</span> <span class="token punctuation">(</span>b <span class="token operator">&lt;=</span> n<span class="token punctuation">)</span>
		<span class="token function">printf</span><span class="token punctuation">(</span><span class="token string">" %d"</span><span class="token punctuation">,</span> b<span class="token punctuation">)</span><span class="token punctuation">;</span>
	<span class="token keyword">if</span> <span class="token punctuation">(</span>a <span class="token operator">&gt;</span> n <span class="token operator">||</span> b <span class="token operator">&gt;</span> n<span class="token punctuation">)</span>
		<span class="token keyword">break</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token function">printf</span><span class="token punctuation">(</span><span class="token string">" "</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">return</span> <span class="token number">0</span><span class="token punctuation">;</span>

}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

13、累加求和 a+aa+aaa+aa…a

[试题描述]
下面程序的功能是求a+aa+aaa+aa…a(n个a)之和,a和n从键盘输入。例如输入2和3,则计算2+22+222,输出246。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬

[输入说明] a和n的值,类型可以选择 整型或 浮点型;
[输出说明] 累加求和输出的结果建议定义为double类型(结果保留 0位小数);

#include<stdio.h>
#include<math.h>
int  main()
{
	int n, a,i,b,sum=0;
	scanf("%d%d", &a, &n);
	b = a;
	for (i = 1; i < n; i++)
	{
		a = a + b * (pow(10, i));
		sum += a;
	}
	printf("%d", sum+b);
	return 0;
}

       
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

14、0.5次方累加和问题

[描述]计算并输出以下公式的结果。
Python123 C编程题答案解析
例如:从键盘给n输入20后,则输出为s=534.188884。注意:n的值要求大于1但不大于100。

#include<stdio.h>
#include<math.h>
double x(int n);
int main()
{
	int i,n;
	double sum = 0;
	scanf("%d", &n);
	for (i = 1; i <= n; i++)
	{
		sum = sum + x(i);
	}
	printf("%lf", sum);
	return 0;
}
double x(int n)
{
	int i;
	double result=0;
	for (i = 1; i <= n; i++)
	{
		result = result + pow(i, 0.5);
	}
	return result;
}

       
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

15、麦穗问题

[问题描述] 达伊尔麦穗问题:64个棋格,第一个1粒麦穗,第二个2粒麦穗,第三个4粒麦穗,后一个棋格放前一个棋格2倍的麦穗,问共有多少粒麦穗?
[要求] 输出结果用 指数形式(%.4e 或 %.4le ) ,小数部分的小数位 保留 4 位。

#include<stdio.h>
int main()
{
	double x=1;
	double sum = 0;						//2^64次方极大
	int i;
	for (i = 1; i <= 64; i++)
	{
		sum = sum + x;
		x = x * 2;
	}
	printf("%.4le", sum);
	return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

16、统计字符的个数

输入一行字符,分别统计出其中的英文字母、数字、空格和其他字符的个数。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬

提示:空格就是ASCII表里面的SP字符,ASCII码值为32。

#include<stdio.h>
int  main()
{
	char c;
	int english = 0, number = 0, space = 0, other = 0;
	while (1)
	{
		c = getchar();
		if (c == '\n')
		{
			break;
		}
		else if (c >= 'A' & c <= 'Z' || c >= 'a' & c <= 'z')
		{
			english++;
		}
		else if (c >= '0' && c <='9')
		{
			number++;
		}
		else if(c==' ')
		{
			space++;
		}
		else
		{
			other++;
		}
	}
	printf("%d %d %d %d", english, number, space, other);
	return 0;
}

        
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32

17、学生的成绩,统计并输出优秀

编写程序,输入一批学生的成绩,遇0或负数则输入结束,要求统计并输出优秀(大于85)、通过(60~84)和不及格(小于60)的学生人数。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬

#include<stdio.h>
#include<string.h>
int main()
{
	int score[1000] = { -1 };
	int great = 0, pass = 0, fail = 0;
	int i=0;
	do
	{
		scanf("%d", &score[i]);
		if (score[i] > 85)
		{
			great++;
		}
		else if (score[i] >= 60 && score[i] <= 84)
		{
			pass++;
		}
		else if (score[i] > 0 && score[i] <= 59)
		{
			fail++;
		}
		else
		{
			break;
		}
	} while (1);
	printf(">=85:%d\n60-84:%d\n<60:%d", great, pass, fail);
	return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

18、体操比赛打分

假定某一大型比赛中有10">; } int sum(int n) { int i,sum=0; for (i = 1; i <= n; i++) { sum += i; } return sum; }

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

21、求一个正整数的因子和

从键盘输入一个正整数,求它的所有因子的和,例如输入6,它的因子有1、2和3,所有因子的和为6

#include<stdio.h>
int main()
{
	int n,i;
	int sum = 0;
	scanf("%d", &n);
	for (i = 1; i < n; i++)
	{
		if (n%i == 0)
		{
			sum += i;
		}
	}
	printf("%d", sum);
	return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

22、求最大公约数,最小公倍数

输入两个正整数m和n,求其最大公约数和最小公倍数。

#include<stdio.h>
int main()
{
	int m,n,t,max,min=0,i,s;
	scanf("%d%d", &m, &n);
	if (m > n)
	{
		t = m;
		m = n;
		n = t;
	}
	for (i = 1; i <= m*n; i++)
	{
		if (m % i == 0 && n % i == 0)
		{
			max = i;
		}
		if (i % m == 0 && i % n == 0 && min==0)
		{
			min = i;
		}
	}
	printf("%d %d", max, min);
	return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

4、循环进阶

1、换硬币问题

将一笔零钱(大于8分,小于1元,精确到分)换成5分、2分和1分的硬币,要求每种硬币至少有一枚。输入金额,问有几种换法?‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬

注意:1分后面没有等号!!!!!

#include<stdio.h>
int main()
{
	float amount = 0;
	int coin_5, coin_2, coin_1;							//顾名思义
	scanf("%f", &amount);
	for (coin_5 = 1; coin_5 <= 19; coin_5++)			//因为每种至少一个且总数小于100分,所以coin_5最多19个
	{													//因为先输出5分1个,所以放外循环
		for (coin_2 = 1; coin_2 <= 47; coin_2++)		//2分最多47个
		{
			for (coin_1 = 1; coin_1 <= 94; coin_1++)	//1分最多94个
			{
				if (coin_1 * 1 + coin_2 * 2 + coin_5 * 5 == amount * 100)	
														//amount*100将元转化为分
				{
					printf("5分=%d个,2分=%d个,1分%d个\n", coin_5, coin_2, coin_1);
				}
			}
		}
	}
	return 0;
}

            
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

2、鸡兔同笼问题

大约在1500年前,《孙子算经》中记载了这个有趣的问题:‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬

今有鸡兔同笼,上有35个头,下有94只足,请问鸡和兔各有几只?‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬

请编程序计算,将结果输出。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬

#include<stdio.h>
int main()
{
	int x, y,n;	        		//设鸡x只,兔子y只,共n只
	n=35;						
	y = 1;						//一个从1开始++
	x = n - y;					//另一个从n-1开始--
	while (1)					//穷举法
	{
		if (2 * x + 4 * y == 94)
		{
			printf("鸡=%d只,兔=%d只",x,y);
			break;
		}
		else
		{
			x--;
			y++;
		}
	}
	return 0;
}

            
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

3、九九乘法表

利用双重循环输出九九乘法表,如下图所示,两列之间用转义字符’\t’对齐:
Python123 C编程题答案解析

#include<stdio.h>
int main()
{
	int i, j;
	for (i = 1; i <= 9; i++)
	{
		for (j = 1; j <= i; j++)
		{
			printf("%d*%d=%d\t", j,i,i*j);
		}
		printf("\n");
	}
	return 0;
}

            
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

4、输出素数

描述
输出1~n之间的所有素数,每行输出5个,用转义字符‘\t’对齐

#include<stdio.h>
int isprime(int x);
int main()
{
	int i, n,count=0,sign;
	scanf("%d", &n);
	for (i = 2; i <= n; i++)
	{
		sign = isprime(i);			//判断是否素数,是返回1,否返回0
		if (sign)
		{
			printf("%d\t", i);
			count++;
			if (count % 5 == 0)		//每五个数输出换行符
			{
				printf("\n");
			}
		}
	}
	return 0;
}
int isprime(int x)
{
	int i;
	for (i = 2; i < x; i++)
	{
		if (x%i == 0)
		{
			return 0;
		}
	}
	return 1;
}

            
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 名裁判同时为一名体操运动员打分,编写一个程序,输入这10名裁判的打分,输出去掉一个最高分和一个最低分后该运动员的平均得分。
    #include<stdio.h>
    int main()
    {
    	float score[10] = { 0 };
    	float max=0,min=0,sum=0;
    	float average = 0;
    	int i=0;
    	scanf("%f", &score[i]);
    	sum = score[0];
    	max = score[0];
    	min = score[0];
    	for (i = 1; i <10; i++)
    	{
    		scanf("%f", &score[i]);
    		if (score[i] > max)
    		{
    			max = score[i];
    		}
    		if (score[i] < min)
    		{
    			min = score[i];
    		}
    		sum = sum + score[i];
    	}
    	sum = sum - max - min;
    	average = sum / 8;
    	printf("%.3f %.3f %.3f", max, min, average);
    	return 0;
    }
    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

19、计算并输出多项式的值

[问题]
计算并输出下列多项式的值!例如:若从键盘给n输入8后,则输出0.662872。
Python123 C编程题答案解析

#include<stdio.h>
#include<math.h>
int main()
{
	int n,i;
	float sum = 0;
	scanf("%d", &n);
	for (i = 1; i <= 2*n; i++)
	{
		sum = sum + pow(-1.0,i+1) / i;
	}
	printf("%f", sum);
	return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

20、累加和倒数之和

[问题描述]根据以下公式计算sum,n的值通过键盘输入。
Python123 C编程题答案解析

#include<stdio.h>
int sum(int i);
int main()
{
	int n,i;
	float result = 0;
	scanf("%d", &n);
	for (i = 1; i <= n; i++)
	{
		result = result + 1.0/sum(i);
	}
	printf("%f", result);
	return 0

}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
上一篇:Scrapy 获取数据的基本使用


下一篇:Python语言程序设计 Python123 测验1: Python基本语法元素