c语言程序笔记(1)

C语言笔记(1)——B站翁恺视频
程序框架

#include <stdio.h>
int main()
{
	//printf("hello world!\n");
	return 0;
}

1、变量与常量。
例子1:

#include <stdio.h>
int main()
{
	printf("12+34=%d",12+34);
	return 0;
}

在这里插入图片描述
例子2:找零

#include <stdio.h>
int main()
{
	// 初始化 
	int price = 0;
	int bill = 0;
	//读入金额和票面 
	printf("请输入金额:");
	scanf("%d", &price);
	printf("请输入票面:");
	scanf("%d", &bill);
	//计算找零 
	if ( bill >= price) {
		printf("应该找您:%d\n", bill - price);
	} else {printf("你的钱不够\n");
	}
   	return 0;
}

在这里插入图片描述
例子3:加法

#include <stdio.h>
int main()
{
    int a; 
	int b;	
	printf("请输入两个整数:");
	scanf("%d %d", &a,&b);
	printf("%d + %d=%d\n",a,b,a+b);
	return 0;
}

在这里插入图片描述
2、浮点数。
例子1:

#include <stdio.h>
//int main()
//{
//	printf("请分别输入身高的英尺和英寸,"
//	"如输入\"5 7\"表示5英尺7英寸:");
//   int foot;
//   int inch;
//	scanf("%d %d", &foot,&inch);
//	printf("身高是%f米。\n",
//	((foot + inch / 12.0) * 0.3048));
//	return 0;
//}
int main()
{
	printf("请分别输入身高的英尺和英寸,"
	"如输入\"5 7\"表示5英尺7英寸:");
    double foot;
    double inch;
	scanf("%d %d", &foot,&inch);
	printf("身高是%f米。\n",
	((foot + inch / 12) * 0.3048));
	return 0;
}

计算时间差:

#include <stdio.h>
int main()
{
	int hour1,minute1;
	int hour2,minute2;
	scanf("%d %d", &hour1,&minute1);
	scanf("%d %d", &hour2,&minute2);
	int ih = hour2-hour1;
	int im = minute2-minute1;
	if ( im <0) {
		im = 60 + im;
		ih --;
	} 
	printf("时间差是%d小时%d分。\n",ih,im);
   	return 0;
}

在这里插入图片描述
3、运算符的优先级。
在这里插入图片描述
例子1:求平均数

#include <stdio.h>
int main()
{
	int a,b;
    scanf("%d %d", &a,&b);
    double c = (a+b)/2.0;
	printf("%d和%d的平均数=%f\n", a,b,c);	
	return 0;
}

在这里插入图片描述
4、交换变量。
例子1:

#include <stdio.h>
int main()
{
	int a=5;
	int b=6;
	int t;
	t=a;
	a=b;
	b=t;		
	printf("a=%d,b=%d\n", a,b);	
	return 0;
}

在这里插入图片描述
5、复合运算。
在这里插入图片描述
6、if语句。
例子1:比较两个数的大小。

#include <stdio.h>
int main()
{
	int a,b;
	//输入 
	printf("请输入两个整数:");
	scanf("%d %d", &a,&b);
	//判断 
	int max = 0;
	if ( a >= b) {
		max = a;
	} else {
	max = b;
	}
	//输出 
	printf("大的那个是%d\n", max);
   	return 0;
}

在这里插入图片描述
例子2:计算薪水。

#include <stdio.h>
int main()
{
	//定义变量 
	const double RATE = 8.25;
	const int STANDARD = 40;
	double pay = 0.0;
	int hours;
	//输入 
	printf("请输入工作的小时数:");
	scanf("%d", &hours);
	printf("\n");
    // 判断 
	if ( hours > STANDARD ) 
		pay =STANDARD * RATE +
		(hours-STANDARD) * (RATE * 1.5);
		else
		pay = hours * RATE;
		printf("应付工资:%f\n",pay);
   	return 0;
}

例子3:判断成绩。

#include <stdio.h>
int main()
{
	//定义变量 
	const int PASS = 60;
	int score;
	//输入 
	printf("请输入成绩:");
	scanf("%d", &score);
    // 判断 
	printf("你输入的成绩是%d。\n",score);
	if ( score < PASS ) 
		printf("很遗憾,这个成绩没有及格。");
	else
	 	printf("祝贺你,这个成绩及格了。");
    printf("再见\n");
   	return 0;
}

7、嵌套if语句。
例子1:比较三个数的大小。

#include <stdio.h>
int main()
{
	//定义变量 
	int a,b,c;
	scanf("%d %d %d", &a,&b,&c);
	int max = 0;
	if(a<b){
		if(a>c){
			max = a;
		}else{
			max=c;
		}
	}else{
		if(b>c){
			max=b;
		}else{
			max=c;
		}
	}
	printf("The max is %d\n",max);   
   	return 0;
}

例子2:分段函数。

#include <stdio.h>
int main()
{
	int x,a;
	printf("请输入x值:\n");//提示用语 
	scanf("%d",&x);//输入值的入口 
		a=(x>=0);//满足条件为真“1”,否则为“0”。 
		switch ( a ) 
	{   
		case 0: printf("f(x)=-1\n");break;//有错误 
		case 1: printf("f(x)=%d\n",2*x);break;
		default:
			printf("啊,什么啊?\n");	
	}
//		if(x<0){
//			printf("f(x)=-1\n");
//		}else if(x>0){
//			printf("f(x)=%d\n",2*x);
//		}else
//			printf("f(x)=0\n");	
  	return 0;
}

8、多路分支(switch - case)。
控制表达式:
switch(控制表达式){
case 常量:
语句;

case 常量:
语句;

default :
语句;

}
例子1:

#include <stdio.h>
int main()
{
	int type;
	printf("请输入type值:\n");	  //提示用语 
	scanf("%d",&type);       //输入值的入口 
	switch ( type ) {   //跳转选择判断 
		case 1:
			printf("你好!");
			break;
		case 2:
			printf("早上好");
			break;
		case 3:
			printf("晚上好!");
			break;
		case 4:
			printf("再见!");
			break;
		default:
			printf("啊,什么啊?\n");	
	}
  	return 0;
}

例子2:成绩等级。
(1)

#include <stdio.h>
int main()
{
	int grade;
	printf("请输入成绩(0-100):\n");	  //提示用语 
	scanf("%d",&grade);       //输入值的入口 
	grade/=10;     //余数 
	switch ( grade) {   //跳转选择判断 
		case 10:
		case 9: 
			printf("A");
			break;
		case 8:
			printf("B");
			break;
		case 7:
			printf("C");
			break;
		case 6:
			printf("E");
			break;
		case 5:
		case 4:
		case 2:
		case 1:
		case 0:		
			printf("不及格");
			break;
		default:
			printf("啊,什么啊?\n");	
	}
  	return 0;
}

(2)

#include <stdio.h>
int main()
{
	int score;
	printf("请输入score值:\n");//提示用语 
	scanf("%d",&score);//输入值的入口 
	if(score>=90){
		printf("你的成绩等级为A");
	}else if(score>=80){
		printf("你的成绩等级为B");	
	}else if(score>=70){
		printf("你的成绩等级为C");	
	}else if(score>=60){
		printf("你的成绩等级为D");	
	}else
		printf("你的成绩等级为不及格");
  	return 0;
} 

例子3:月份。

#include <stdio.h>
int main()
{
	int month;	
	printf("请输入月份:\n");	  //提示用语 
	scanf("%d",&month);       //输入值的入口 
	switch ( month ) {   //跳转选择判断 
		case 1: printf("January\n");break;
		case 2: printf("Februaryy\n");break;
		case 3: printf("March\n");break;
		case 4: printf("April\n");break;
		case 5: printf("May\n");break;
		case 6: printf("June\n");break;
		case 7: printf("July\n");break;
		case 8: printf("August\n");break;
		case 9: printf("September\n");break;
		case 10: printf("October\n");break;
		case 11: printf("November\n");break;
		case 12: printf("December\n");break;	
	}
  	return 0;
} 

9、循环while(先判断条件,在进入循环体)
例子1:数位数。

#include <stdio.h>
//算数数的算法
//1、用户输入x;
//2、初始化n为0;
//3、x=x/10,去掉个位;
//4、n++;
//5、如果x》0,回到3;
//6、否则n就是结果。  
int main()
{
	int x;
	int n = 0;  	
	scanf("%d",&x);     
	n++;
	x/=10;
	while(x>0) {// 先判断,后循环体。 
		n++;
		x/=10;
		//printf("x=%d,n=%d\n",x,n);
	} 
	printf("%d\n",n);	
  	return 0;
} 

数位数
10、do while 循环(执行一轮循环体后,判断条件)
do
{
<循环体语句>
}while (<循环条件>);
在这里插入图片描述

#include <stdio.h>
//算数数的算法
//1、用户输入x;
//2、初始化n为0;
//3、x=x/10,去掉个位;
//4、n++;
//5、如果x》0,回到3;
//6、否则n就是结果。 
int main()
{
	int x;
	int n = 0;  	
	scanf("%d",&x);     
	do  //先循环 , 
	{
		x/=10;
		n++;		
	}
	while(x>0) ;
	printf("%d\n",n);	 
//	n++; 
//	x/=10;
//	while(x>0) {// 先判断,后循环体。 
//		n++;
//		x/=10;
//	}   //大括号里是循环体 
//	printf("%d\n",n);	
	return 0;
} 
//while:当条件满足时,不断重复循环体内的语句。 

11、猜数。

#include <stdio.h>
int main()
{
	int number = rand()%100+1;//x/n表示在区间[0,n-1]的整数 
	int count = 0;
	int a = 0;
	printf("我已经想好了一个1到100之间的数。"); 
	do{  //do-while先循环,后判断。 
		printf("猜猜这个1到100之间的数:");
		scanf("%d",&a);
		count ++;
		if (a>number){
			printf("你猜的数大了。");
		}else if(a<number){
			printf("你猜的数小了。");
		}
	}while (a!=number);
	printf("太好了,你用了%d次就猜到了答案。\n",count);	
  	return 0;
}

随机数:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
	srand(time(0));//产生随机数,每次都变化。 
	int a=rand();	
	printf("%d\n",a);			
  	return 0;
}

12、算平均数。
在这里插入图片描述

#include <stdio.h>
int main()
{
	int number;	
	int sum = 0;
	int count = 0;
	scanf("%d",&number);
	while(number !=-1){
		sum+=number;//sum的值加numbeer的值。 
		count ++;
		scanf("%d",&number);
	}
	printf("%f\n",1.0*sum/count); 
  	return 0;
} 

13、整数的分解。
在这里插入图片描述

#include <stdio.h>
int main()
{
	int x;	
	scanf("%d",&x);
	int mask =1;
	int t=x;
	while (t>9){
	t/=10;
	mask*=10;
	}
	printf("x=%d,mask=%d\n",x,mask);
	do{
		int d=x/mask;
		printf("%d",d);
		if(mask>9){
			printf(" ");
		}
		x %= mask;
		mask /=10;
	} while (mask >0);
	printf("\n");
	return 0;
}

在这里插入图片描述
14、整数逆序。

#include <stdio.h>
int main()
{
	int x;	
	scanf("%d",&x);
	int digit;
	int ret = 0;//结果 
	while(x>0){
		digit = x%10;//得到最右边一位数。 
		printf("%d",digit);
		ret = ret*10 + digit;
	//	printf("x=%d,digit=%d,ret=%d\n",x,digit,ret);
		x/=10;//扔掉最右边的一位数。 
	}
		//printf("%d",ret);
	return 0;
}

在这里插入图片描述
15、for循环——阶乘。
在这里插入图片描述
(1)

#include <stdio.h>
int main()
{
	int n;	
	scanf("%d",&n);//输入 

	int fact=1;
	int i= 1; 

	for(i=1;i<=n;i++){
		fact *=i;
	}
	printf("%d!=%d\n",n,fact);
	return 0;
}

在这里插入图片描述
(2)阶乘——倒着。

#include <stdio.h>
int main()
{
	int n;	
	scanf("%d",&n);//输入 

	int fact=1;
	int i= n; 
//	for(i=1;i<=n;i++){
//		fact *=i;
//	}
	for(n=n;n>1;n--){
		fact *=n;
	}
	printf("%d!=%d\n",i,fact);
	return 0;
}
//技巧 
//如果有固定次数,用for
//如果必须执行一次,用do_while
//其他情况用while

//技巧
//如果有固定次数,用for
//如果必须执行一次,用do_while
//其他情况用while
(3)计数循环。

#include <stdio.h>
int main()
{
	int count = 100;
	while(count >= 0) {
		count --;
		printf("%d\n",count);	
	} 
	printf("发射!\n");	
  	return 0;
}

16、素数。

#include <stdio.h>
int main()
{
	int x;	
	scanf("%d",&x);//输入 

	int i= x; 
	int isPrime =1;

	for(i=2;i<x;i++){
		if ( x % i == 0 ){
		isPrime =0;
		break;//continue;
		}
	}
	if(isPrime ==1){
		printf("是素数\n");
	}else{
		printf("不是素数\n");
	}		
	return 0;
}

在这里插入图片描述
在这里插入图片描述
(1)100以内的素数。

#include <stdio.h>
int main()
{
	int x;	
	//scanf("%d",&x);//输入 
	for(x=1;x<=100;x++){
		int i; 
		int isPrime =1;
		for(i=2;i<x;i++){
			if ( x % i == 0 ){
				isPrime =0;
				break;
			}
		}
		if(isPrime ==1){
			printf("%d ",x);
		}
	}	
	return 0;
}

在这里插入图片描述
(2)前50个素数。

#include <stdio.h>
int main()
{
	int x;	
	int cnt =0;
	//scanf("%d",&x);//输入 
	//for(x=1;cnt<50;x++){
	x=1;
	while (cnt<50){	
		int i; 
		int isPrime =1;//x是素数 
		for(i=2;i<x;i++){
			if ( x % i == 0 ){
				isPrime =0;
				break;
			}
		}
		if(isPrime ==1){
			cnt++;
			printf("%d\t ",x);//\t对齐 
			if(cnt%5==0){
				printf("\n");
			}
		} 
		x++;
	}	
	return 0;
}

在这里插入图片描述
17、凑硬币。
(1)

#include <stdio.h>
int main()
{
	int x;	
	int one,two,five;
	//scanf("%d",&x);//输入 
	x=2;
	for(one=1;one<x*10;one++){
		for(two=1;two<x*10/2;two++){
			for(five=1;five<x*10/5;five++){
				if(one+two*2+five*5==x*10){
					printf("可以用%d个1角加%d个2角加%d个5角得到%d元\n",one,two,five,x);
				}
			}
		}	
	}	
	return 0;
}

在这里插入图片描述
(2)

#include <stdio.h>
int main()
{
	int x;	
	int one,two,five;
	int exit=0;
	//scanf("%d",&x);//输入 
	x=2;
	for(one=1;one<x*10;one++){
		for(two=1;two<x*10/2;two++){
			for(five=1;five<x*10/5;five++){
				if(one+two*2+five*5==x*10){
					printf("可以用%d个1角加%d个2角加%d个5角得到%d元\n",one,two,five,x);
					exit=1;
					break;
				}
			}
			if(exit==1) break;
		}
		if(exit==1) break;
	}	
	return 0;
}

在这里插入图片描述
(3)goto

#include <stdio.h>
int main()
{
	int x;	
	int one,two,five;
	int exit=0;
	//scanf("%d",&x);//输入 
	x=2;
	for(one=1;one<x*10;one++){
		for(two=1;two<x*10/2;two++){
			for(five=1;five<x*10/5;five++){
				if(one+two*2+five*5==x*10){
					printf("可以用%d个1角加%d个2角加%d个5角得到%d元\n",one,two,five,x);
					goto out;
				}
			}
		}
	}
out:		
	return 0;
}

在这里插入图片描述
18、前n项求和。
(1)

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

(2)

#include <stdio.h>
int main()
{
	int n;	
	int i;
	double sum=0.0;
	double sign=1.0;
	scanf ("%d",&n);
	for ( i=1; i<=n;i++){//f(n)=1-1/2+1/3-...+1/n。 
		sum += sign/i;
		sign = -sign;
	}
	printf("f(%d)=%f\n",n,sum); 	
//	int n;	
//	int i;
//	double sum=0.0;
//	int sign=1;
//	scanf ("%d",&n);
//	for ( i=1; i<=n;i++){//f(n)=1-1/2+1/3-...+1/n。 
//		sum += sign*1.0/i;
//		sign = -sign;
//	}
//	printf("f(%d)=%f\n",n,sum); 
	return 0;
}

19、求最大公约数。
(1)

#include <stdio.h>
int main()
{
	int a,b;
	int min;	
	scanf("%d %d",&a,&b);
	if(a<b){
		min=a;
	}else{
		min=b;
	}
	int ret=0;
	int i;
	for(i=1;i<min;i++){
		if(a%i==0){
			if(b%i==0){
				ret=i;
			}
		}
	}
	printf("%d和%d的最大公约数是%d。\n",a,b,ret);
	return 0;
}

在这里插入图片描述
(2)辗转相除法。

/*如果b等于0,计算结束,a就是最大公约数;
否则,计算a除以b的余数,让a等于b,而b等于那个余数;
回到第一步。
a   b   t
12  18  12
18  12  6
12  6   0
6   0
*/
#include <stdio.h>
int main()
{
	int a,b;
	int t;	
	scanf("%d %d",&a,&b);
	while(b!=0){
		t=a%b;
		a=b;
		b=t;
		printf("a=%d,\tb=%d,\tt=%d\n",a,b,t);//"\t"对齐符号。 
	}
	printf("acd=%d\n",a);
	return 0;
} 

在这里插入图片描述
20、练习。
(1)正整数集。

/*
求符合给定条件的整数集
给定不超过6的正整数A,考虑从A开始的连续4个数字。请输出所有由他们组成的无重复数字的3位数。
输出格式:输入在一行中给出A。
输出格式:输出满足条件的3位数,要求从小到大,每行6个整数。整数间以空格分隔,但行末不能有多余的空格。
输入样例: 
2
输出样例:
234 235 243 245 253 254
324 325 342 345 352 354
423 425 432 435 452 453
523 524 532 534 542 543 
*/
#include <stdio.h>
int main()
{
	int a;	
	scanf("%d",&a);
	int i,j,k;
	int cnt=0;
	 
	i=a;
	while(i<=a+3) {
		j=a;
		while(j<=a+3){
			k=a;
			while(k<=a+3){
				if(i!=j){
					if(i!=k){
						if(j!=k){
							cnt++;
							printf("%d%d%d",i,j,k);//等价==printf("%d",i*100+j*10+k);
							if(cnt==6){
								printf("\n");
								cnt=0;
							}else{
								printf(" ");
							}
						}
					}
				}
				k++;
			}
			j++;		
		}
		i++;
	 } 
	return 0;
} 

在这里插入图片描述
(2)水仙花数。

/*
水仙花数是指一个N位正整数(N>=3),它的每个位上的数字的N次幂之和等于它本身。
例如:153=1(3)+5(3)+3(3)。
输入格式:输入在一行中给出一个正整数N(3<=N<=7)。
输出格式:按递增顺序输出所有N位水仙花数,每个数字占一行。
输入样例: 
3
输出样例:
153
370
371
407
*/
#include <stdio.h>
int main()
{
	int n;	
	scanf("%d",&n);

	int first =1;
	int i=1;
	while(i<n){
		first *=10;
		i++;
	}
	printf("first=%d\n",first);
	//遍历100-900
	i=first;
	while(i<first*10){
		int t=i;
		int sum=0;
		do{
			int d= t%10;//取个位数。 
			t/=10;//扔掉。
			int p=d;
			int j=1;
			while(j<n){
				p*=d;
				j++;
			}
			sum+=p;
		} while(t>0);
		if(sum==i){
			printf("%d\n",i);
		}
		i++;
	}
	return 0;
} 

在这里插入图片描述
(3)九九乘法口诀。

/*
本题要求对任意给定的1位正整数N,输出从1*1到N*N的部分口诀表。
输入格式:输入在一行中给出一个正整数N(1<=N<=9)。
输出格式:输出下三角N*N部分口诀表,其中等号右边数字占4位、左对齐。
*/
#include <stdio.h>
int main()
{
	int n;	
	scanf("%d",&n);

	int i,j;
	i=1;
	while(i<=n){
		j=1;
		while(j<=i){
			printf("%d*%d=%d",j,i,i*j);
			if(i*j<10){
				printf("   ");
			}else{
				printf("  ");
			}
		j++;
		}
		printf("\n");	
		i++;
	}
	return 0;
} 

在这里插入图片描述
(4)统计素数并求和。

/*
本题要求对统计给定整数M和N区间内素数的个数并对他们求和。
输入格式:输入在一行中给出2个正整数M和N(1<=M<=N<=500)。
输出格式:在一行中顺序输出M和N区间内素数的个数以及他们的和,数字间以空格分隔。 
输入样例: 
10 31
输出样例:
7 143
*/
#include <stdio.h>
int main()
{
	int m,n;
	int i;
	int cnt=0;
	int sum=0;
		
	scanf("%d %d",&m,&n);
	
	if(m==1)
		m=2;
	for(i=m;i<=n;i++){
		int isPrime=1;
		int k;
		for(k=2;k<=i-1;k++){
			if(i%k==0){
				isPrime=0;
				break;
			}
		}
		//判断i是否素数。
		if(isPrime) {
			cnt++;
			sum+=i;
		}
	}
	printf("%d %d\n",cnt,sum);	
	return 0;
} 

在这里插入图片描述
(5)猜数字游戏。

/*
猜数字游戏是令系统随机产生一个100以内的正整数,用户输入一个数对其进行猜测,
需要你编写程序自动对其与随机产生的被猜数进行比较,并提示大了("Too big"),
还是小了("Too small"),相等表示猜到了。如果猜到,则结束程序。
程序还要求统计猜的次数,如果1次猜出该数,提示"Bingo!”;
如果3次以内猜到该数,则提示"Lucky You!";如果超过3次但是在N(>3 )次以内(包括第N次)猜到该数,
则提示Good Guess!";如果超过N次都没有猜到,则提示"Game Over”,并结束程序。
如果在到达N次之前,用户输入了一个负数,也输出"Game over",并结束程序。

输入格式:输入第一行中给出2个不超过100的正整数,分别是系统产生的随机数、以及猜测的最大次数N。
随后每行给出一个用户的输入直到出现负数为止。

输出格式:在一行中输出每次猜测相应的结果,直到输出猜对的结果或"Game Over"则结束。
输入样例: 
58  4
70
50
56
58
60
-2
输出样例:
7 143
*/
#include <stdio.h>
int main()
{
	int number,n;
	int inp;
	int finished=0;
	int cnt=0;
		
	scanf("%d %d",&number,&n);
	do{
		scanf("%d",&inp);
		cnt++;
		if(inp<0){
			printf("Game Over\n");
			finished=1;	
		}else if(inp>number){
			printf("Too big\n");
		}else if(inp<number){
			printf("Too small\n");
		}else{
			if(cnt==1){
				printf("Bingo!\n");	
			}else if(cnt<=3){
				printf("Luchy You!\n");	
			}else{
				printf("Good Guess!\n");
			}
			finished=1;
		}
		if(cnt==n){
			if(!finished){
				printf("Game Over\n");
				finished=1;
			}
		}
	}while(!finished);		
	return 0;
} 

在这里插入图片描述
(6)求序列前N项的和。

/*
本题要求编写程序,计算序列2/1+3/2+5/3+8/5+....的前N项之和。
注意该序列从第2项起,每一项的分子是前一项分子与分母的和,分母是前一项的分子。

输入格式:输入在一行中给出一个正整数N。
输出格式:在一行中输出部分和的值,精确到小数点后2位。
           题目保证计算结果不超过双精度范围。
输入样例: 
20
输出样例:
32.66
*/ 
#include <stdio.h>
int main()
{
	int n;
	double dividend ,divisor;
	double sum = 0.0;
	int i;
	double t;
	
	scanf ( "%d", &n) ;
	// n = 20000;
	dividend = 2;//分子。 
	divisor = 1;//分母。 
	for ( i=1; i<=n; i++ ) {
		sum += dividend/ divisor;
		t = dividend;//暂存数据。 
		dividend = dividend + divisor;
		divisor = t;
	}
	printf( "%f %f\n",dividend,divisor) ;
	printf( "%.2f\n", sum);
	return 0;
} 

在这里插入图片描述
(7)读数字。

/*
2: er
3: san
4: si
5: wu
6: liu
7: qi
8: ba
9: jiu
输入格式:
	输入在一行中给出一个整数,如:1234。
	提示:整数包括负数、零和正数。
输出格式:
	在一行中输出这个整数对应的拼音,每个数字的拼音之间用空格分开,行末没有最后的空格。如yi er san si。
输入样例︰
	-600
输出样例:
	fu liu ling ling
*/ 
#include<stdio.h>
int main()
{
	int x;
	scanf( "%d",&x);
	if ( x<0 ) {
	printf( "fu ");
	x=-x;
	}
	
	int mask = 1;
	int t = x;
	while ( t>9 ) {
		t/= 10;
		mask*=10;
}

	do {
		int d = x / mask;
		switch ( d ) {
		case 0: printf("ling"); break;
		case 1: printf("yi"); break;
		case 2: printf("er"); break;
		case 3: printf("san"); break;
		case 4: printf("si"); break;
		case 5: printf("wu"); break;
		case 6: printf("liu"); break;
		case 7: printf("qi"); break;
		case 8: printf("ba"); break;
		case 9: printf("jiu"); break;
		}
		if ( mask > 9 ) printf(" ");
		x%=mask;
		mask /= 10;
	}while ( mask >0 );
	printf( "\n");
	return 0;
}

在这里插入图片描述
(8)求a的连续和。

/*
输入两个整数a和n,a的范围是[0,9],n的范围是[1,8],求数列之和S = a+aa+aaa...+ aa...a ( n个a )。
如a为2、n为8时输出的是2+22+222+...+22222222的和。
输入格式:
	输入在一行中给出两个整数,先后表示a和n。
输出格式:
	在一行中输出要求的数列之和。
输入样例:
	2 4
输出样例:
	2468
*/
#include<stdio.h>
int main()
{
	int a,n;
	scanf("%d %d", &a,&n);
	int sum = 0;
	int i;
	int t = 0;
	//  0*10+2  2*10+2  (2*10+2)*10+2 
	for ( i=0; i<n; i++ ) {
		t = t*10+a;
		sum += t;
	}
	printf ( "%d\n", sum);
	return 0;
} 

在这里插入图片描述
(9)约分最简分式。

/*
分数可以表示为"分子/分母"的形式。编写一个程序,要求用户输入一个分数,然后将其约分为最简分式。
最简分式是指分子和分母不具有可以约分的成分了。如6/12可以被约分为1/2。
当分子大于分母时,不需要表达为整数又分数的形式,即11/8还是11/8;
而当分子分母相等时,仍然表达为1/1的分数形式。

输入格式:
输入在一行中给出一个分数,分子和分母中间以斜杠""分隔,如∶12/34表示34分之12。
分子和分母都是正整数(不包含0,如果不清楚正整数的定义的话)。
	提示:在scanf的格式字符串中加入""”,让scanf来处理这个斜杠。
输出格式:
在一行中输出这个分数对应的最简分式,格式与输入的相同,
即采用"分子/分母”的形式表示分数。如5/6表示6分之5。
输入样例:
*/ 
#include <stdio.h>
int main( )
{
	int dividend, divisor;
	scanf ( "%d/%d",&dividend, &divisor);
	int a = dividend;
	int b = divisor;
	int t;
	while ( b>0 ) {
	t = a % b;a = b;
	b = t;
	}//辗转相除法。 
	printf ( "%d/%d\n", dividend/a, divisor/a);
	return 0;
	}

在这里插入图片描述
(10)年龄。

#include <stdio.h>
int main()
{
	const int MINOR = 0;
	int age = 0;
	//输入 
	printf("请输入你的年龄:");
	scanf("%d", &age);
	//输出 
	printf("你的年龄是%d岁。\n",age);

	if ( age < MINOR ) {
		printf("年轻时美好的,");
	}
	printf("年龄决定了你的精神世界,好好珍惜吧。\n");
   	return 0;
}

在这里插入图片描述
结束。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/5906.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

图解LeetCode——合并两个有序链表

如果你喜欢这篇文章的话&#xff0c;请给作者点赞关注哟&#xff0c;你的支持是我不断前进的动力&#xff01; 目录 题目描述&#xff1a; 解法&#xff1a; 完整代码&#xff1a; 结果 题目链接&#xff1a;力扣 题目描述&#xff1a; 将两个升序链表合并为一个新的 升序…

2017世界互联网领先成果来了 光量子计算机

演讲者&#xff1a;陆朝阳中国科学技术大学教授 发布了世界上首台超越早期经典计算机的光量子计算机 陆朝阳&#xff1a;很高兴向大家报告中国科学院在量子计算这个领域取得的基础性的研究成果。 我们知道50多年以来摩尔定律一直见证着计算机的更新换代&#xff0c;之前每过18个…

【新2023Q2模拟题JAVA】华为OD机试 - 绘图机器

最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为od机试,独家整理 已参加机试人员的实战技巧本篇题解:绘图机器 题目 绘图机器的绘…

读书笔记-纳瓦尔宝典-2023.04.01

重点 财富 如何构造高价值信息 判断力 何为幸福 启发 最近看了这本书的大部分内容&#xff0c;感悟颇多&#xff0c;及时记录下来。 因为是快速阅读&#xff0c;还未做深入思考和实践&#xff0c;但对总体的内容有一个大致把握&#xff0c;未来会结合行动反复阅读和思考&…

python画爱心代码

前几天在网上看到了一个画爱心的教程&#xff0c;就是在 Python里面画一个爱心&#xff0c;但是我在网上找到的代码不是很好用&#xff0c;所以我就自己写了一遍。 首先我们先创建一个新的 python文件。新建一个 python文件夹&#xff0c;将我们之前的那个 python文件夹复制到这…

蓝桥杯·3月份刷题集训Day03

本篇博客旨在记录自已打卡蓝桥杯3月份刷题集训&#xff0c;同时会有自己的思路及代码解答希望可以给小伙伴一些帮助。本人也是算法小白&#xff0c;水平有限&#xff0c;如果文章中有什么错误之处&#xff0c;希望小伙伴们可以在评论区指出来&#xff0c;共勉&#x1f4aa;。 文…

2021年第十二届蓝桥杯省赛Java B组真题及详细题解

A试题 : ASC【填空题】 本题总分&#xff1a; 5 分 【1、问题描述】 已知大写字母 A 的 ASCII 码为 65&#xff0c;请问大写字母 L 的 ASCII 码是多少&#xff1f; 【2、答案提交】 这是一道结果填空的题&#xff0c;你只需要算出结果后提交即可。本题的结果为一个整数&#…

二十、Javascript API(一)

1. Atomics和SharedArrayBuffer 多个上下文访问 SharedArrayBuffer时&#xff0c;如果同时对缓冲区执行操作&#xff0c;就可能出现资源争用问题。Atomics API 通过强制同一时刻只能对缓冲区执行一个操作&#xff0c;可以让多个上下文安全地读写一个SharedArrayBuffer。 1.1 …

Android HTTP请求方式

1.HttpClient使用流程 基本流程&#xff1a; 2.HttpClient使用示例 1&#xff09;使用HttpClient发送GET请求 直接贴下简单的发送Get请求的代码&#xff1a; public class MainActivity extends Activity implements OnClickListener { private Button btnGet; private WebV…

STM-32:GPIO 输出-点亮LED-流水灯-蜂鸣器

目录一、GPIO1.1GPIO简介1.2GPIO 硬件解析1.2.1保护二极管1.2.2 P-MOS、N-MOS 管1.2.3数据输入输出寄存器1.2.4复用功能输出1.2.5模拟输入输出1.3GPIO 的工作模式1.3.1 输入模式 (模拟/浮空/上拉/下拉)1.3.2 输出模式 (推挽/开漏)1.3.3 复用功能 (推挽/开漏)1.3.4 小结二、GPIO…

ChatGPT将引发大量而普遍的网络安全隐患

ChatGPT是一个基于人工智能的语言生成模型&#xff0c;它可以在任何给定的时间&#xff0c;使用自然语言生成技术&#xff0c;生成文本、对话和文章。它不仅可以被用来编写文本&#xff0c;还可以用来编写语言、生成图像和视频。目前&#xff0c; ChatGPT已广泛应用于语言翻译、…

【数据结构篇】-树(共计两万字,你真的搞懂了它吗)

友情链接&#xff1a;【数据结构与算法】首篇 - 思维导图 - 各部分内容目录 文章目录&#x1f680;树&#x1f6a2;一、树的原理精讲&#xff08;一&#xff09;树的定义&#xff08;二&#xff09;基本术语&#xff08;三&#xff09;树的性质&#x1f6a2;二、树的存储结构&a…

C++ STL:stack和queue的使用和底层实现

目录 一. 什么是stack和deque 二. stack和queue的使用方法 2.1 stack的常用接口 2.2 queue的常用接口 三. stack和queue的底层实现原理 3.1 容器适配器 3.2 deque&#xff08;双端队列&#xff09;的概念及抽象结构 3.3 deque的底层实现结构 3.4 deque的优缺点 —— 为…

try... excpet BaseException(异常处理捕获)

try ...except 是最常见的捕获处理异常的结构&#xff0c;其主要作用是将可能出现问题的代码块用try &#xff1a;包裹起来&#xff0c;不至于出现错误让程序崩溃&#xff0c;无法执行下去常见的try ...excpet 的结构有三种try&#xff1a;pass except BaseException as e &…

Azure SQL基础到实战(2)-部署

目录Azure 上的数据库服务的演变Azure SQL 部署选项Azure 虚拟机上的 SQL ServerIaaS 与PaaS无版本数据库服务SQL 托管实例SQL 数据库弹性数据库池Azure 上的数据库服务的演变 Azure SQL 是 Microsoft 作为 Azure 云计算平台的一部分提供的云数据库产品/服务。 与其他版本的 S…

含光热电站、有机有机朗肯循环、P2G的综合能源优化调度(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

算法---扫雷游戏

题目 让我们一起来玩扫雷游戏&#xff01; 给你一个大小为 m x n 二维字符矩阵 board &#xff0c;表示扫雷游戏的盘面&#xff0c;其中&#xff1a; ‘M’ 代表一个 未挖出的 地雷&#xff0c; ‘E’ 代表一个 未挖出的 空方块&#xff0c; ‘B’ 代表没有相邻&#xff08;…

服务器部署前后端分离项目

服务器部署前后端分离项目 文章目录服务器部署前后端分离项目一、安装环境安装jdk1、在/usr/local目录下创建jdk文件夹&#xff0c;并将jdk安装包放到/usr/local/jdk包下并解压2、配置jdk的环境变量3、进行编译&#xff0c;4、检测是否安装成功安装tomcat1、将tomcat放到/usr/l…

Linux内核模块开发之创建slab内存缓存(kmem_cache_*)

Linux内核模块开发之创建slab内存缓存&#xff08;kmem_cache_*&#xff09;一、创建专用的内存缓存编程接口二、实现步骤三、内存缓存的数据结构四、完整代码示例4.1、源代码4.2、编译和执行一、创建专用的内存缓存编程接口 创建内存缓存 kmem_cache_create。指定内存缓存分配…

软件测试零基础好入门么

零基础学习软件测试不失为一个好的选择&#xff0c;虽然IT行业里对小白最友好的非软件测试莫属了&#xff0c;但是也要看你个人在学习软件测试这件事上面花费了多少的时间和努力了~ 每年毕业季&#xff0c;IT行业依然是比较热门且收入是最高的行业。对于应届毕业生来说想要进入…