代码编织梦想

CSUC语言期中考试题解析

1.小帅搞的第一件事

给小帅一个字符串,由大写字母构成,每个字母限用一次,请问最多能组成多少个CSU。
本题大致上与考试模拟题虚空之力类似,统计C、S、U中的最小值即可。
见代码:

#include <stdio.h>
int main()
{
	int i;
	int min;
	int x=0,y=0,z=0;
	char a[1000]="\0";
	while(scanf("%s",a)!=EOF)//输入字符串,存入字符数组中
	{
		for(i=0;a[i]!='\0';i++)//对字符数组进行逐个读取
		{
			if(a[i]=='C')//统计C的数量
			{
				x++;
			}
			if(a[i]=='S')//统计S的数量
			{
				y++;
			}
			if(a[i]=='U')//统计U的数量
			{
				z++; 
			} 
		}
		min=x<y?(x<z?x:z):(y<z?y:z);//计算最小值
		printf("%d\n",min);//打印输出
		for(i=0;a[i]!='\0';i++)//对数组进行清空
		{
			a[i]='\0';
		}
		x=y=z=0;//归零
	}
	return 0;//每日好习惯+1
 } 

小帅搞的第二件事

小帅身上有a元b角c分钱,包子需要d元e角f分钱,请问小帅最多能买几个包子?
全都化成单位为分,送分题,懂得都懂
见代码

#include<stdio.h>
int main()
{
	long sum1,sum2;
	int a,b,c,d,e,f;
	while(scanf("%d%d%d%d%d%d",&a,&b,&c,&d,&e,&f)!=EOF)//直接输
	{
		sum1=100*a+10*b+c;
		sum2=100*d+10*e+f;
		printf("%ld\n",sum1/sum2);//直接除
	}
	return 0;//每日好习惯+2
}

小帅搞的第三件事

小帅和小明打算把一个重量为n的西瓜切成两块,他们想要知道,是否至少存在一种切法,使得得到的两块西瓜重量都是偶数,你能否帮他们回答这个问题?
偶数中除了2其他都行,奇数都不行,我只能说懂得都懂,不懂的我也不多说了
见代码:

#include <stdio.h>
int main()
{
	long weight;
	while(scanf("%ld",&weight)!=EOF)//输入重量
	{
		if(weight==2)//特例排除
		{
			printf("NO\n");
		}
		else
		{
			if(weight%2==0)//除了2的偶数都行
			{
				printf("YES\n");
			}
			else//其他的都不行
			{
				printf("NO\n");
			}
		 } 
	}
	return 0;//每日好习惯+3
}

小帅搞的第四件事

编程计算y=f(x)的程序,其中:
y=x*x x<1
y=2x-1 1<=x<10
y=3x-12 x>=10

直接见代码:

#include <stdio.h>
#include <math.h>
int f(int x)//函数体
{
	if(x<1)
	{
		return pow(x,2) ;
	}
	if(x>=1&&x<10)
	{
		return 2*x-1;
	}
	if(x>=10)
	{
		return 3*x-12;
	}
}
int main()//主函数
{
	int x;
	while(scanf("%d",&x)!=EOF)
	{
		printf("%d\n",f(x));//直接代
	}
	return 0;
}

小帅搞的第五件事

小帅用字符输出一个如同样例格式的沙漏的图形。要求如下:

1.用-做上下底
2.用\和/做斜边
3.用*表示沙子
4.上层沙子空一行,其他行填满;下层沙子只有中间一列。
5.上下底的行首无空格,所有行的行末无空格。

好家伙,我直接好家伙!
见代码:

#include <stdio.h>
int main()
{
	int n,x,i,a,b;
	scanf("%d",&n);
	while(n--)//样例的个数
	{
		scanf("%d",&x);
		for(i=1;i<x;i++)
		{
			printf("-");//输入“-”
		}
		printf("\n");//输入沙漏的第一行
		printf("\\");
		for(i=1;i<x-2;i++)//在第一行添加需要的空格
		{
			printf(" ");
		 } 
		 printf("/\n");//第一行结束输入,换行
		 for(i=x/2-2;i>0;i--)//循环输入沙漏上部含沙子的部分
		 {
			for(b=1;b<=x/2-2-i+1;b++)//在前部打印合适的空格
			{
				printf(" ");
			}
		 	printf("\\");
		 	for(a=1;a<=2*i-1;a++)//输入沙子“*”
		 	{
		 		printf("*");
			 }
			 printf("/\n");//结束沙漏上半部分的输入,结束第一部分循环
		 }
		 for(i=x/2-1;i>0;i--)//循环输入沙漏的下半部分
		 {
		 	for(b=i-1;b>0;b--)//同上,在前部打印适量空格
		 	{
		 		printf(" ");
			 }
		 	printf("/");
		 	for(a=1;a<=2*(x/2-i)-1;a++)//循环输入中间部分的沙子和空格
		 	{
		 		if(a==x/2-i)//判定沙漏的中间部分
		 		{
		 			printf("*");
				 }
				 else//不是,则输出空格
				 {
				 	printf(" ");
				 }
			 }
		 	printf("\\");
		 	printf("\n");//换行
		 }
		 for(i=1;i<x;i++)//同沙漏的顶部,接着输出沙漏的底部
		{
			printf("-");
		}
		printf("\n\n");//两次\n表示空一行
	}
	return 0;//每日好习惯+5
}

因为走一步,想一步,该代码的效率并不高,如果有更高效的代码,抱紧大佬的大腿!

小帅搞的第六件事

小帅接到一个任务,就是要找出一个整数n!中末尾到底有多少个0,请你帮帮他。
这题博主这个菜鸟看错了,以为要统计所有的0,然鹅高精度算法博主用的不熟(老菜鸡了),之后才看到是末尾有多少零,我太难了!
借了朋友的几行代码如下:

#include <stdio.h> //数几个5的因子就好 
#include <math.h>
int main()
{
	int n;
	int j;
	while(~scanf("%d",&n))
	{
		j=n/5+n/25+n/125+n/625+n/3125;//只要求n<=10000,5的倍数计算一次,25的倍数计算两次,以此类推
		printf("%d\n",j);
	}
	return 0;
}

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/kuangleizhishang/article/details/111107876

链表的基本操作#周报-爱代码爱编程

链表的基本操作 在说链表之前,我们先说说顺序存储。其中我们最熟悉的一种顺序存储的数据结构就是数组,当我们想要给数组中插入一个元素时,为保证顺序以及其他元素不丢失,我们需要在插入元素后,将后面的元素整体后移。所以容易看出这样有着这两个弊端:第一:我们所需要移动的元素有很多时,会浪费算力。第二:我们必须为数组开足够多的空间,否则会存在溢出风险。 为了避免这

编程打印如图3-5所示的n*n方阵(算法书上的课后习题)-爱代码爱编程

hello!,你们好今天呢,我给大家写的是书上的一道课后习题,因为老师当时布置的,所以也就完成了 个人感觉和书上的例题是很相似的(算法设计与分析第三版82页),几乎没什么大的改变,如果你没有学会呢,估计是上课没有认真听哦!!,看完我的代码,希望你回去再好好看书加油!少年!别停下脚步!具体的思路呢,也和书上的差不多,小白代码,大神勿喷。 好了 咱们上代码

1.3循环单链表之约瑟夫问题-爱代码爱编程

1.3循环单链表之约瑟夫问题 循环单链表 1、与单链表类似,循环单链表也有带头和不带头。循环单链表不为空时,尾结点指针域为头结点。为空时,头指针的指针域指向它本身。 2、带头结点的循环单链表为空的判断条件是head->next==head; 3、有时为了操作方便,循环单链表中只设尾指针。 约瑟夫问题: 有n个人,编号为1----n,围成一

7-1将数组中的数逆序存放-爱代码爱编程

应同学请求,将大一曾经做过的一些作业题目再发出来,因时间有限就不再一一做注释了,在这里只放置题目和代码,寒假的时候会再对每个题目进行详细的注释,并更新一些新的题目 7-1 将数组中的数逆序存放 (20分) 本题要求编写程序,将给定的n个整数存入数组中,将数组中的这n个数逆序存放,再按顺序输出数组中的元素。 输入格式: 输入在第一行中给出一个正整数n(

7-2 选择法排序 (20分)本题要求将给定的n个整数从大到小排序后输出。-爱代码爱编程

7-2 选择法排序 (20分) 本题要求将给定的n个整数从大到小排序后输出。 输入格式: 输入第一行给出一个不超过10的正整数n。第二行给出n个整数,其间以空格分隔。 输出格式: 在一行中输出从大到小有序的数列,相邻数字间有一个空格,行末不得有多余空格。 输入样例: 4 5 1 7 6 输出样例: 7 6 5 1 #include <stdi

7-4 求一批整数中出现最多的个位数字 (20分)-爱代码爱编程

7-4 求一批整数中出现最多的个位数字 (20分) 给定一批整数,分析每个整数的每一位数字,求出现次数最多的个位数字。例如给定3个整数1234、2345、3456,其中出现最多次数的数字是3和4,均出现了3次。 输入格式: 输入在第1行中给出正整数N(≤1000),在第二行中给出N个不超过整型范围的非负整数,数字间以空格分隔。 输出格式: 在一行中按格