代码分享

  • 1.计算余弦距离
  • 2.对字符串的一些处理操作
  • 3.根据数字分等级
  • 4.实现输入度数计算正弦
  • 5.找1,2,3,4不同组合情况
  • 6.求利润
  • 7.找满足条件的数
  • 8.输入日期,判断为该年第几天
  • 9.将3个数排序
  • 10.输出字母“C"
  • 11.输出九九乘法表
  • 12.兔子数学问题
  • 13.找101~200间的素数
  • 14.找水仙花
  • 15.将一个数分解为质因数
  • 16.输入一个数,判断位数,然后逆序输出
  • 17、判断素数
  • 18、打印数字图形
  • 19、


1.计算余弦距离

#include<stdio.h>
#include<math.h>

int main()
{
	float a[10], b[10];
	int i, j, k;
	float sum1 = 0, sum2 = 0, sum3 = 0,sum4=0;
	scanf("%d", &k);
	for (i = 0; i < k; i++)
		scanf("%f", &a[i]);
	for (i = 0; i < k; i++)
		scanf("%f", &b[i]);
	for (i = 0; i < k; i++)
		sum1 += a[i] * b[i];//分子
	for (i = 0; i < k; i++)
	{
		sum2 += a[i] * a[i];
		sum3 += b[i] * b[i];
	}
	sum4 = sqrt(sum2 * sum3);
	printf("%.4f", 1-sum1 / sum4);
}

2.对字符串的一些处理操作

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

void filt(char* w);
void capital(char* w);
void sort(char* w);
void shift(char* w, int m);
void out(char* w);
int main()
{
	char w[80] = { 0 };
	int m = 0;
	gets(w);
	filt(w);
	capital(w);
	sort(w);
	scanf("%d", &m);
	shift(w,m);
	out(w);
}
//滤除非字母
void filt(char* w)
{
	char z[100];
	int i,j,n=0;
	for(i=0,j=0;w[i]!='\0';i++)
		if ((w[i] >= 'A' && w[i] <= 'Z') || (w[i] >= 'a' && w[i] <= 'z'))
		{
			z[j] = w[i];
			j++;
		}
	z[j]='\0';
	strcpy(w, z);
	n=j;
}
//将字符串中字母大写
void capital(char* w)
{
	strcpy(w, strupr(w));
}
//从大到小排序
void sort(char* w)
{
	char t;
	int i,j,n=0;
	for(i=0;w[i]!='\0';i++)
		n++;
	for (i = 1; i< n; i++)
		for (j = 0; j<n-i; j++)
			if (w[j]<w[j+1])
			{
				t = w[j];
				w[j] = w[j + 1];
				w[j + 1] = t;
			}
}
//平移字符
void shift(char* w, int m)
{
	char b[m];
	int i,j=0,n=0;
	for (i = 0; i < m; i++)
	{
		b[j] = w[i];
		j++;
	}
	for (i = 0; i < strlen(w) - m; i++)
		w[i] = w[i + m];
	for (j = 0; j < m; j++)
	{
		w[i] = b[j];
		i++;
	}
	w[i] = '\0';

}
//输出
void out(char* w)
{
	int i,j,n=0;
	for (i = 0; w[i] != '\0'; i++)
		printf("%c", w[i]);
}

3.根据数字分等级

#include<stdio.h>
char Gradling(int R);
int main()
{
	int r;
	scanf("%d", &r);
	printf("%c\n", Gradling(r));
	return 0;
}
char Gradling(int R)
{
	if (R >= 100)					return 'A';
	else if (R >= 90 && R <100)		return 'B';
	else if (R >= 80 && R < 90)		return 'C';
	else							return 'D';
}

4.实现输入度数计算正弦

#include<stdio.h>
#include<math.h>

int main()
{
	float a, b,c=0;
	scanf("%f", &a);
	b=a;
	while(a <= -360 || a >=360)
	{
		if(a>0)			a-=360;
		else            a+=360;
	}
	c=sin(a*3.14159/180);
	printf("sin(%.0f)=%.2f\n", b, c);
}

5.找1,2,3,4不同组合情况

#include<stdio.h>
/*
题目:有 1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
	1.程序分析:可填在百位、十位、个位的数字都是   1、2、3、4。组成所有的排列后再去掉不满足条件的排列。
*/
main()
{
	int i, j, k; printf("\n");
	for (i = 1; i < 5; i++) /*以下为三重循环*/
		for (j = 1; j < 5; j++)
			for (k = 1; k < 5; k++)
				if (i != k && i != j && j != k) /*确保i、j、k 三位互不相同*/
					printf("%d,%d,%d\n", i, j, k);
}

6.求利润

#include<stdio.h>
/*
题目:企业发放的奖金根据利润提成。
	利润(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.程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。
*/
main()
{
	long int i;
	int bonus1, bonus2, bonus4, bonus6, bonus10, bonus;
	scanf("%ld", &i);
	bonus1 = 100000 * 0.1;
	bonus2 = bonus1 + 100000 * 0.75;
	bonus4 = bonus2 + 200000 * 0.5;
	bonus6 = bonus4 + 200000 * 0.3;
	bonus10 = bonus6 + 400000 * 0.15;
	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
		bonus = bonus10 + (i - 1000000) * 0.01; printf("bonus=%d", bonus);
}

7.找满足条件的数

#include<stdio.h>
#include "math.h"
/*
一个整数,它加上 100 后是一个完全平方数,再加上 168   又是一个完全平方数,请问该数是多少?

程序分析:在 10 万以内判断,先将该数加上 100 后再开方,再将该数加上 268 后再开方,
如果开方后的结果满足如下条件,即是结果
*/
main()
{
	long int i, x, y, z;
	for (i = 1; i < 100000; i++)
	{
		x = sqrt(i + 100); /*x 为加上 100 后开方后的结果*/
		y = sqrt(i + 268); /*y 为再加上 168 后开方后的结果*/
		if (x * x == i + 100 && y * y == i + 268)/*如果一个数的平方根的平方等于该数,这说明此数是完全平方数*/
			printf("\n%ld\n", i);
	}
}

8.输入日期,判断为该年第几天

#include<stdio.h>
/*
题目:输入某年某月某日,判断这一天是这一年的第几天?
	1.程序分析:以 3 月 5 日为例,应该先把前两个月的加起来,然后再加上 5 天即本年的第几天,特殊
		情况,闰年且输入月份大于 3 时需考虑多加一天。

*/
main() {
	int day, month, year, sum, leap;
	printf("\nplease input year,month,day(逗号隔开)\n");
	scanf("%d,%d,%d", &year, &month, &day);
	switch (month)/*先计算某月以前月份的总天数*/
	{
	case 1:							sum = 0;						break;
	case 2:							sum = 31;						break;
	case 3:							sum = 59;						break;
	case 4:							sum = 90;						break;
	case 5:							sum = 120;						break;
	case 6:							sum = 151;						break;
	case 7:							sum = 181;						break;
	case 8:							sum = 212;						break;
	case 9:							sum = 243;						break;
	case 10:						sum = 273;						break;
	case 11:						sum = 304;						break;
	case 12:						sum = 334;						break;
	default:						printf("data error");			break;
	}
	sum = sum + day; /*再加上某天的天数*/
	if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0))/*判断是不是闰年*/
		leap = 1; else leap = 0;
	if (leap == 1 && month > 2)/*如果是闰年且月份大于   2,总天数应该加一天*/
		sum++;
	printf("It is the %dth day.", sum);
}

9.将3个数排序

#include<stdio.h>
/*
题目:输入三个整数 x,y,z,请把这三个数由小到大输出。
1.程序分析:我们想办法把最小的数放到 x 上,先将 x 与y 进行比较,如果 x>y 则将 x 与 y 的值进行交换,
然后再用x 与 z 进行比较,如果 x>z 则将x 与 z 的值进行交换,这样能使 x 最小。
*/
main() {
	int x, y, z, t;
	scanf("%d%d%d", &x, &y, &z); if (x > y)
	{
		t = x;
		x = y;
		y = t;
	}
	/*交换x,y 的值*/
	if (x > z)
	{
		t = z;
		z = x;
		x = t;
	}
	/*交换 x,z 的值*/
	if (y > z)
	{
		t = y;
		y = z;
		z = t;
	}/*交换 z,y 的值*/
	printf("small to big: %d %d %d\n", x, y, z);
}

10.输出字母“C"

#include <stdio.h>
/*
题目:用*号输出字母C 的图案。
1.程序分析:可先用'*'号在纸上写出字母C,再分行输出。
*/
main()
{
	printf("Hello C-world!\n");
	printf(" ****\n");
	printf(" *\n");
	printf(" * \n");
	printf(" ****\n");
}

11.输出九九乘法表

#include <stdio.h>
/*
题目:输出 9*9 口诀。
1.程序分析:分行与列考虑,共 9 行 9 列,i 控制行,j 控制列。
*/
main()
{
	int i, j, result;
	printf("\n");
	for (i = 1; i < 10; i++)
	{
		for (j = 1; j < 10; j++)
		{
			result = i * j;
			printf("%d*%d=%-3d", i, j, result);/*-3d 表示左对齐,占 3 位*/
		}
		printf("\n");/*每一行后换行*/
	}
}

12.兔子数学问题

#include <stdio.h>
/*
题目:古典问题:有一对兔子,从出生后第 3   个月起每个月都生一对兔子,小兔
子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
1.程序分析: 兔子的规律为数列 1,1,2,3,5,8,13,21....
*/
main()
{
	long f1, f2; int i;
	f1 = f2 = 1;
	for (i = 1; i <= 20; i++)
	{
		printf("%12ld %12ld", f1, f2);
		if (i % 2 == 0)
			printf("\n");/*控制输出,每行四个*/
		f1 = f1 + f2; /*前两个月加起来赋值给第三个月*/
		f2 = f1 + f2; /*前两个月加起来赋值给第三个月*/
	}
}

13.找101~200间的素数

#include <stdio.h>
#include <math.h>
/*
判断 101-200   之间有多少个素数,并输出所有素数。
1.程序分析:判断素数的方法:用一个数分别去除 2 到 sqrt(这个数),如果能被整除, 则表明此数不是素数,反之是素数。
*/
main()
{
	int m, i, k, h = 0, leap = 1;
	printf("\n");
	for (m = 101; m <= 200; m++)
	{
		k = sqrt(m + 1);
		for (i = 2; i <= k; i++)
			if (m % i == 0)
			{
				leap = 0;
				break;
			}
		if (leap)
		{
			printf("%-4d", m);
			h++;
			if (h % 10 == 0)
				printf("\n");
		}
		leap = 1;
	}
	printf("\nThe total is %d", h);
}

14.找水仙花

#include <stdio.h>
#include <math.h>
/*
题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数
字立方和等于该数 本身。例如:153 是一个“水仙花数”,因为 153=1 的三次方+5 的三次方+3 的三次方。
1.程序分析:利用 for 循环控制 100-999 个数,每个数分解出个位,十位,百位。
*/
main()
{
	int i, j, k, n;
	printf("'water flower'number is:");
	for (n = 100; n < 1000; n++)
	{
		i = n / 100;/*分解出百位*/
		j = n / 10 % 10;/*分解出十位*/
		k = n % 10;/*分解出个位*/
		if (i * 100 + j * 10 + k == i * i * i + j * j * j + k * k * k)
		{
			printf("%-5d", n);
		}
	}
	printf("\n");
}

15.将一个数分解为质因数

#include <stdio.h>
#include <math.h>
/*
题目:将一个正整数分解质因数。例如:输入 90,打印出 90=2*3*3*5。

程序分析:对n    进行分解质因数,应先找到一个最小的质数 k,然后按下述步骤完成:

(1)如果这个质数恰等于   n,则说明分解质因数的过程已经结束,打印出即可。
(2)如果 n<>k,但 n 能被k 整除,则应打印出 k 的值,并用 n 除以k 的商,作为新的正整数你n,
重复执行第一步。
(3)如果 n 不能被 k 整除,则用 k+1 作为k 的值,重复执行第一步。
*/
main()
{
	int n, i;
	printf("\nplease input a number:\n");
	scanf("%d", &n);
	printf("%d=", n);
	for (i = 2; i <= n; i++)
	{
		while (n != i)
		{
			if (n % i == 0)
			{
				printf("%d*", i);
				n = n / i;
			}
			else break;
		}
	}
	printf("%d", n);
}

16.输入一个数,判断位数,然后逆序输出

#include<stdio.h>

int main()
{
	int a, b[5];//a:输入的整数,b:存储a的每一个数字
	int i, j = 1, k = 0;
	scanf("%d", &a);

	//检测输入合法性
	while (a > 100000)
	{
		printf("\n最多5位数,请重新输入:");
		scanf("%d", &a);
	}
	//判断是几位数
	while (a > j)
	{
		j *= 10;
		k++;//存储位数
	}
	printf("\n位数:%d\n\n\n",k);

	//数组初始化
	for (i = 0; i < 5; i++)
		b[i] = -1;//-1相当于结束符
	for (i = 0; i < k; i++)
	{
		if (a / 10 != 0)//a/10得到的是最高位,不为0就说明还不是个位
		{
			b[i] = a % 10;//求余是得到个位,即直接逆序存储
			a /= 10;//去除个位
		}
		else
			b[i] = a;//现在是只有1位了
	}
	//逆序输出
	printf("逆序输出结果:\t");
	for (i = 0; i < k && b[i]!=-1; i++)
		printf("%d ", b[i]);
}

17、判断素数

/*
    第一题解决思想:存在整除就是非素数,反之为素数
*/
#include<stdio.h>
main()
{
	int a,b,i,j;
	int c=0;//初始化为0,默认代表非素数
	printf("请问你想验证几个数?\n");
	scanf("%d",&a);
	for(i=0;i<a;i++)
	{
		printf("\n请输入想要验证的数(>=2):");
		scanf("%d",&b);
		for(j=2;j<b;j++)
		{
			if(b%j==0)
			{
				c=0;
				break;//存在整除,视为非素数,直接退出循环
			}
			else
				c=1;//反之视为素数,继续循环判断
		}
		if(b==2)            			printf("%d是素数\n\n",b);
		else if(c==0 && b!=2)           printf("%d不是素数\n\n",b);
		else                			printf("%d是素数\n\n",b);

		c=0;//更新c为0,表示下一个判断的数,默认为非素数
	}
}

18、打印数字图形

/*
第二题:
	1.先保证循环17次(一次性解决,不采取多循环)
	2.打印的数是几,就打印几次
	3.<=9时,一直递增,之后递减
*/

#include<stdio.h>
main()
{
	int a=0,i,j;
	for(i=0;i<17;i++)
	{
		if(i>8)    a--;
		else        a++;

		for(j=0;j<a;j++)
			printf("%d\t",a);
		printf("\n");
	}
}

python语言属于高级语言吗 c语言代码_python语言属于高级语言吗

19、