欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

c[day4]

程序员文章站 2022-07-14 18:05:17
...

打印九九口诀表

下面是一个完整的下三角九九囗诀表·
1* 1=1
1* 2=2 2* 2=4
1* 3=3 2* 3=6 3* 3=9
1* 4=4 2* 4=8 3* 4=12 4* 4=16
1* 5=5 2* 5=10 3* 5=15 4* 5=20 5* 5=25
1* 6=6 2* 6=12 3* 6=18 4* 6=24 5* 6=30 6* 6=36
1* 7=7 2* 7=14 3* 7=21 4* 7=28 5* 7=35 6* 7=42 7* 7=49
1* 8=8 2* 8=16 3* 8=24 4* 8=32 5* 8=40 6* 8=48 7* 8=56 8* 8=64
1* 9=9 2* 9=18 3* 9=27 4* 9=36 5* 9=45 6* 9=54 7* 9=63 8* 9=72 9* 9=81
本题要求对任意给定的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,j*i);
			if(j*i<10)
			printf("   ");
			else printf("  ");
			j++;
		}
		printf("\n");
		i++;
		}	
	return 0;
 } 

统计素数并求和

本题要求统计给定整数M 和N 区间内素数的个数并对它们求和。
输入格式
输入在一行中给出2 个正整数M 和N ( 1 < = M < = N< = 500 ) ·
输出格式
在一行中顺序输出M 和N 区间内素数的个数以及它们的和, 数字间以空格分隔·
输入样例
10 31
输出样例·
7 143

#include<stdio.h>

int main()
{
	int m,n;
	scanf("%d %d",&m,&n);
	int cnt=0,sum=0;
		
	if(m==1) m=2;//判断赋值注意= == 
	for(int i=m;i<=n;i++)
	{
		int isprime=1;//注意位置要放在循环里,每次循环值都可能发生改变 
		for(int k=2;k<i;k++){	
			if(i%k==0){
				isprime=0;
				break;}
			}		
		if(isprime){
			cnt++;
			sum+=i;} 
	}
	printf("%d %d",cnt,sum);
	return 0;
 } 

猜数字游戏

猜数字游戏是令系统随机产生一个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
输出样例
Too big
Too small
Too small
Good Guess !

#include<stdio.h>

int main()
{
	int number,n;
	scanf("%d %d",&number,&n);
	int inp;
	int cnt=0;
	int finished=0;//需在循环外定义,循坏依赖其执行 
	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("Lucky You!\n");
			}else if(cnt<=n){
				printf("Good Guess!\n");
			}else {
			printf("Game Over\n");
			}
			finished=1;	 //猜对按照次数else再分可以只写一个finished=1; 
		}		
	}while(!finished);//默认是0,当为1时结束 
	return 0;
 } 

求序列前N 项和

本题要求编写程序,计算序列2 / 1 + 3 / 2 + 5 / 3 + 8 / 5 + …的前N 项之和。注意该序列从第2项起, 每一项的分子是前一项分子与分母的和,分母是前一项的分子。
输入格式:
输入在一行中给出一个正整数N 。
输出格式:
在一行中输出部分和的值,精确到小数点后2位,题目保证计算结果不超双精度范围。
输入样例:
20
输出样例:
32.66

#include<stdio.h>

int main()
{
	int n;
	double divisor=1,dividend=2;//除数,被除数 
	//double为了能储存更多的数 
	scanf("%d",&n);
	double sum=0.0;
	double t;
	
	for(int i=1;i<=n;i++){
		sum+=dividend/divisor;
		t=dividend;	
		dividend+=divisor;
		divisor=t;
	}
	printf("%.2f\n",sum);
	return 0;
 }    

约分最简分式

分数可以表示为" 分子/ 分母“ 的形式。编写一个程序, 要求用户输入一个分数, 然后将其约分为最简分式。最简分式是指分子和分母不具有可以约分的成分了。如6 / 12 可以被约分为1 / 2 。当分子大于分母时, 不需要表达为整数又分数的形式, 即11 / 8 还是11 / 8 ; 而当分子分母相等时, 仍然表达为1 / 1 的分数形式。
输入格式
输入在一行中给出一个分数, 分子和分母中间以斜杠“/ “ 分隔,如: 12 / 34 表示34 分之12 。分子和分母都是正整数( 不包含0 , 如果不清楚正整数的定义的话) 。
提示: 在scanf的格式字符串中加入“/” ,让scanf来处理这个斜杠。
输出格式·
在一行中输出这个分数对应的最简分式, 格式与输入的相同, 即采用" 分子/ 分母“的形式表示分数。如5 / 6 表示6分之5 。
输入样例
60/ 120
输出样例
1/2

#include<stdio.h>

int main()
{
	int divisor=1,dividend=2;//除数,被除数 
	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",dividend/a,divisor/a);
	return 0;
 }       

念数字

输入一个整数, 输出每个数字对应的拼音。当整数为负数时, 先输出"fu" 字。十个数字对应的拼音如下:
0: ling
1: yi
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 n;
	scanf("%d",&n);
	if(n<0){
		printf("fu");
		n=-n;
	}	
	int mask=1;
	int t=n;
	while(t>9){
		mask*=10;
		t/=10;
	}
	do{
		int d=n/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(" ");//只要不是最后一个读音就要输出一个空格 
		n%=mask;
		mask/=10;
	}while(mask>0);
	return 0;

求a 的连续和

输入两个整数a 和n ,a 的范围是[ 0,9 ] , n 的范围是[ 1,8 ] 求数列之和S =a+aa+aaa+…+aaa…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 t=0;
	int sum=0;
	for(int i=1;i<=n;i++)
	{
		t=t*10+a;
		sum+=t;
	}
	printf("%d",sum);
	return 0;
 }         
相关标签: c语言 c语言