目录

一.贪吃蛇排行榜代码(有bug仅供参考)

二.python与c语言区别

1.python变量

2.python数据类型

3.python数据类型转换

4.标识符

5.运算符

6.字符串的格式化

7.字符串的拼接

8.input语句

三.奥赛一本通1060 1061 1062 1063 1064 1065 1066 2021 2022 C语言版

1060

【题目描述】

【输入】

【输出】

【输入样例】

【输出样例】

 1061

【题目描述】

【输入】

【输出】

【输入样例】

【输出样例】

1062

【题目描述】

【输入】

【输出】

【输入样例】

【输出样例】

 1063

【题目描述】

【输入】

【输出】

【输入样例】

【输出样例】

 1064

【题目描述】

【输入】

【输出】

【输入样例】

【输出样例】

1065

【题目描述】

【输入】

【输出】

【输入样例】

【输出样例】

1066

【题目描述】

【输入】

【输出】

【输入样例】

【输出样例】

2021

【题目描述】

【输入】

【输出】

【输入样例】

【输出样例】

【提示】

 2022

【题目描述】

【输入】

【输出】

【输入样例】

【输出样例】

【提示】

总结




一.贪吃蛇排行榜代码(有bug仅供参考)

因作者水平有限,打算后面再回来写,c语言写感觉好复杂,看不懂可以去网上搜搜其他的,当然也欢迎大佬来指点迷津

void ReadGrade()
{
	char fr[10];

	int index;
	int i=0;
FILE*fp=fopen("排行榜测试版.txt","r");
if(fp==NULL)
{ 
	fp=fopen("排行榜测试版.txt","w");
	fwrite(&max,sizeof(int),1,fp);
	}

	fseek(fp,0,SEEK_SET);
	fread(fr,1,9,fp);
		
		while(fr[i]!=' '){
				index*=10;
			index+=fr[i]-'0';
			i++;
		}
		max=index;
			fp=NULL;
		fclose(fp);
		}
//	fprintf(fpo,"%d\n", ar[i])

	
	

void WriteGrade()
{
/*	FILE*pf=fopen("贪吃蛇最高得分记录.txt","a");
	if(pf==NULL)
	{
		printf("保存最高得分记录失败\n");
		exit(0);
	}
	fwrite(&grade,sizeof(int),1,pf);
	fclose(pf);
	pf==NULL;
*/
int o=3;
char fy[3]={0};
char fu[3];
//int l=0;
FILE*fp=fopen("排行榜测试版.text","a");


do{
	for(int p=0;p<3;p++){
		fy[p]=grade%10+'0';
	}
}while(grade/=10!=0);//将这次的数据一个个转换为字符 
for(int o=0;o<=2;o++)
{
	fu[o]=fy[2-o];
	
}//逆置 

	fwrite(fu,1,3,fp);//输入到文件里 
	fclose(fp);
	char fr[9];
	int  res[3]={0,0,0};
	int sum=0;
	int index=0;
	char ft[6];
	int l;
	char fi[6]; 
	int h=0;
	char fo[9];
	int g=0;
	
	int f=0;
	
	fopen("排行榜测试版.txt","r");
	if (fp==NULL){
		fopen("排行榜测试版.txt","w");
	}
 	int result=fread(fr,1,9,fp);//取出三个未排序成绩 
	if(result==EOF)
	{
		printf("读取失败");
	}
	for(int i=0;i<9;i++){
		if(fr[i]!=' '){
			res[index]*=10;
			res[index]+=fr[i]-'0';
		}else{
			index++;//和转换为int型 
		}
	}

for(int j=0;j<3;j++){//三个数据 排序 
	for(int k=0;k<3-j;k++){
		if(res[k]<res[k+1]){
			int temp=res[k];
			res[k]=res[k+1];
			res[k+1]=temp;
		}
	}
}

for(int u=0;u<6;u++){

fi[u]=res[h];
u+=1; 
fi[u]=' ';
h++;
}//三个数据每相邻一个添加空格 

for(int r=0;r<2;r++){

if(fi[g]!=' '){
	do{
        fo[f]=(fi[g]%=10);	
        f++;
	}while(fi[g]/=10!=0);
	g++;}
	else {
	f++;
	fo[f]=' ';
    }

}
	fwrite(fo,1,sizeof(fo),fp);

	}


二.python与c语言区别

1.python变量

变量主要和c语言没有多大区别,就是 整数型 浮点数 布尔型 字符串

money=50#不用定义直接起来用,也不用每句后面加引号,'printf'变成‘print’
money=money-10
print("买了冰淇淋花费十元,还剩余",money,"元")

2.python数据类型

name="黑马程序员"
string_a=type(name)#type可以得出括号里的变量是什么类型
print(string_a)

3.python数据类型转换

num_str=str(11)#‘11’本来是整数型,现在把括起来再加个‘str’就会变成字符串型
print(type(num_str),num_str)

4.标识符

标识符与c语言一样在Python里,由字母、数字、下划线组成,但不能以数字开头,不能用关键字

5.运算符

+加法,列表、元组、字符串合并与连接,正号
-减发,集合差集,相反数
*乘法,序列重复
/除
//求整商,若操作数中有实数,其结果为实数形式的整数
%求余数,字符串格式化
**幂运算

6.字符串的格式化

name="牛马程序员"
salary="1w+"
month=12
message="我是%s我每月工资是%s但我每天要工作%d小时"%(name,salary,month)#‘%’表示占一个位置后面要插入一个变量进去‘%s’表示插入的是一个字符串型
print(message)

这个快速很多

name="传智播客"
year=2006
price=19.99
print(f"我是{name},我成立于:{year},我今天的股票价格是{price}")#print(f"")

7.字符串的拼接

name='今晚风很大'
print("今天天气是"+name)#print(""+变量)

8.input语句

name_1=input("请出示你的身份证明")#input相当于scanf
user=input("请告示你的vip等级")
print(f"您好:{name_1},您是尊贵的{user}用户,欢迎您的光临"
)

三.奥赛一本通1060 1061 1062 1063 1064 1065 1066 2021 2022 C语言版

1060

【题目描述】

给出一组样本数据,包含n个浮点数,计算其均值,精确到小数点后4位。

【输入】

输入有两行,第一行包含一个整数n(n小于100),代表样本容量;第二行包含n个绝对值不超过1000的浮点数,代表各个样本数据。

【输出】

输出一行,包含一个浮点数,表示均值,精确到小数点后4位。

【输入样例】

2
1.0 3.0

【输出样例】

2.0000
#include <stdio.h>

int main()
{
float sum=0;
int n;
float a[100];
scanf("%d",&n);
for(int i=0;i<n;i++)
{
	scanf("%f",&a[i]);
 sum+=a[i];
 } 
printf("%.4f",sum/n);

} 

 1061

【题目描述】

读入n(1≤n≤10000)个整数,求它们的和与均值。

【输入】

输入第一行是一个整数n,表示有n个整数。

第2~n+1行每行包含1个整数。每个整数的绝对值均不超过10000。

【输出】

输出一行,先输出和,再输出平均值(保留到小数点后5位),两个数间用单个空格分隔。

【输入样例】

4
344
222
343
222

【输出样例】

 1131 282.75000
#include <stdio.h>

int main(void)
{
	int n,ar[10001];
	double average;
	int i;
	scanf("%d",&n);
	ar[0]=0;//利用数组可以少定义一个sum变量 
	for(i=1;i<=n;i++)
	{
		scanf("%d",&ar[i]);
		ar[0]+=ar[i];
	}
	average=1.0*ar[0]/n;
	printf("%d %.5lf",ar[0],average);
	return 0;
}

1062

【题目描述】

孙老师讲授的《计算概论》这门课期中考试刚刚结束,他想知道考试中取得的最高分数。因为人数比较多,他觉得这件事情交给计算机来做比较方便。你能帮孙老师解决这个问题吗?

【输入】

输入两行,第一行为整数n(1 <= n < 100),表示参加这次考试的人数.第二行是这n个学生的成绩,相邻两个数之间用单个空格隔开。所有成绩均为0到100之间的整数。

【输出】

输出一个整数,即最高的成绩。

【输入样例】

5
85 78 90 99 60

【输出样例】

99
#include <stdio.h>

int main(void)
{

	
	int n,a[101];
	int i;
	scanf("%d",&n);
	a[0]=0;//存最大值 
	for(i=1;i<=n;i++){
		scanf("%d",&a[i]);
		if(a[i]>a[0]){
			a[0]=a[i];
		}
	}
	printf("%d",a[0]);
}

 1063

【题目描述】

给定一个长度为n的非负整数序列,请计算序列的最大跨度值(最大跨度值 = 最大值减去最小值)。

【输入】

一共2行,第一行为序列的个数n(1 <= n <= 1000),第二行为序列的n个不超过1000的非负整数,整数之间以一个空格分隔。

【输出】

输出一行,表示序列的最大跨度值。

【输入样例】

6
3 0 8 7 5 9

【输出样例】

9
#include <stdio.h>

int main()
{
int n,a[1000];
int min=9999,max=0;//初始最大值和最小值 
int i;
scanf("%d",&n);
for(i=0;i<n;i++){
	scanf("%d",&a[i]);
	if(a[i]>max){
		max=a[i];
	}
	if(a[i]<min){
		min=a[i];
	}
}
printf("%d",max-min);
}

 1064

【题目描述】

2008年北京奥运会,A国的运动员参与了n天的决赛项目(1≤n≤17)。现在要统计一下A国所获得的金、银、铜牌数目及总奖牌数。输入第1行是A国参与决赛项目的天数n,其后n行,每一行是该国某一天获得的金、银、铜牌数目。输出4个整数,为A国所获得的金、银、铜牌总数及总奖牌数。

【输入】

输入n+1行,第1行是A国参与决赛项目的天数n,其后n行,每一行是该国某一天获得的金、银、铜牌数目,以一个空格分开。

【输出】

输出1行,包括4个整数,为A国所获得的金、银、铜牌总数及总奖牌数,以一个空格分开。

【输入样例】

3
1 0 3
3 1 0
0 3 0

【输出样例】

4 4 3 11

第一个是我尝试用结构体数组写的比较复杂,第二个是用到二维数组

/*#include01<stdio.h>

	struct Grade
	{
		int glode;
		int ying;
		int tone;
	}grade[3];
	

int main()

{
	int sum=0;
	grade[0].glode=0;
	grade[0].ying=0;
	grade[0].tone=0;
	int n;
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
		scanf("%d",&grade[i].glode);
		scanf("%d",&grade[i].ying);
		scanf("%d",&grade[i].tone);
	grade[0].glode+=grade[i].glode;
	grade[0].ying+=	grade[i].ying;
	grade[0].tone+=	grade[i].tone;
	}
	sum=grade[0].glode+grade[0].ying+grade[0].tone;
	printf("%d %d %d %d",grade[0].glode,grade[0].ying,grade[0].tone,sum);
}*/
#include <stdio.h>
int main()
{
	int n;
	int sum=0;
	int a[17][3]={0};
	scanf("%d",&n);
	for(int i=1;i<n;i++){
		scanf("%d",a[i][0]);
		scanf("%d",a[i][1]);
		scanf("%d",a[i][2]);
a[0][0]+=a[i][0];
a[0][1]+=a[i][1];
a[0][2]+=a[i][2];
	}
sum=a[0][0]+a[0][1]+a[0][2];
printf("%d %d %d %d",a[0][0],a[0][1],a[0][2],sum);	
}

1065

【题目描述】

计算非负整数m

到 n(包括 m和 n)之间的所有奇数的和,其中, m 不大于 n,且 n 不大于300。例如 m=3, n=12, 其和则为:3+5+7+9+11=35

。

【输入】

两个数 m

和 n,两个数以一个空格分开,其中 0≤ m≤ n≤300

。

【输出】

输出一行,包含一个整数,表示m

到 n(包括 m 和 n

)之间的所有奇数的和

【输入样例】

7 15

【输出样例】

55

#include <stdio.h>

int main(void)
{
	int sum=0;
	int n,m;
	scanf("%d %d",&n,&m);
	for(;n<=m;n++)
	{
		if(n%2!=0){
			sum+=n;
		}
	}
	printf("%d",sum);
}

1066

【题目描述】

将正整数m

和 n之间(包括 m和 n)能被17整除的数累加,其中,0< m< n<1000

。

【输入】

一行,包含两个整数m

和 n

,其间,以一个空格间隔。

【输出】

输出一行,包行一个整数,表示累加的结果。

【输入样例】

50 85

【输出样例】

204
#include<stdio.h>

int main(void)
{
	int n,m;
	int sum=0;
	scanf("%d %d",&n,&m);
	for(;n<=m;n++){
		if(n%17==0){
			sum+=n;
		}
	}
	printf("%d",sum);
}

2021

【题目描述】

求两个正整数m

, n

的最大公约数。

【输入】

输入m

, n

。

【输出】

m

, n

的最大公约数。

【输入样例】

4 6

【输出样例】

2

【提示】

【数据范围】

对于全部数据:m,n<4000000

。

辗转相除法

#include <stdio.h>

int main(void)
{
	int n,m,c;
	scanf("%d %d",&n,&m);
	if(n<m)
	{
		c=m;
		m=n;
		n=c;
		
	}
	while(m!=0)
	{
		c=m;
		m=n%m;
		n=c;
		
	}
	printf("%d",n);
	return 0;
}

 2022

【题目描述】

编一程序求满足不等式1+12+13…+1n>=m

的最小 n

值。

其中,n,m

为正整数。

【输入】

输入m

。

【输出】

输出n

。

【输入样例】

3

【输出样例】

11

【提示】

【数据范围】

对于所有数据:m<=11

。

#include<stdio.h>

int main(void)
{
	int m,n=0;
	float sum=0;
	scanf("%d",&m);
	while(m>sum){
			n++;
		sum+=1.0/n;
	
		
	}
	printf("%d",n);
}

总结

太简单了没啥好总结的,刷了这么几道就巩固了一下基础,主要多深入了一下二维数组,辗转相除法,可以用a[0]代替sum,有一说一python真的比c简单干净很多。

下一周打算去研究一下数组和数据结构和算法

更多推荐