因为商品A的单价是¥798它的百分位上是八 总价钱是¥1000百分位上是零 所以商品A买了的个数是五的倍数
所以设商品A买了5×798x等于399x元 商品 B 买了187y元 商品C买了355z元
所以399x+187y+355z等于1000
所以符合xyz的解有⋯
1:
var
n,a,b:integer;
begin
read(n);
for a:=((n+1) div 2) downto 1 do
begin
for b:=1 to (a2-1) do
write('');
writeln;
end;
for a:=2 to (n+1 div 2) do
begin
for b:=1 to a do
write('');
writeln;
end;
write(chr(8);
end
2:
var
t,s:string;
x,y:array[1100] of char;
a:integer;
ch:char;
begin
read(s);
for a:=1 to (length(s) div 2) do
read(x[a]);
if odd(length(s)) then
read(ch);
for a:=(length(s) div 2) downto 1 do
read(y[a]);
t:='TRUE';
for a:=1 to length(s) do
if x[a]<>y[a] then
t:='FALSE';
write(t);
end
1L的哥们竟然没有分数也没有读写文件记录,我在他的基础上加了这个功能,采纳谁都可以哦~
#include <stdioh>
#include <ctypeh>
#include <timeh>
#include <stdlibh>
#include <windowsh>
#define IDNO_LENGTH 6
#define CALC_KIND 4
#define CALC_NUM 10
bool checkNo(char idNo[]);
char getSignal();
int getResult(int,int,char);
void takeTest();
//main函数
void main()
{
printf("Please input your four digit ID no(begin with two letters):");
char idNo[IDNO_LENGTH];
do
{
scanf("%s",&idNo);
fflush(stdin);
} while(checkNo(idNo)==false);
printf("1Start a test\t2Check score\t3Exitb\n");
int choose;
do
{
printf("选择:");
scanf("%d",&choose);
fflush(stdin);
} while(choose!=1 && choose!=2&& choose!=3);
if(choose==1)
{
takeTest();
}else if(choose==2)
{
FILE fp;
char ch;
if((fp=fopen("scoretxt","rt+"))==NULL)
{
printf("\n你还没做过题目测试");
getch();
exit(1);
}
ch=fgetc(fp);
while(ch!=EOF)
{
putchar(ch);
ch=fgetc(fp);
}
fclose(fp);
}
else
{
exit(0);
}
}
//获取随机运算符
char getSignal()
{
char signal[CALC_KIND]={'+','-','','/'};
srand((unsigned)time(NULL));
return signal[rand()%4];
}
//获取随机数
int random(double start, double end)
{
return (int)(start+(end-start)rand()/(RAND_MAX+ 10));
}
//运算
int getResult(int num1,int num2,char signal)
{
int res;
switch(signal)
{
case '+':
res=num1+num2;break;
case '-':
res=num1-num2;break;
case '':
res=num1num2;break;
case '/':
res=num1/num2;break;
default:
res=0;
printf("运算符不符合规则\n");
}
return res;
}
//列出10道题
void takeTest()
{
printf("开始答题,每道题10分,总共100分\n");
clock_t startTime;
startTime=clock();
int index;
int giveRes;
int num1;
int num2;
int score=0;
char signal;
for(index=0;index<CALC_NUM;index++)
{
srand((unsigned)time(NULL));
signal=getSignal();
num1=random(0,100);
num2=random(1,100);
printf("%d%c%d=",num1,signal,num2);
scanf("%d",&giveRes);
fflush(stdin);
if(getResult(num1,num2,signal)==giveRes)
{
printf("correct\n");
score+=10;
}
else
{
printf("wrong\n");
}
}
FILE fp=fopen("scoretxt","w");
fprintf(fp,"分数为%d",score);
fclose(fp);
printf("解10道题用了%lf秒\n",(double)(clock()- startTime)/CLOCKS_PER_SEC);
}
//检测idNo是否合规则,合规则返回true
bool checkNo(char idNo[])
{
int index;
bool flag;
flag=true;
for(index=0;index<IDNO_LENGTH;index++)
{
if(index<2)
{
if(!isalpha(idNo[index]))
{
flag=false;
printf("ID no 不符合规则,重新输入:");
break;
}
}
else
{
if(!isdigit(idNo[index]))
{
flag=false;
printf("ID no 不符合规则,重新输入:");
break;
}
}
}
return flag;
}
n,m的范围都只有 300 , 三次方的枚举显然是可以过的
我们用 map[i][j]来记录每个各自中的糖果数量,对与被老鼠咬过的格子我们把这个格子的糖果数量改成一个很小的负数( 比如 -10000000 ) 这样问题就转为了求一个和最大的子矩阵
预处理一个数组 f[i][j] 表示 map[1][j]+map[2][j]+map[3][j]+map[i][j]
预处理好f数组之后我们就可以很方便的求出第i行到第j行中 第k列上所有糖果数的和
(即 f[j][k]-f[i-1][k])
这样我们枚举上边界i和下边界j,找出上边界为i 下边界为j 的最大子矩阵去更新答案
定义数组b[k]=f[j][k]-f[i-1][k]
问题变为了要找出一个区间 l~r 使得 b[l]+b[l+1]+b[r] 最大
再定义 c[i]=b[1]+b[2]+b[i]
那么 l~r 的和可以表示为 c[r]-c[l-1]
然后对于每一个确定的上下边界,我们再枚举r 记录一下在 1~r-1中最小的 c 用 c[r]减去它更新答案
代码可以试着自己写下,真的需要的话可以追问我
2008年长沙市小学生计算机奥林匹克竞赛初赛试题
作者:陈凯兵 来源:原创 人气:968 评论:0 推荐等级:★★★★★
录入人:陈 凯兵 录入时间:2008-4-30 关键字:
2008年长沙市小学生计算机奥林匹克竞赛初赛试题
(语言:Turbo Pascal 时间:90分钟)
参赛证号 姓名 学校 总分
一、单项选择题(每小题 2 分,共40分)
1、被称为“现代计算机之父”的是( )
A、图灵 B、冯诺依曼 C、比尔盖茨 D、巴贝奇
2、计算机在工作时突然停电,则( )中的信息全部丢失,来电之后也不能恢复。
A、ROM和RAM B、ROM C、RAM D、硬盘
3、扫描仪、绘图仪、触摸屏、音箱当中有( )中具有输出功能。
A、1 B、2 C、3 D、4
4、计算机能为我们做很多工作,下列缩写CAD、CAM、CAI分别对应的是( )
A、计算机辅助设计/辅助制造/辅助教学 B、计算机辅助制造/辅助设计/辅助教学
C、计算机辅助教学/辅助设计/辅助制造 D、计算机辅助设计/辅助教学/辅助制造
5、二进制数00100100与00010100的和是( )
A、00101000 B、00111100 C、00110100 D、00111000
6、程序设计的三种基本结构是( )
A、主程序、函数、过程 B、顺序、选择、循环
C、程序首部、说明总分、执行部分 D、for、while、repeat
7、在Windows中,“回收站”是( )的一块区域。
A、硬盘 B、内存 C、软盘 D、光盘
8、在Turbo Pascal语言环境下,快捷组合键Ctrl+F的功能是( )
A、下拉File子菜单 B、保存程序 C、关闭窗口 D、新开窗口
9、互联网上最常用的浏览器称为( )
A、word B、QQ C、IED、TCP/IP
10、某计算机的硬盘有100G,等于( )字节。
A、100 B、100×1000 C、100×1024×1024 D、100×1024×1024×1024
11、下列数据类型中不是构造类型的是( )
A、集合类型 B、数组类型 C、文件类型 D、枚举类型
12、Integer类型的数据范围是( )
A、-32767~32767 B、0~32767 C、-32768~32767 D、0~65535
13、下列表达式的值为FALSE的是( )
A、Odd(True(749)) B、Round((Abs(-95)))<10
C、Not(‘9’<’100’) D、Ord(Chr(Pred(8)))>=7
14、R:=Random(100)+1产生一个随机数R,R的取值范围是( )
A、0<=R<=100 B、0<R<=100 C、1<=R<100 D、1<=R<=101
15、判断变量ch的值是否为小写字母,下列表达式正确的是( )
A、not(ch<’a’)or(ch>’z’ B、’a’<=ch<=’z’
C、(ch>=a)and(ch<=z) D、ch>=’a’ and ch<=’z’
16、设n是实型变量,下列表达式能使n四舍五入保留两位小的是( )
A、Round(n100)/100 B、Round(n/100)100
C、Trunc(n100)/100 D、Trunc(n/100)100
17、设a、b、c都是整型变量,由键盘输入如下三行数据
1 2 3 回车
4 5 6 回车
7 8 9 回车
下列语句组中不能使a=1、b=7的是( )
A、Readln(a,b,b,b,b,b,b,c,c); B、Readln(a);Readln;Readln(b);
C、Readln(a,c,c,c);Read(b); D、Readln(a,c,c);Readln(b,c,c);
18、设有变量说明VAR I,j:integer;x,y:Real;a,b:Boolean;c:Char;
下列赋值语句中正确的是( )
A、i:=i+x; B、b:=Ord(c>’c’); C、a:=i=j; D、i:=x mod y;
19、表达式Chr(Ord(‘A’)+4))的值是( )
A、’D’ B、 ‘E’ C、69 D、101
20、设a〔1〕=1,a〔2〕=2,a[3]=3,a[4]=4,a[5]=5,a[6]=6,且i=1,j=2,k=3,m=4
下列变量的值等于3的是( )
A、a[ij] B、a[a[k-i]+3] C、a[m div j] D、a[a[j+k-2]]
二、 问题解答(每小题5分,共10分)
1、 马路上有编号为1~9的9盏路灯,为了节约用电,现要关掉其中的三盏灯,但两端的灯不能关,也不能同时关掉相邻的灯。问:符合要求的关灯方法共有多少种?
答:共有 种。
2、 A、B、C三人中一位是工人,一位是教师,一位是律师。已知:C仅比律师年龄大,A和教师不同岁,B比教师年龄小。问:A、B、C分别是什么身分?
答: 是工人, 是教师, 是律师。
三、阅读程序,写出程序的结果(每小题5分,共20分)
(1) var I,j:integer;
begin
for I:=1 to 5 do begin
for j:=2 to I do
if I mod 2=0 then
write(‘A’)
else write(‘B’);
writeln;
end;
end
输出:
(2) var I,j,n:integer;
b:array[110] of 02;
begin
n:=2008;j:=0;
while n>0 do begin
j:=j+1;b[j]:=n mod 3; n:=n div 3;
end;
for i:=j downto 1 do write(b[i]);
writeln;
end 输出:
(3) var s:string;
I,len:integer;
Begin
S:=’olympic games 2008’;
S:=’ ’+s;len:=length(s);
For i:=1 to len do begin
Ch:=s[len];
If (ch>=’0’) and(ch<=’9’) then begin
Delete(s,len,1);insert(ch,s1);
End;
If (s[i]=’ ’) and (i<>len) then s[i]:=’-’;
End;
Writeln(s);
End
输出:
(4) var a,b,x:integer;
Procedure ms(a,b:integer;var c:integer);
Begin
a:=3a;b:=4b;c:=a-b+c;
end;
begin
a:=1;b:=2;x:=3;
ms(a,b,x);
writeln(a,b:5,x:5);
end
输出:
四、 完善程序(每空3分,共30分)
1、 最佳评分值:
输入10个评委对某项目的评分值(正整数),计算出他们评分的平均值,然后找出最佳评分值,即:最接近平均值的那些数(这些数可能大于、也可能小于平均值)。
Var I,n:integer;
b,s:real;
a: ;
begin
for i:=1 to 10 do read(a[i]);
s:= ;
for i:=2 to 10 do s:=s+a[i];
s:=s/10;
n:=1;
for i:=2 to 10 do
if < then n:=I;
b:abs(a[n]-s);
for I;=1 to 10 do
if then write(a[i]:3);
writeln;
end
2、 高精度阶乘:
正整数A的阶乘,数学中定义为:A!=1×2×3×……×A,如:3!=1×2×3现在输入一个正整数n(n<=50),要求计算出1~n的每一个整数的阶乘的高精度结果(即:结果为全部有效数字)。下面的程序中采用加法代替乘法的方法计算阶乘,如:3!=2!×3=2!×2!×2!。
输出格式:每行打印一个数的阶乘
如:输入:n=3
输出:1!=1
2!=2
3!=6
Const max=80;
Var I,j,k,n,r:integer;
a,b:array[1max] of integer;
Begin
Write(‘n=’);readln(n);
a[1]:=1;writeln(‘1!=’,1);
For j:=1 to do begin
b:=a;
for k:=1 to do
for i:=1 to max do begin
r:= ;
if r>=10 then :=a[i+1]+1;
a[i]:=r mod 10;
end;
k:=max;
while do k:=k-1;
write(j+1,’!=’);
for i:=k downto 1 do write(a[i]);
writeln;
end;
end
答案:
一、单选题
BCCAD BAACD DCBBA ADCBD
二、填空题
1、10
2、A,C,B
三、读程序写结果
(1)
A
BB
AAA
BBBB
(2) 2202101
(3)2008-olympic-games
(4)1 2 -2
四、程序填空
1、
(1)array[110] of integer
(2)a[1]
(3)abs(a[i]-s)
(4)abs(a[n]-s)
(5)abs(a[i]-s)=B
2、
(1)n-1
(2)j
(3)a[i]+b[i]
(4)a[i+1]
(5)a[k]=0
2005年江苏省"信息与未来"小学生夏令营活动
计算机 *** 作项目之一:程序设计试题
1, 回文数个数
如果一个正整数从左向右读与从右向左读均是一样,则称其为回文数。例如3、121、3223、12021都是回文数。
输入:任意给定的一个正整数n(0<n<=100000)
输出:一个正整数,表示[1,n]之间的回文数的个数。
输入格式键盘输入 ,无须合法性检验
输出格式输出到屏幕 。
样例
输入 输出
325 41
2、 对应关系
给定两个长度相同的字符串A$和B$,如果A$中的一字符与B$中的一字符出现次数相同,则说此二字符是对应的;如果A$中所有字符分别对应于B$中所有字符,则说二字符串之间存在一个对应关系;要求算出两串之间存在的所有对应关系的个数(若无对应关系,则输出为0)。
例如: A$=”abac”, B$=”3132”,那么它们之间存在2个对应关系, 分别是:
a 3 a 3
b 1 b 2
c 2 c 1
输入格式键盘输入。只有两行,每行给出一个字符串,每个字符串全部由小写字母或数字组成,串的长度不超过20,而且串中最多出现10种不同字符。不必对输入做正确性检查。
输出格式一个正整数,表示输入字符串之间存在对应关系的个数。
样例
输入: 输出
abad 2
1231
3 进制数
给出一个正整数n(1≤N≤1023),将其化为10位二进制数,然后计算出二进制数中的“1”的个数,若1的个数为奇数,则在最高位前加上一个1,否则加上一个0,最后将在此基础上形成的11位二进制数,用3个十六进制数输出。
例 如:输入 23 化为二进制数为: 0000010111
因为1的个数是4个,在最高位前加0,得到:00000010111
输出:0H,1H,7H
再例如:输入 453 化为二进制数为: 0111000101
因为1的个数是奇数,所以在最高位前加1,得到:10111000101
输出:5H,CH,5H
输入格式键盘输入。一个正整数n。
输出格式根据形成的11位二进制数,用3个十六进制数输出。
样例
输入: 输出
453 5H,CH,5H
4 走迷宫
小明与许多同学一起参加了今年的“信息与未来”小学生夏令营活动。夏令营的组织者设计安排了许多有趣的活动,走迷宫就是其中的一项。
迷宫由NN个方格组成,每个方格均被组织者事先标上了“0”或“1”(左上角第一个方格和右下角最后一个方格一定是“0”)。当你进入左上角的第一个方格中时,看到相邻的方格是“0”时则可以进入,而如果是“1”时则表示此路不通。
小明被告之:从迷宫的左上角第一个方格的入口处准备进入时,你可得到一个记有NN分值的记分表,每经过一个标有“0”的方格,记分表将自动扣去1分,当走到右下角最后一个方格的出口处时,将显示你手中的记分表剩余的分值。
夏令营的组织者将只奖励所有参加此项活动中,记分表剩余的分值最多的营员。
输入格式你应当从指定的文件中读取相关数据。
每个文件的第一行是一个整数N(3≤N≤40),接下来有N行,每行均有N个由0 和1组成的数据
输出格式输出至屏幕,一个整数(记分表剩余的分值)
样例
输入 输出
4 9
0011
1000
0001
1000
2006年江苏省"信息与未来"小学生夏令营活动程序设计试题
题一 选夏令营旗手
问题描述
每年的“信息与未来”小学生夏令营活动,组织者均设计安排了许多有趣的活动。去年小明与许多同学一起参加的走迷宫就是其中的一项,他经过努力并取得了好成绩。
今年小明又怀着极大的兴趣来到了营地,首先看到组织者贴出的一个海报:挑选本次夏令营的旗手!由于报名的营员非常多,于是只好规定让所有参加的N个人坐成一圈,并按顺时针方向从1~N编号。由第1人开始进行1~M报数,报到M的人出圈,再从下一个人重新开始从1到m报数。如此进行下去,直到剩下一人为止,就是本次夏令营的旗手。
小明非常渇望能成为旗手,你能编一个程序帮助他实现愿望吗?如果可以的话,你的程序应输出小明在圈中的编号。
输 入:键盘输入二个整数N,M (2≤N,M≤100,N≥ M ),用一个逗号分隔。
输 出:输出到屏幕 。一个整数,表示小明在圈中的编号。
样 例:
输入 输出
9,3 1
题二 找最长良序字符串
问题描述
我们将“ABC”或“ACEG”等类似的字串称为良序字串(因为它们是按ASCII码排列的),而像“ACB”或“ACCD”或“AGCD”则不可称为良序字串。
编写程序,将键入的一串字符中的最长良序字串找出来,并输出其长度。
输 入:文件读入一串字符(长度≤30)。
输 出:输出到屏幕 。一个最长良序字串的长度。
样 例:
输入 输出
2345135791246823456 5
题三 加工制作模型
问题描述
由苏州市科学技术协会创办的公益性质的青少年科学工作室,旨在通过参与、实践、体验的过程培养青少年的动手能力及创新意识。今年的夏令营安排了一个让营员动手实践的活动项目,要求利用该工作室提供的锯床和材料在辅导老师的指导下加工制作出各种不同的模型。
活动时两名营员组成一小组制作N个模型。制作每件模型需一定时间,且只能由一人完成。例如N=4时,四件模型完成的时间分别为:8,11,13,21分钟,此时二人有多种完成的方案:
方案一:A 制作前3件用时32分钟,B制作第4件用时21分钟,两人总的完成时间为32分钟;
方案二:A 制作1、4件用时29分钟,B制作2、3件用时24分钟,两人总的完成时间为29分钟。
在确定了N及每件模型制作时间后,现在请你找出一种完成时间最少的方案。
输 入:文件读入。第一行一个整数N ,表示N个模型(2≤N≤100)。
第二行N个整数(≤10000),表示制作N个模型的用时。数与数之间用逗号分隔。
输 出:输出到屏幕 。一个整数(表示最少用时)。
样 例:
输入 输出
321
12,18,9
题四 整数的拼接
问题描述
设有n个整数(3≤n≤10),将这些整数拼接起来,可以形成一个最大的整数。
例如 n=3, 三个整数分别为21, 7, 34, 拼接后最大的整数为: 73421
输 入:文件读入。第一行一个整数n ,表示有n 个整数
第二行n个整数,数与数之间用一个逗号分隔。
输 出:输出到屏幕 。一个拼接后的最大的整数。
样 例:
输入 输出
3 73421
21,7,34
题五 0~1计数
问题描述
设有1,2,3,…, n共n个整数(2≤n≤1000),将这n个整数全部化成二进制。
例如,当n=9时,其1-9个整数及它们所对应的二进制数如下:
整 数 1 2 3 4 5 6 7 8 9
二进制数 1 10 11 100 101 110 111 1000 1001
这些二进制数可以分成二类:
A类数:该数的二进制表示中的0的个数≥1的个数,如2,4,8,9。
B类数:该数的二进制表示中的0的个数<1的个数,如1,3,5,6,7
问题 当n给出之后,统计出A类数的个数
输 入:
键盘输入一个整数N。
输 出:
输出到屏幕 。一个整数。
样 例:
输入 输出
9 4
2007年江苏省"信息与未来"小学生夏令营活动程序设计试题
计算机 *** 作项目之一:程序设计试题(完成时间:210分钟 )
题一 选夏令营旗手
问题描述
一年一度的江苏省“信息与未来”小学生夏令营活动又开始了。与每年一样,组织者又设计安排了许多有趣的活动,其中第一项依然是挑选本次夏令营的旗手!由于这是一个非常具有荣誉感的角色,所以报名参加夏令营旗手角逐的营员仍然非常多,营委会于是规定:
将N个人排成一排,编号1~N。从第1人开始进行1~M正向报数,报到M的人出列,再从下一个人开始继续1到M报数、出列。(注意:按某个方向报数报到尾部时,再反方向继续报数)。如此进行下去,直到剩下一人为止,这个人就是本次夏令营的旗手。
小明非常渇望能成为旗手,你能编一个程序帮助他实现愿望吗?如果可以的话,你的程序应输出小明的编号。
输 入:键盘输入二个整数N,M(2≤N,M≤300,N≥ M),用一个逗号分隔。
输 出:输出到屏幕 。一个整数,表示小明在队列中的编号。
样 例1:
输入 输出
9,3 8 注:出列顺序为:3、6、9、5、1、7、2、4
样 例2:
输入 输出
8,3 8 注:出列顺序为:3、6、7、2、5、1、4
题二 整数拆段
问题描述
将一个位数为L(4≤L≤10)的自然数N拆成4段,使各段对应的数的乘积最小。你能编一个程序实现吗? 输 入:键盘输入一个自然数N。
输 出:输出到屏幕 。一个整数,最小乘积。
样 例:
输入 输出
321427 2268 注:321427=2268
题三 压缩数据的解压
问题描述
从输入文件中读取一些被压缩的数据,进行解压,再根据题目要求将结果输
出至屏幕。
输 入:
文件读入。
它的第一行为一个正整数k,指明以下的数据分为k段。
第二行是k段压缩数据串,每个段有两种格式(数之间用一个逗号分隔): 如果每段第1个数n为正,则该段只有两个数,其解压 *** 作是将该段的第2个数重复n次;
如果每段第1个数n为负数,则该段有|n|+1个数,其解压 *** 作是重复该段从第2个数开始的|n|个数一次。(注:|n|表示取n的绝对值)
输 出:
输出到屏幕。经解压后得到的整数串上所有数字之和。
样 例: 文件读入: 5
3 ,2, -5, 0, 1, 2, 3, 4, 5, 1,5, 0, -4, 4, 3, 2, 1
输出: 31 注:经解压后得到的整数串 2 2 2 0 1 2 3 4 1 1 1 1 1 00 0 0 0 4 3 2 1
题四 求数位上的数字
问题描述
给出二个整数N和K,求出N的K次方的结果中的十位数和个位数的数字。
输 入:键盘输入二个整数N, K(2≤N,K≤100000000)。 输 出:输出到屏幕。
二个数字(分别表示N的K次方结果中的十位数和个位数的数字,用一个空格分隔)。
样 例:
输入 输出
3,6 2 9 注:3^6=729
题五 移动纸牌
问题描述
有n堆纸牌(2≤n≤200),排成一行,编号分别为1,2,…n。 已知每堆纸牌有一定的张数,且张数之和均为n的倍数。移动各堆中的任意张纸牌,使每堆的数量达到相同,且移动次数最少。
移动规则:
每次可以移动任意的张数,第1堆可以移向第2堆,第2堆可以移向第1堆或第3堆,。。。。。。 第n堆只可以移向第n -1堆。
例如,当n=4时:
堆号 1 2 3 4 张数 3 5 4 8
移动的方法有许多种,其中的一种方案:
① 第2堆向第1堆移动2张,成为:5 3 4 8 ② 第4堆向第3堆移动3张,成为:5 3 7 5 ③ 第3堆向第2堆移动2张,成为:5 5 5 5
经过三次移动,每堆都成为5张。
输 入:文件读入。 第一行一个整数n。
第二行n个整数,用逗号分隔。
输 出:
输出到屏幕。一个整数(表示最少移动次数)。
样 例:
输入 输出
4
3,5,4,8 3
以上就是关于一道小学奥数题,手工计算,不可以编程全部的内容,包括:一道小学奥数题,手工计算,不可以编程、用青少年信息学奥林匹克竞赛培训教材(小学)编程、C语言,设计一个程序帮助小学生练习数学。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)