50||mdo{m--;pri" />
当前位置:文档之家› c语言奥赛2008寒假作业2及答案

c语言奥赛2008寒假作业2及答案

c语言奥赛2008寒假作业2及答案
c语言奥赛2008寒假作业2及答案

1.题目:由M个数字构成一个圆,找出相邻的四个数,使其和为最大,输出最大值。

如:输入 10 3 2 5 11 7 9 输出:11+7+9+10=37

参考程序

#include

#include

int main()

{

int m,a[50],i=0,max=0,s,k=0;

do

{

printf("input number between 1 and 50:");

scanf("%d",&m);

}while(m>50 || m<0);

do

{

m--;

printf("input a number:");

scanf("%d",&a[i++]);

}while(m>0);

m=i;

for(i=0;i

{

s=a[i%m]+a[(i+1)%m]+a[(i+2)%m]+a[(i+3)%m];

if(max

}

printf("%d+%d+%d+%d=%d",a[k%m],a[(k+1)%m],a[(k+2)%m],a[(k+3)%m],max); system("PAUSE");

return 1;

}

//-----------------------------------------------------------------------------

2. 题目:

给出一个不多于5位的正整数(不大于32767),求

(1) 这个数有几位?

(2) 打印每一位数?

(3) 逆序输出。

参考程序:

#include

#include

int main()

{

int n,num;

int i=0,a[5];

do

{

printf("input number(<32767):");

scanf("%d",&num);

}while(num<0);

do

{

a[i++]=num%10;

num/=10;

}while(num!=0);

n=i;

printf("Len=%d\n",n);

for(i=n-1;i>=0;i--) printf("%d",a[i]);

printf("\n");

for(i=0;i

system("PAUSE");

return 1;

}

//----------------------------------------------------------

1、编程实现对键盘输入的英文名句子进行加密。用加密方法为,当内容为英文字母时其在26字母中的其后三个字母代替该字母,若为其它字符时不变:

2、编程实现将任意的十进制整数转换成R进制数(R在2-16之间)。

3、从键盘输入一指定金额(以元为单位,如345.78),然后显示支付该金额的各种面额人民币数量,要求显示100元、50元、10元、5元、2元、1元、1角、5分、1分各多少张。

4、随机产生20个[10,50]的正整数存放到数组中,并求数组中的所有元素最大值、最小值、平均值及各元素之和。

5、编程在一个已知的字符串中查找最长单词,假定字符串中只含字母和空格,空格用来分隔不同单词。

6、模拟n个人参加选举的过程,并输出选举结果:假设候选人有四人,分别用A、B、C、D表示,当选某候选人时直接输入其编号(编号由计算机随机产生),若输入的不是A、B、C、D则视为无效票,选举结束后按得票数从高到低输出候选人编号和所得票数。

7、任何一个自然数m的立方均可写成m个连续奇数之和。例如:

1^3=1

2^3=3+5

3^3=7+9+11

4^3=13+15+17+19

编程实现:输入一自然数n,求组成n3的n个连续奇数。

8、已知abc+cba=1333,其中a,b,c均为一位数,编程求出满足条件的a,b,c所有组合。

9、编制一个完成两个数的四则运算程序。如:用户输入34+56则输出结果90.00。要求运算结果保留两位小数,用户输入时一次将两个数和操作符输入。

10、输入一个五位以内的正整数,(1)判断它是一个几位数;(2)请按序输出其各位数字;(3)逆序输出其各位数字。

如输入:56439,输出:5位数

5,6,4,3,9

9,3,4,6,5

11、编写子函数:(1)用冒泡法将一个数组排成升序的函数---SUB1;(2)在升序数组中插入一个数,并且保持该数组仍为升序数组的函数---SUB2。

主函数:①输入任意10个正整数给数组;②调用SUB1对数组进行排序;③从键盘输入一个正整数,调用SUB2将其插入该数组。

12、编写函数:(1)用选择法将数组排成降序的函数----SUB1;(2)用折半查找法查找某数是否

在给定的数组当中的函数----SUB2。

主函数:输入任意10个正整数给数组,调用SUB1对数组进行排序,从键盘输入一个正整数,调用SUB2在数组中进行查找,找到后输出“OK”,没有找到则输出“NO FOUND!”。

13、编写一个程序,输入两个包含5个元素的数组,先将两个数组升序排列,然后将这两个数组合并成一个升序数组。

14、耶稣有13个门徒,其中有一个就是出卖耶稣的叛徒,请用排除法找出这位叛徒:13人围坐一圈,从第一个开始报号:1,2,3,1,2,3……,凡是报到“3”就退出圈子,最后留在圈内的人就是出卖耶稣的叛徒,请找出它原来的序号。

15、编写一个程序,根据用户输入的不同边长,输出其菱形。例如,边长为3的菱形为:

16、按如下图形打印杨辉三角形的前10行。其特点是两个腰上的数都为1,其它位置上的每一个数是它上一行相邻两个整数之和。

17、某班有5个学生,三门课。分别编写3个函数实现以下要求:

(1)求各门课的平均分;

(2)找出有两门以上不及格的学生,并输出其学号和不及格课程的成绩;

(3)找出三门课平均成绩在85-90分的学生,并输出其学号和姓名

主程序输入5个学生的成绩,然后调用上述函数输出结果。

18、编写一人个求X的Y次幂的递归函数,X为double型,y为int型,要求从主函数输入x,y的值,调用函数求其幂。

19、打印魔方阵。

所谓魔方阵是指这样的的方阵:

它的每一行、每一列和对角线之和均相等。

输入n,要求打印由自然数1到n2的自然数构成的魔方阵(n为奇数)。

例如,当n=3时,魔方阵为:

8 1 6

3 5 7

4 9 2

魔方阵中各数排列规律为:

①将“1”放在第一行的中间一列;

②从“2”开始直到n×n为止的各数依次按下列规则存放:每一个数存放的行比前一个数的行数减1,列数同样加1;

③如果上一数的行数为1,则下一个数的行数为n(最下一行),如在3×3 方阵中,1在第1行,则2应放在第3行第3列。

④当上一个数的列数为n时,下一个数的列数应为1,行数减1。如2在第3行第3列,3应在第2行第1列。

⑤如果按上面规则确定的位置上已有数,或上一个数是第1行第n列时,则把下一个数放在上一个数的下面。如按上面的规定,4应放在第1行第2列,但该位置已被1占据,所以4就放在3的下面。由于6是第1行第3列(即最后一列),故7放在6下面。

>

20、找出一个二维数组中的“鞍点”,即该位置上的元素在该行中最大,在该列中最小(也可能没有“鞍点”),打印出有关信息。

21、马克思在《数学手稿》中提出如下问题:有30个人(包括男人、女人和小孩)在一家饭店吃饭共花50先令,其中每个男人花3先令,每个女人花2先令,

每个小孩花1先令,问男人、女人、小孩各有多少人?

22、定义一个结构体变量(包括年、月、日),计算该日在本年中为第几天?(注意考虑闰年问题),要求写一个函数days,实现上面的计算。由主函数将年月日传递给days函数,计算后将日子传递回主函数输出。

23、建立一个链表,每个结点包括:学号、姓名、性别、年龄,输入一个学号,如果链表中的结点

包括该学号,则输出该结点内容后,并将其结点删去。

24、给定一个日期,求出该日为星期几(已知2002-3-28为星期四)。

25、用递归法将一个整数n转换成字符串(例如输入4679,应输出字符串“4679”),n为不确定数,可以是位数不超过5,且数值在-32768~32767之间和任意整数。

26、有一个字符串,包括n个字符。写一个函数,将此字符串从第m个字符开始的全部字符复制成另一个字符串。要求在主函数输入字符串及m值并输出复制结果。

27、在主函数中输入6个字符串,用另一个函数对他们按从小到大的顺序,然后在主函数中输出这6个已经排好序的字符串。要求使用指针数组进行处理。

28、编写一个函数实现对两个字符串的比较。不用使用C语言提供的标准函数strcmp。要求在主函数中输入两个字符串,并输出比较的结果(相等的结果为0,不等时结果为第一个不相等字符的ASCII 差值)。

29、有一个unsigned long型整数,先要分别将其前2个字节和后2个字节用为两个unsigned int型整数输出(设一个int型数据占2个字节),试编写一函数partition实现上述要求。要求在主函数输入该long型整数,在函数partition中输出结果。

30、编一程序,能把从终端读入的一个字符中的小写字母全部转换成大写字母,然后输出到一个磁盘文件“test”中保存(用字符!表示输入字符串的结束)。

31、有五个人坐在一起,问第5个人多少岁?他说比第4个人大2岁。问第4个人多少岁?他说比第3个人大2岁。问第3个人多少岁?他说比第3个人大2岁。问第2个人多少岁?他说比第1个人大2岁。最后问第1个人多少岁?他说是10岁。请问第5个人多大?(这是一个递归问题)

---------------------------------

参考答案:

1、编程实现对键盘输入的英文名句子进行加密。用加密方法为,当内容为英文字母时其在26字母中的其后三个字母代替该字母,若为其它字符时不变:

#include

main()

{char c;

printf("please input a string:");

while((c=getchar())!=’\n’)

{ if(c>=’A’&&c<=’W’||c>=’a’&&c<=’w’) c=c+3;

else if(c>=’X’&&c<=’Z’||c>=’x’&&c<=’z’) c=(c+3)-26;

printf("%c",c);

}

printf("\n");

return 0;

}

2、编程实现将任意的十进制整数转换成R进制数(R在2-16之间)。

#include

#include

void main()

{

int n,R,i=0,a[16]={0};

char str[16]="0123456789ABCDEF";

clrscr();

printf("please input an integer number:\n");

scanf("%d",&n);

printf("please input R:\n");

scanf("%d",&R);

if(n<0)

{

printf("%c",’-’);

n=-n;

}

while(n!=0)

{

a[i++]=n%R;

n=n/R;

}

while(i-->0)

printf("%c",str[a[i]]);

getche();

}

3、从键盘输入一指定金额(以元为单位,如345.78),然后显示支付该金额的各种面额人民币数量,要求显示100元、50元、10元、5元、2元、1元、1角、5分、1分各多少张。

#include

main()

{

int a1,a2,a3,a4,a5,a6,a7,a8,a9;

float f;

a1=a2=a3=a4=a5=a6=a7=a8=a9=0;

printf("please input a float number:");

scanf("%f",&f);

while(f>100.0)

{ f=f-100.0;

a1++;

}

while(f>50.0)

{ f=f-50.0;

a2++;

}

while(f>10.0)

{ f=f-10.0;

a3++;

}

while(f>5.0)

{ f=f-5.0;

a4++;

}

while(f>1.0)

{ f=f-1.0;

a5++;

}

while(f>0.5)

{ f=f-0.5;

a6++;

}

while(f>0.1)

{ f=f-0.1;

a7++;

}

while(f>0.05)

{ f=f-0.05;

a8++;

}

while(f>0.01)

{ f=f-0.01;

a9++;

}

printf("a1=%d, a2=%d, a3=%d, a4=%d, a5=%d, a6=%d, a7=%d, a8=%d, a9=%d\n",

a1,a2,a3,a4,a5,a6,a7,a8,a9);

return 0;

}

4、随机产生20个[10,50]的正整数存放到数组中,并求数组中的所有元素最大值、最小值、平均值及各元素之和。

#include

#include

void main()

{

int a[21],i,ran,max,min,sum,average;

clrscr();

for (i=1;i<=20;i++)

{

while((ran=random(51))/10==0) //ensure ran between 20 and 50;

a[i]=ran;

}

max=min=a[1]; // initialize here

sum=0;

for(i=1;i<=20;i++)

{

printf("a[%d]=%d\n",i,a[i]);

sum+=a[i];

if(max

max=a[i];

else if(min>a[i])

min=a[i];

}

average=sum/20;

printf("\nsum=%d, max=%d, min=%d, average=%d \n",sum,max,min,average);

puts("\nany key to exit!");

getche();

}

5、编程在一个已知的字符串中查找最长单词,假定字符串中只含字母和空格,空格用来分隔不同单词。

#include

#include

void main()

{

char string[80],*p;

int i=0,max=0;&nbs

p;

clrscr();

printf("please input a string:\n");

gets(string);

// printf("\n%s\n",string);

p=string;

while(*p!=’\0’)

{

if(*p==’’)

{

if(max<=i)

max=i;

i=0;

}

else

i++;

p++;

}

if(max<=i)

max=i;

printf("\nmax_length of the string is: %d \n",max);

getche();

}

6、模拟n个人参加选举的过程,并输出选举结果:假设候选人有四人,分别用A、B、C、D表示,当选某候选人时直接输入其编号(编号由计算机随机产生),若输入的不是A、B、C、D则视为无效票,选举结束后按得票数从高到低输出候选人编号和所得票数。

#include

#include

#include

#include

void main()

{

int i,n,A,B,C,D,abandon,ran; //abandon stand for the ones who abandon

clrscr();

A=B=C=D=abandon=0;

printf("Enter the number of persons:");

scanf("%d",&n); //n persons to select from candidate a,b,c and d.

randomize();

for(i=1;i<=n;i++)

{

ran=random(5)+65; //A,B,C,D and the ones who abandon

switch(ran)

{

case ’A’:A++;break;

case ’B’:B++;break;

case ’C’:C++;break;

case ’D’:D++;break;

default :abandon++;

}

}

printf("\nA=%d,B=%d,C=%d,D=%d,abandon=%d\n\n",A,B,C,D,abandon); i=4;

while(i--!=0)

{

if(A>=B&&A>=C&&A>=D&&A!=-1)

{

printf("A=%d,",A);

A=-1;

}

if(B>=A&&B>=C&&B>=D&&B!=-1)

{

printf("B=%d,",B);

B=-1;

}

if(C>=A&&C>=B&&C>=D&&C!=-1)

{

printf("C=%d,",C);

C=-1;

}

if(D>=A&&D>=B&&D>=C&&D!=-1)

{

printf("D=%d,",D);

D=-1;

}

}

printf("abandon=%d, \n\n",abandon);

getch();

}

7、任何一个自然数m的立方均可写成m个连续奇数之和。例如:

1^3=1

2^3=3+5

3^3=7+9+11

4^3=13+15+17+19

编程实现:输入一自然数n,求组成n3的n个连续奇数。

#include

#include

#include //

void main()

{

int i,j,n,sum,count;

clrscr();

printf("\n an integer here please:");

scanf("%d",&n);

printf("\n");

// i=(int)floor(sqrt((float)n));

// if(i%2==0)

// i++;

i=1; //

for(;i<=n*n*n;i+=2)

{

sum=0;

count=0;

for(j=i;j<=n*n*n;j+=2)

{

sum=sum+j;

count++;

if((n*n*n==sum)&&(count==n))

break;

}

if((sum==n*n*n)&&(count==n))

break;

}

printf("i=%d,j=%d\n\n",i,j);

printf("%d*%d*%d=",n,n,n);

// while(n-->1) { printf("%d+",i); i+=2; }

for(;i

printf("%d+",i); //

printf("%d",i);

getch();

}

8、已知abc+cba=1333,其中a,b,c均为一位数,编程求出满足条件的a,b,c所有组合。

#include

#include

void main()

{

int num,a,b,c;

clrscr();

printf("Press any key to calculate!\n\n");

getch();

for(num=101;num<1000;num++)

{

a=num/100;

b=num%100/10;

c=num%10;

if(num+c*100+b*10+a==1333)

printf("\n%d+%d=1333\n",num,c*100+b*10+a);

}

while(!kbhit())

;

}

9、编制一个完成两个数的四则运算程序。如:用户输入34+56则输出结果90.00。要求运算结果保留两位小数,用户输入时一次将两个数和操作符输入。

#include

#include

void main()

{

float num1,num2;

char s;

clrscr();

printf("Enter a statement please:");

scanf("%f%c%f",&num1,&s,&num2);

switch(s)

{

case ’+’:printf("%.2f%c%.2f=%.2f",num1,s,num2,num1+num2);break;

case ’-’:printf("%.2f%c%.2f=%.2f",num1,s,num2,num1-num2);break;

case ’*’:printf("%.2f%c%.2f=%.2f",num1,s,num2,num1*num2);break;

case ’/’:printf("%.2f%c%.2f=%.2f",num1,s,num2,num1/num2);break;

default: printf("Input

sp;Error!");

}

getch();

}

10、输入一个五位以内的正整数,(1)判断它是一个几位数;(2)请按序输出其各位数字;(3)逆序输出其各位数字。

如输入:56439,输出:5位数

5,6,4,3,9

9,3,4,6,5

#include

#include

long power(int n)

{

int i;

long result=1;

for(i=1;i<=n;i++)

result=10*result;

return result;

}

void main()

{

long num,n,j;

int count=1,tmpcount;

clrscr();

printf("Please input a number(0-99999):");

scanf("%ld",&num);

n=num;

while((n=n/10)!=0)

count++;

printf("\n%ld is a %d digits.\n\n",num,count);

tmpcount=count; //temporary tmpcount for later use in statement A

n=num;

while(count-->1)

{

j=power(count);

printf("%d, ",n/j);

n=n%j;

}

printf("%d\n",n);

n=num;

while(tmpcount-->1) // statement A

{

printf("%d, ",n%10);

n=n/10;

}

printf("%d\n",n);

getch();

}

11、编写子函数:(1)用冒泡法将一个数组排成升序的函数---SUB1;(2)在升序数组中插入一个数,并且保持该数组仍为升序数组的函数---SUB2。

主函数:①输入任意10个正整数给数组;②调用SUB1对数组进行排序;③从键盘输入一个正整数,调用SUB2将其插入该数组。

#include

#include

void main()

{

int i,k,a[12]={0}; //a[0] for no use

void sub1(int b[]),sub2(int b[],int k);

clrscr();

printf("Please input 10 numbers:");

for(i=1;i<=10;i++)

scanf("%d",&a[i]);

getchar();

sub1(a);

for(i=1;i<=10;i++)

printf("\na[%d]=%d\n",i,a[i]);

printf("\n\nplease input a number to be inserted into the array:");

scanf("%d",&k);

sub2(a,k);

for(i=1;i<=11;i++)

printf("\na[%d]=%d\n",i,a[i]);

puts("\nAny key to exit!");

getch();

}

void sub1(b)

int b[];

{

int i,j,t;

for (i=1;i<10;i++) //the first one is always the smallest

for(j=i;j<=10;j++)

if (b[i]>b[j])

{

t=b[i];

b[i]=b[j];

b[j]=t;

}

}

void sub2(int b[],int k)

{

int i;

for(i=10;i>=1;i--)

{

if(k

b[i+1]=b[i];

else

{

b[i+1]=k;

break;

}

}

}

12、编写函数:(1)用选择法将数组排成降序的函数----SUB1;(2)用折半查找法查找某数是否在给定的数组当中的函数----SUB2。

主函数:输入任意10个正整数给数组,调用SUB1对数组进行排序,从键盘输入一个正整数,调用SUB2在数组中进行查找,找到后输出“OK”,没有找到则输出“NO FOUND!”。

#include

#include

void main()

{

int i,key,a[11]={0},sub1(),sub2();

printf("please input 10 number: ");

for(i=1;i<=10;i++)

scanf("%d",&a[i]);

getchar();

sub1(a);

for(i=0;i<=10;i++)

printf("a[%d]=%d ,",i,a[i]);

printf("\n please input a key number: ");

scanf("%d",&key);

sub2(a,key,1,10);

getch();

}

int sub1(int b[])

{

int t,i,j,post;

for (i=1;i<10;i++)

{

post=i;

for(j=i+1;j<=10;j++)

if (b[post]>b[j])

post=j;

if(post!=i)

{

t=b[i];

b[i]=b[post];

b[post]=t;}

}

return 0;

}

int sub2(int c[],int k,int n0,int n1)

{

int i=n0,j=n1,m;

m=(i+j)/2;

while(i<=j)

{

if(k

j=m-1;

if(k>c[m])

i=m+1;

if(k==c[m])

break;

m=(i+j)/2;

}

if(k==c[m])

printf("OK!\n") ;

else

printf("NO FOUND!\n");

return 0;

}

13、编写一个程序,输入两个包含5个元素的数组,先将两个数组升序排列,然后将这两个数组合并成一个升序数组。

#include

#include

void main()

{

int i,j,k,a[6]={0},b[6]={0},c[11]={0},sub1();

clrscr();

printf("\nplease input 5 int numbers to array1: ");

for(i=1;i<=5;i++) //a[0] for no use

scanf("%d",&a[i]);

getchar();

sub1(a,5);

printf("\nplease input 5 int numbers to array2: ");

for(i=1;i<=5;i++) //b[0] for no use

scanf("%d",&b[i]);

getchar();

sub1(b,5);

printf("\nthe sorted array a is:\n\n");

for(i=1;i<=5;i++)

printf("a[%d]=%d ",i,a[i]);

printf("\n");

printf("\nthe sorted array b is:\n\n");

for(i=1;i<=5;i++)

printf("b[%d]=%d ",i,b[i]);

k=i=j=1;

while(i<=5&&j<=5)

if(a[i]

c[k++]=a[i++]; //c[0] for no use

else

c[k++]=b[j++];

if(i

c[k++]=a[i];

else //appending the rest ones in array b

for(;j<=5;j++)

c[k++]=b[j];

printf("\n\n");

printf("\nthe merged array c is:\n\n");

for(k=1;k<=10;k++)

{

if(k==6)

printf("\n");

printf("c[%d]=%d ",k,c[k]);

}

while(!kbhit());

}

int sub1(int b[],int n)

{

int t,i,j,post;

for(i=1;i

{

post=i;

for(j=i+1;j<=n;j++)

if(b[post]>b[j])

post=j;

if(post!=i)

{

t=b[i];

b[i]=b[post];

b[post]=t;

}

}

return 0;

}

14、耶稣有13个门徒,其中有一个就是出卖耶稣的叛徒,请用排除法找出这位叛徒:13人围坐一圈,从第一个开始报号:1,2,3,1,2,3……,凡是报到“3”就退出圈子,最后留在圈内的人就是出卖耶稣的叛徒,请找出它原来的序号。

/*

// approach one

#define N 13

#include

#include

struct person

{

int number; //its order in the original circle

int nextp; //record its next person

};

struct person link[N+1]; //link[0] for no use

void main()

{

int i,count,next; //count for 12 persons,and

//next for the person not out of circle yet

clrscr();

for (i=1;i<=N;i++)

{

link[i].number=i; //numbering each person

if(i==N)

link[i].nextp=1;

else

link[i].nextp=i+1; //numbering each next person

}

printf("\nThe sequence out of the circle is:\n");

for(next=1,count=1;count

{

i=1;

while (i!=3) //i counts 1,2,3

{

do //skip the ones whose numbers are zero

next=link[next].nextp;

while(link[next].number==0); //end of do

i++;

}

printf("%3d ",link[next].number);

link[next].number=0; //indicate out of circle already

do //start from the ones whose numbers are not zero next time

next=link[next].nextp;

while(link[next].number==0);

}

printf("\n\nThe betrayer of them is:");

for(i=1;i<=N;i++)

if(link[i].number)

printf("%3d\n",link[i].number);

getch();

}

*/

// approach two using cyclic list

#define N 13

#define LEN sizeof(struct person)

#include

#include

#include

#include

// struct person //permit struct placed here//

// {

// int number;

// struct person *next;

// };

void main()

{

int i,count;

struct person //or permit struct placed here also// {

int number;

struct person *next;

};

struct person *head,*p1,*p2;

clrscr();

head=p2=NULL;

for(i=1;i<=N;i++)

{

p1=(struct person *)malloc(LEN);

p1->number=i;

if(head==NULL)

head=p1;

else

p2->next=p1;

p2=p1;

}

p2->next=head;

printf("\nthe sequence out of the circle is:\n"); for (count=1;count

{

i=1;

while(i!=3)

{

p1=head;

head=head->next;

i++;

}

p2=head;

printf("%3d ",p2->number);

p1->next=head=p2->next;

free(p2);

}

printf("\nThe betrayer of them is:\n%3d",head->number);

getch();

}

15、编写一个程序,根据用户输入的不同边长,输出其菱形。例如,边长为3的菱形为:

16、按如下图形打印杨辉三角形的前10行。其特点是两个腰上的数都为1,其它位置上的每一个数是它上一行相邻两个整数之和。

#include

#include

#define N 10

void main()

{

int i,j,k,a[N][N];

clrscr();

for(i=0;i

{

a[i][0]=1;

a[i][i]=1;

}

for(i=2;i

for(j=1;j

a[i][j]=a[i-1][j-1]+a[i-1][j];

for(i=0;i

{

for(k=0;k<=3*(N-i);k++)

printf(" ");

for(j=0;j<=i;j++)

printf("%6d",a[i][j]);

printf("\n\n");

}

getch();

}

17、某班有5个学生,三门课。分别编写3个函数实现以下要求:

(1)求各门课的平均分;

(2)找出有两门以上不及格的学生,并输出其学号和不及格课程的成绩;

(3)找出三门课平均成绩在85-90分的学生,并输出其学号和姓名

主程序输入5个学生的成绩,然后调用上述函数输出结果。

#define SNUM 5 /*student number*/

#define CNUM 3 /*course number*/

#include

#include

/*disp student info*/

void DispScore(char num[][6],char name[][20],float score[][CNUM]) {

int i,j;

printf("\n\nStudent Info and Score:\n");

for(i=0;i

{

printf("%s ",num[i]);

printf("%s ",name[i]);

for(j=0;j

printf("%8.2f",score[i][j]);

printf("\n\n");

}

}

/*calculate all student average score*/

void CalAver(float score[][CNUM])

{

float sum,aver;

int i,j;

for(i=0;i

{

sum=0;

for(j=0;j

sum=sum+score[j][i];

aver=sum/SNUM;

printf("Average score of course %d is %8.2f\n",i+1,aver);

}

}

/*Find student: two courses no pass*/

void FindNoPass(char num[][6],float score[][CNUM])

{

int i,j,n;

printf("\nTwo Course No Pass Students:\n");

for(i=0;i

{

n=0;

for(j=0;j

if(score[i][j]<60)

n++;

if(n>=2)

{

printf("%s ",num[i]);

for(j=0;j

if(score[i][j]<60)

printf("%8.2f",score[i][j]);

printf("\n");

}

}

}

/*Find student: three courses 85-90*/

void FindGoodStud(char num[][6],char name[][20],float score[][CNUM])

{

int i,j,n;

printf("\nScore of three courses between 85 and 90:\n");

for(i=0;i

{

n=0;

for(j=0;j

if(score[i][j]>=85&&score[i][j]<=90)

n++;

if(n==3)

printf("%s %s\n",num[i],name[i]);

}

}

/*input student info*/

void main()

{

char num[SNUM][6],name[SNUM][20]; //array num refers to student number

float score[SNUM][CNUM]; //and its length is 6

int i,j;

clrscr();

printf("\nPlease input student num and score:\n");

for(i=0;i

{

printf("\n\nStudent%d number: ",i+1);

scanf("%s",num[i]);

printf("\nStudent%d name: ",i+1);

scanf("%s",name[i]);

printf("\nStudent%d three scores: ",i+1);

for(j=0;j

scanf("%f",&score[i][j]);

}

DispScore(num,name,score);

CalAver(score);

FindNoPass(num,score);

FindGoodStud(num,name,score);

getch();

}

18、编写一人个求X的Y次幂的递归函数,X为double型,y为int型,要求从主函数输入x,y的值,调用函数求其幂。

#include

#include

double fact(double x,int y)

{

if(y==1)

return x;

else

return x*fact(x,y-1);

}

void main()

{

double x;

int y;

clrscr();

printf("\nPlease x,y:");

scanf("%lf%d",&x,&y);

printf("\nx^y=%.2lf",fact(x,y));

getch();

}

19、打印魔方阵。

所谓魔方阵是指这样的的方阵:

它的每一行、每一列和对角线之和均相等。

输入n,要求打印由自然数1到n2的自然数构成的魔方阵(n为奇数)。

例如,当n=3时,魔方阵为:

8 1 6

3 5 7

4 9 2

魔方阵中各数排列规律为:

①将“1”放在第一行的中间一列;

②从“2”开始直到n×n为止的各数依次按下列规则存放:每一个数存放的行比前一个数的行数减1,列数同样加1;

③如果上一数的行数为1,则下一个数的行数为n(最下一行),如在3×3 方阵中,1在第1行,则2应放在第3行第3列。

④当上一个数的列数为n时,下一个数的列数应为1,行数减1。如2在第3行第3列,3应在第2行第1列。

⑤如果按上面规则确定的位置上已有数,或上一个数是第1行第n列时,则把下一个数放在上一个数的下面。如按上面的规定,4应放在第1行第2列,但该位置已被1占据,所以4就放在3的下面。由于6是第1行第3列(即最后一列),故7放在6下面。

#include

#include

#define Max 15

void main()

{

int i,row,col,odd;

int m[Max][Max];

clrscr();

printf("\nPlease input an odd:");

scanf("%d",&odd);

if(odd<=0||odd%2==0)

{

printf("\nInput Error!\n");

getch();

return 0;

C语言试题及答案

一、单项选择题 1. 软件危机具有下列表现( d )。 I. 对软件开发成本估计不准确II. 软件产品的质量往往靠不住 III. 软件常常不可维护IV. 软件成本逐年上升 A. I、II和III B. I、III和IV C. II、III和IV D. 以上都正确 2. 软件生命周期一般都被划分为若干个独立的阶段,其中占用精力和费用最多的阶段往往是( A )。 A. 运行和维护阶段 B. 设计阶段 C. 代码实现阶段 D. 测试阶段 3. 下列属于软件的特点的是( D )。 A. 软件是一种逻辑实体,具有抽象性 B. 软件在使用过程中没有磨损、老化的问题 C. 软件不同于一般程序,它的一个显着特点是规模庞大,复杂程度高 D. 以上都正确 4. 软件工程的出现是由于( D )。 A. 软件危机的出现 B. 计算机硬件技术的发展 C. 软件社会化的需要 D. 计算机软件技术的发展 5. 软件开发技术不包含( d )。 A. 软件开发方法学 B. 软件工程环境 C. 软件工具 D. 软件质量度度量 6. 软件工程的课程特点( D )。 I. 学科理论及其知识应用的多维性 II. 工程化 III. 浓厚的方法学色彩 IV. 实践性、指导性强 A. I、II和III B. I、III和IV C. II、III和IV D. 以上都正确 7. 下列属于应用软件的是( b )。 I. 计算机辅助教学软件II. 软件测试工具 III. 办公自动化软件IV. 工程与科学计算软件 A. I、II和III B. I、III和IV C. II、III和IV D. 以上都正确 8. 需求分析阶段最重要的技术文档是( b )。

2008年全国青少年信息学奥林匹克竞赛获奖名单

2008年全国青少年信息学奥林匹克竞赛获奖名单 一等奖 姓名学校姓名学校 曹钦翔上海中学梅诗珂合肥一中 高逸涵清华附中张昆玮山西省实验中学贾志豪石家庄二中李骥扬石家庄二中 罗穗骞华南师大附中董华星绍兴一中 漆子超长沙雅礼中学汤可因福州八中 姜碧野中山纪念中学刘聪山东青岛二中 方展鹏中山一中金斌江苏省常州高级中学毛杰明南京外国语学校周而进绍兴一中 徐持衡温州中学骆可强成都七中 武森石家庄二中徐源盛长沙市一中 二等奖 姓名学校姓名学校 罗韬威长沙长郡中学吕潇山东师大附中 覃亮柳州高级中学李博闻东北师大附中 林舒福州三中何思博中山一中 赖陆航杭州二中刘思壮唐山一中 唐浩师大附中商静波绍兴一中 李尔坦蚌埠二中马文萱成都七中 邹逊蚌埠九中冀崇恩山大附中 陈键飞山东师大附中隋清宇天津耀华中学 严枭华东师大二附中张超哈尔滨市第三中学谭睿巴蜀中学胡正一南昌第二中学 杨晶江苏省常州高级中学杜江帆山东寿光现代中学潘宇超绍兴一中孙征杭州二中 寿鹤鸣合肥一中刘鹰长沙雅礼中学 李恺威杭州学军中学崔万云河南师大附中分校刘骏重庆一中周小博华东师大二附中黄相如武钢三中王寿临高中学 张晓然丹东四中 三等奖 姓名学校姓名学校

强瑞鑫山西省实验中学何博硕人大附中 韩文轩香港培正中学杜若飞大庆市第一中学刘艺成大庆市实验中学李聪重庆八中 吴沛凡江苏省常州高级中学陈凤娇八一中学 吕伟聪南京外国语学校钟晓辉海南侨中 蒋立绍兴一中何新骥成都大湾中学 杨欢天津南开中学孙天佑哈尔滨市第三中学沙渺吉林省实验中学张程山东师大附中 韦人柳州高级中学邵林博杭州学军中学 李欣彤成都七中曹瑞晴上海中学 李博放绵阳南山中学王亚盛兰州一中 何洋常州一中王華溪濠江中学 王东生东北育才学校史沛郑州101中学 陈曦仑吉林一中张瀚天人大附中 谢怡然北江中学陈柏熙香港培正中学 朱虹宇福州一中贾骏超西安市高新一中陈宇澄成都七中张嘉然石家庄二中 喻展芜湖安师大附中王仪康重庆一中 陈庆鹏新余市第四中学江沄柳州高级中学 代明昊华南师大附中王士玮海南中学 杨睿武钢三中邱堃武汉二中 张蕾长沙长郡中学白彦博西安市第八十三中学李佩谦东北师大附中罗维汉香港培正中学 王一帆人大附中周绪刚华中师大附中 赵灿辉天津耀华中学

C语言试卷2及答案

扬州大学试题纸 系课程 C语言程序设计(A)卷2002—2003学年第2学期 班级_________学号________姓名__________得分___________ 一、选择题(每题分,共30分): 1、已知:char a; int b; float c; double d; 则执行语句:c=a+b+c+d; 后,变量c的类型为。 A. char B. int C. float D. double 2、已有定义int x; float y; 且执行scanf(“%2d%f”,&x,&y);语句时, 从第一列开始输入数据12345 67<回车>,则y的值是。 A. 无定值 B. 345.00000 C. D. 3、设有以下程序段 int x=0; s=0; while (!x!=0) s+=++x; printf(“%d”,s); 则。 A. 运行程序段后输出0 B. 运行程序段后输出1 C. 程序段中的控制表达式是非法的 D. 程序段执行无限次 4、若i为整型变量,则以下循环执行次数是。 for(i=2; i==0;) printf(“%d”, i--); A. 无限次 B. 2次 C. 1次次 5、假设char ch=’a’, *p=&c h; ,以下语句中,有语法错误的是 . A. (*p)++; B. ch+=—‘a’+’A’; C. toupper(ch)=ch; D. ch++; 6、若说明:char *language[ ]={“VFP”,”C”,”VB”,”VC”,”JAVA”}; 则language[2]的值是。 A. 一个字符 B. 一个地址 C. 一个字符串 D. 一个不定值 7、C语言程序中,当调用函数时。 A. 实参和虚参可以共用存储单元 B. 实参和虚参各占一个独立的存储单元 C. 可以由用户指定是否共用存储单元 D. 由计算机系统自动确定是否共用存储单元 8、在程序中要使用语句:printf(“%s\n”, STRING); 输出提示信息:“OK! ”(包括双引号),则应使用宏定义语句。 A. #define STRING “OK!” B. #define STRING “”OK!”” C. #define STRING \”OK!\” D.以上三个答案都是错误的 9、数组和链表都可以用于存储一组数据,以下说法不正确的是_____________。 A. 数组占用连续的一块存储区域,链表可能占用若干不连续的存储区域 B. 数组和链表所占用的存储区域均不能在程序运行期间动态分配 C. 数组中的数据可以随机存取或顺序存取,链表中的数据只能顺序存取 D. 数组的长度是固定的,链表的长度是不固定的。 10、已知语句FIL E *fp; char ch= ‘c’;fp=fopen(“”,”w”);如果需要将ch的值保存到一个磁盘文件中,

人教版二年级语文寒假作业答案参考

人教版二年级语文寒假作业答案参考 一.我是小小调音师。(请你在认为准确的读音后面画 b V )1(分 a n( ) c i ( ) w e i ( ) sh 1 ( ) ch a o() 板{刺{猬{泄 {糙{ d a n( ) ch i ( ) wi e ( ) xi e ( ) c a o( ) 二. 我来填四字词。8 分 三( )二( ) ( )颜( )色( )仙( )海叫( )连( ) 女娲( )( ) 无( )无( ) 翠绿的( ) ( )的太阳( )来( )去悄悄地( ) 高兴地( ) 一个比一个( ) 三. 我的选择不会错。 6 分想响拔拨漂亮美好 1、上课的铃声( )了,我飞快地向教室跑去。 2、妈妈出国了,我很( )念她。 3、小白兔去菜园里( )了很多萝卜。 4、小鱼用尾巴来( )水。 5、夜晚的景色很( )。 6、( )的日子令人难忘。 四、变一变,句子的意思不能变!6 分 1. 刘老师是我们的语文老师。 2. 小明把教室打扫得十分干净。 3. 银杏叶像扇子。 五、课文加油站。10 分 ①()对富,冷对(),饥寒对(),索取对奉献。 ②雪中送炭见( ),( )献爱心。 ③一根筷子( ),一把筷子( )。 ④()百花齐春满园。 ⑤()月()日祖国妈妈的生日。 六、阅读加油站。11 分冬姑娘来到公园。她看到许许多多的人,男的、女的、老的、少的,有的在滑雪,有的在打雪仗、堆雪人,还有的在冰天雪地看景、写诗、画画,拍照留影。他们都被这优

美的雪景迷住了。 1. 短文共有句话。第二句写的活动有、、、、、、。 2. 这段话描写的是季节。 3?用有的??…有的??…还有的……”一句话。 七、请你来写写话,一定要看清要求哟!15 分 题目:1?老师,我想对你说…… 2?我最兴奋的一件事 3?写一篇日记 要求:选一个喜欢的题目,写出自己的心里话。人教版二年级语文寒假作业练习题-参考答案 一、b a o(V) c i (V) w e i(V) xi e (V) c a o(V) 二、(五)颜(六)色叫(苦)连(天)女娲(补)(天)无(边)无(际)后面四个机动,只要符合题意即可。 三、1.响2?想3?拔4.美丽5?美好 四、1?我们的语文老师是刘老师。 2?教室被小明打扫得十分干净。 3?扇子像银杏叶。 五、① 贫暖温饱 ②真情助人为乐 ③轻易折难折断 ④一花独放不是春 ⑤(十)月(一)日 六、① 三句话滑雪打雪仗堆雪人看景写诗画画拍照留影② 冬③ 略 七、略

C语言试卷及答案

《C语言程序设计》考试试卷(答案) 一、填空题(每小空1分,共10分) 1.C语言程序的三种基本结构是顺序结构、选择结构、循环结构。 2.一个C程序有且仅有一个main( ) 函数。 3.C语言描述“x和y都大于或等于z”的表达式是x>=z && y>=z。 4.C语言可以用来实现循环的结构化语句是while、do while、for。 5.数组名表示数组在内存的首地址。 6.int a=3,*p=&a;*p+2的值是5。 二、单项选择题(每小题2分,共70分) 1.__B___是C语言合法的常量。 (A).45(B)078 (C)25.6e3.4 (D)‘xy’2.一个程序的执行是从 A 。 (A)本程序的main函数开始,到main函数结束 (B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束。 (C)本程序的main函数开始,到本程序文件的最后一个函数结束。 (D)本程序文件的第一个函数开始,到main函数结束。 3.以下叙述正确的是 C 。 (A)在C程序中,main函数必须位于程序的最前面。 (B)C程序每行中只能写一条语句。 (C)C语言本是没有输入输出语句。 (D)在对一个C程序进行编译的过程中,可发现注释中的拼写错误。 4.以下叙述不正确的是 D 。 (A)逗号运算符的运算级最低。 (B)ABC和abc是两个不同的变量。 (C)若a和b类型相同,在执行a=b后,b的自身值不变。 (D)‘a’和“a”是完全等价的常量。 5.int x=3,y=2;则表达式x+=x*=y+8的值为 C 。 (A)28 (B)30 (C)60(D)17 6.设x=2.7,a=8,y=4.9,算术表达式x+a%3*(int)(x+y)%5/3的值为 B 。 (A)2.7 (B)3.7(C)4.7 (D)4.03 7.执行下面两个语句后,输出的结果为__D___。 char c1=98; printf(“%d %c”,c1,c1-32); (A)97 66 (B)98 b (C)b 66 (D)98 B 8.执行下面语句后的结果为 C 。 y=10;x=y++; (A)x=10,y=10 (B)x=11,y=11 (C)x=10,y=11(D)x=11,y=10 9.Char w;int x;float y;double z;则表达式w*x+z-y值的数据类型是A 。 (A)double (B)char (C)int (D)float 10.C语言中要求操作数必须是整数的运算符是 B 。

青少年中学生信息学奥赛试题精选33题(附带题解)

青少年中学生信息学奥赛试题精选33题(附带题解) 第1~10题为基础题,第11~20题为提高题,第21~33为综合题 基础题: 【1 Prime Frequency】 【问题描述】 给出一个仅包含字母和数字(0-9, A-Z 以及a-z)的字符串,请您计算频率(字符出现 的次数),并仅报告哪些字符的频率是素数。 输入: 输入的第一行给出一个整数T( 0

双素数(Twin Primes)是形式为(p, p+2),术语“双素数”由Paul St?ckel (1892-1919)给出,前几个双素数是(3, 5), (5, 7), (11, 13), (17, 19), (29, 31), (41, 43)。在本题中请你给出第S对双素数,其中S是输入中给出的整数。 输入: 输入小于10001行,每行给出一个整数S (1≤ S≤ 100000),表示双素数对的序列编号。输入以EOF结束。 输出: 对于输入的每一行,输出一行,给出第S对双素数。输出对的形式为(p1,空格p2),其中“空格”是空格字符(ASCII 32)。本题设定第100000对的素数小于20000000。 样例输入样例输出 1 2 3 4 (3, 5) (5, 7) (11, 13) (17, 19) 注: 试题来源:Regionals Warmup Contest 2002, Venue: Southeast University, Dhaka, Bangl adesh 在线测试:UVA 10394 提示 设双素数对序列为ans[]。其中ans[i]存储第i对双素数的较小素数(1≤i≤num)。ans[]的计算方法如下: 使用筛选法计算出[2,20000000]的素数筛u[]; 按递增顺序枚举该区间的每个整数i:若i和i+2为双素数对(u[i]&&u[i+2]),则双素数对序列增加一个元素(ans[++num]=i)。 在离线计算出ans[]的基础上,每输入一个编号s,则代表的双素数对为(ans[s],ans[s]+ 2)。 【3 Less Prime】 【问题描述】 设n为一个整数,100≤n≤10000,请找到素数x,x≤ n,使得n-p*x最大,其中p是整数,使得p*x≤n<(p+1)*x。 输入: 输入的第一行给出一个整数M,表示测试用例的个数。每个测试用例一行,给出一个 整数N,100≤N≤10000。 输出: 2

C语言模拟试卷2(带答案)

,. 单选题: 1、执行下面的程序段后,变量k中的值为 s[0]=k; k=s[1]*10; A. 不定值 B. 33 C. 30 D. 10 答案: A 2、设有以下定义: #define N 3 #define Y(n) ( (N+1)*n) 则执行语句:z=2 * (N+Y(5+1));后,z的值为_______.2*(3+ (4*5+1) A. 出错 B. 42 C. 48 D. 54 答案: C 3、若已定义X和Y为double型,则表达式:x=1,y=x+3/2的值是____ A. 1 B. 2 C. 2.0 D. 2.5 答案: c 4、请选出以下语句的输出结果____ printf("%d\n",strlen("\t\ 065\xff\n")) A. 5 B. 4 C. 8 D. 输出项不合法,无正常输出 答案: B 5、为避免嵌套的条件分支语句if…else的二义性,C语言规定,C 程序中的 else总是与____组成配对关系。 A. 其上面距它最近的,并且没有其他else与其配对的if相配对 B. 在同一行上的if C. 缩排位置相同的if D. 在其之前未配对的if 答案: A 6、若X和Y都是int型变量,X=100,Y=200,且有下面的程序片段: printf("%d",(X,Y)); 上面程序片段的输出结果是 A. 200 B. 100 C. 100 200 D. 输出格式符不够,输出不确定的值 答案: A 7、请读程序片段(字符串内没有空格字符): printf("%d\n", strlen("ATS\n012\1\\")); 上面程序片段的输出结果是 A. 11 B. 9 C. 10 D. 8 答案: B 8、设有以下程序段 int x=0,s=0; while(!x!=0) s+=++x; printf("%d",s); 则______ A. 运行程序段后输出0 B. 运行程序段后输出1 C. 程序段中的控制表达式是非法的 D. 程序段执行无限次 答案: B 9、阅读下列程序: main( ) { int n[3],i,j,k; for(i=0;i〈3;i++) n[i]=0; k=2; for (i=0;i < k;i++) i=0: n[0]=1,n[1]=2 i=1: =3 =3 for (j=0;j〈2;j++) n[j]=n[i]+1; printf("%d\n",n[1]); } 下述程序运行后输出结果是 A. 2 B. 1 C. 0 D. 3 答案: D 10、输入一个华氏温度,要求输出摄氏温度。计算公式为: c=5/9(F-32),以下程序正确的是() A. main() { float c,F; scanf("%f,%f",&c,&F); c=5/9*(F-32); printf("摄氏温度是:%f\n",c); }

小学二年级数学寒假作业答案(苏教版)

小学二年级数学寒假作业答案(苏教版) 亲爱的小朋友,快乐的寒假来到了,你们可以放松一下自己了!在愉快的暑假中, 希望你们能按时认真地完成寒假作业。下面是为大家分享的小学二年级数学寒假作业答案,希望对大家有帮助。 一、填空 1.写出下面各数的近似值(省略最高位后面的尾数) 489≈3499≈817≈2510≈ 2.两个两位数相乘,积的最高位可能是()位,也可能是()位。 3.一个数的19倍是665,这个数是()。 4.2019年是()年,全年有()个星期零()天。 5.单产量()总产量总价()单价 ()()速度工作效率()工作总量 6.小刚晚上9:30睡觉,第二天早上6:30起床,他共睡()小时。 7.甲数是240,是乙数的6倍,甲、乙数的和是()。 8.在一天的时间里,钟表上的时针正好走()圈,共()小时。 9.公历年份是4的倍数是年份,一般是()年,公历年份是整百的,必须是()的倍数才是闰年。 10.216时=()日3年4个月=()月 360时=()日240分=()时 3分40秒=()秒50个月=()年()个月

72个月=()年6星期=()天 11.用24时计时法表示下面的时刻 上午8时是()下午6时是()晚上10时是() 早上6时是()下午4时是()晚上8时是() 12.用普通计时法表示下面的时刻 9时()20时()16时() 22点是晚上()17点是下午() 13、一节课40分钟,第三节课10时25分上课,到()时()分下课。 14、把“280-200=80,80÷4=20”组成一个综合算式是()。 15、在下面○里填上“”“=”。 17×6+12○17×(6+12)32÷2×4○32÷(2×4) 184÷4÷4○184÷(4×4)780÷(36÷6)○780÷6÷36 16、小刚5分钟走300米,照这样计算,他12分钟走()米。 17、根据列出的算式,写出所求的问题。 百货店运来8箱毛巾,每箱40条,每条售价6元。__________? 解法一:算式:40×8问题() 6×(40×8)问题() 解法二:算式:6×40问题() 6×40×8问题() 18、计算27+92÷3×2时,应先算(),再算(),最后算()。 19、先在□内填上合适的数,再列综合算式。

c语言试题及答案

1、以下正确的说法是( B ) (A) 用户若需要调用标准库函数,调用前必须重新定义 (B) 用户可以重新定义标准库函数,若如此,该函数将失去原有含义 (C) 系统根本不允许用户重新定义标准库函数 (D) 用户若需调用标准库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自动去调 2、以下正确的函数声明形式是( A ) (A) double fun(int x, int y) (B) double fun(int x; int y) (C) double fun(int x, int y); (D) double fun(int x,y); 3、以下正确的函数形式是( D ) (A) double fun(int x, int y) { z=x+y; return z;} (B) fun(int x,y) { int z; return z;} (C) fun(x,y) { int x,y; double z; z=x+y; return z;} (D) double fun(int x, int y) { double z; z=x+y; return z;} 4、以下正确的说法是( A ) 在C语言中 (A) 实参和与其对应的形参各占用独立的存储单元 (B) 实参和与其对应的形参共占用一个存储单元 (C) 只有当实参和与其对应的形参同名时才共占用存储单元 (D) 形参是虚拟的,不占用存储单元 5、若调用一个函数,且此函数中没有return语句,则正确的说法是( A ) 该函数 (A) 没有返回值 (B) 返回若干个系统默认值 (C) 能返回一个用户所希望的函数值 (D) 返回一个不确定的值 6、以下不正确的说法是( B ) C语言规定 (A) 实参可以是常量、变量和表达式 (B) 形参可以是常量、变量和表达式 (C) 实参可以为任意类型 (D) 形参应与其对应的实参类型一致 7、以下正确的说法是( C ) (A) 定义函数时,形参的类型说明可以放在函数体内 (B) return后边的值不能为表达式 (C) 如果函数值的类型与返回值类型不一致,以函数值类型为准 (D) 如果形参与实参的类型不一致,以实参类型为准 8、C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是( B ) (A) 地址传递 (B) 单向值传递 (C) 由实参传给形参,再由形参传回给实参 (D) 由用户指定传递方式

(noip2019)二十三届全国青少年信息学奥赛初赛试题及答案c++.doc

言简意赅,远见卓识,望君采纳,谢谢!删除水印可,编辑页眉,选中水印,点击删除。 第二十三届全国青少年信息学奥林匹克联赛初赛 普及组 C++ 语言试题 竞赛时间: 2019 年 10 月 14 日 14:30~16:30 选手注意: ●试题纸共有 7 页,答题纸共有 2 页,满分 100 分。请在答题纸上作答,写在试题纸上的一律无效。 ●不得使用任何电子设备(如计算器、手机、电子词典等)或查阅任何书籍资料。 一、单项选择题(共20 题,每题 1.5 分,共计30 分;每题有且仅有一个正确选项) 1.在 8 位二进制补码中, 10101011 表示的数是十进制下的()。 A. 43 B. -85 C. -43 D. -84 2. 计算机存储数据的基本单位是( A. bit B. Byte C. GB )。 D. KB 3.下列协议中与电子邮件无关的是()。 A. POP3 B. SMTP C. WTO D. IMAP 4. 分辨率为 A. 937.5KB 800x600 、16 位色的位图,存储图像信息所需的空间为( B. 4218.75KB C. 4320KB D. 2880KB )。 5.计算机应用的最早领域是()。 A. 数值计算 B. 人工智能 C. 机器人 D. 过程控制 6.下列不属于面向对象程序设计语言的是 ( A. C B. C++ C. Java D. C# )。 7.NOI 的中文意思是()。 A. 中国信息学联赛 B. 全国青少年信息学奥林匹克竞赛 C. 中国青少年信息学奥林匹克竞赛 D. 中国计算机协会 8.2017 年 10 月 1 日是星期日, 1999 年 10 月 1 日是()。 A. 星期三 B. 星期日 C. 星期五 D. 星期二

(完整版)C语言试题及答案解析

C语言 一、选择题(第题2分,共20分) 1.一个C程序的执行是从 A 。 A) 本程序的main函数开始,到main函数结束 B) 本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C) 本程序文件的第一个函数开始,到本程序main函数结束 D) 本程序的main函数开始,到本程序文件的最后一个函数结束 2.若x、i、j、k都是int型变量,则计算下面表达式后,x的值为 C 。 x=(i=4,j=16,k=32) A) 4 B) 16 C) 32 D) 52 3.设C语言中,一个int型数据在内存中占2个字节,则unsigned int 型数据的取值范围为 C 。 A) 0~255 B) 0~32767 C) 0~65535 D) 0~2147483647 4.设有说明:char w; int x; float y; double z;则表达式w*x+z-y值的数据类型为 D 。 A) float B) char C) int D) double 5. putchar函数可以向终端输出一个 D 。 A) 整型变量表达式 B) 实型变量值 C) 字符串 D) 字符或字符型变量值 6. printf函数中用到格式符%5s,其中数字5表示输出的字符串占用5列。如果字符串长度大于5,则输出按方式 B ;如果字符串长度小于5,则输出按方式 C 。 A) 从左起输出该字符串,右补空格 B) 按原字符长从左向右全部输出 C) 右对齐输出该字符串,左补空格 D) 输出错误信息 7.判断char型变量ch是否为大写字母的正确表达式是 C 。 A) ‘A’<=ch<=‘Z’ B) (ch>=‘A’)&(ch<=‘Z’) C) (ch>=‘A’)&&(ch<=‘Z’) D) (‘A’<= ch)AND(‘Z’>= ch) 8.已知int x=10,y=20,z=30;以下语句执行后x,y,z的值是 B 。 if(x>y) z=x; x=y; y=z; A) x=10, y=20, z=30 B) x=20, y=30, z=30 C) x=20, y=30, z=10 D) x=20, y=30, z=20 9.以下程序段______C__. x=-1; do{ x=x*x; } while(!x); A)是死循环 B)循环执行二次 C)循环执行一次 D)有语法错误 10.以下正确的描述是___B____. A)continue语句的作用是结束整个循环的执行

小学二年级数学下册寒假作业(含答案)

2019年小学二年级数学下册寒假作业(含答 案) 寒假是适用于全世界在校学生的一个较长的夏季假期。一般在7月-8月左右。。查字典数学网提供了小学二年级数学下册寒假作业,希望能帮助大家更好的复习所学的知识。 一、填空。(共26分) 1.看图列式。 2. ◇△=23,△最小是( ),这时◇是( )。 3. 8个一和3个千是( )。8个百和5个十合起来是( )。 4.用3、4、0、6组成的最大四位数是( ),最小的数是( ),最接近4000的数是( )。 5.最小的四位数是( ),排在它前面的一个数是( )。 6. 这个数写作:( )。 7.根据数的规律接着写三个数。 330、320、310、( )、( )、( )。 5080、5090、( )、( )、( )。 919、828、737、( )、( )、( )。 8. 在( )里填上合适的单位。 小华跑100米用了20( ),小红吃饭大约用15( )。 午睡大约用1( )。一块橡皮大约厚15( )。 课桌高大约是7( )。小明身高130( )。

9. 在○里填上、或=。 5毫米○3厘米40分米○4米60分○6时 10.把下面各数按从大到小的顺序排列。 998 1010 1001 1100 11.一台电脑5018元,大约是( )元。 二、计算(共24分) 1.直接写出得数。(10分) 500+2=66+28=80-26=1000-400= 39+53=800+900=1600-900=6030-30= 30+400=65-23=486=91-34= 568=36+24=55+37=800+7000= 60+70=83-54=670-600=56-32= 2.用竖式计算。(加★题要验算) (14分) ★657+468= ★672-254= 172= 485= 386+531-429= 727-529+267= 三、选择正确答案的序号。(10分) 1.★8=□△,△一定不是( ) ① 6 ② 7 ③ 8 2.用5、0、6 三张卡片摆三位数,能摆成( )个不同的三位数。 ①2个②4个③6个 3.每个皮球8元,用50元钱买7个皮球还差( )元。 ①5元②6元③7元

C语言试卷及答案

一、选择题(每题 1 分,共 20 分) 1. C 语言程序的三种基本结构是顺序结构、选择结构和结构。 A、循环 B、递归 C、转移 D、嵌套 2. 下列标识符中,合法的是_______ 。 A) unsigned B) 5ab C) INT# D)_num2 3. 若float x ;x = 10/4 ;x的值是。 A、2.5 B、2.0 C、3 D、 2 4. 表达式!x 等价于。 A、x==0 B、x==1 C、x != 0 D、x != 1 5. 算术运算符、赋值运算符和关系运算符的运算优先级按从高到低的顺序依次为。 A、算术运算、赋值运算、关系运算 B、关系运算、赋值运算、算术运算 C、算术运算、关系运算、赋值运算 D、关系运算、算术运算、赋值运算 6. 能将高级语言编写的源程序转换为目标程序的是。 A、链接程序 B、解释程序 C、编译程序 D、编辑程序 7. 下列语句定义pf为指向float类型变量f的指针,是正确的。 A、float f, *pf = f; B、float f, *pf = &f; C、float *pf = &f, f; D、float f, pf = f; 8. 一个C程序的执行是从。 A、本程序的main函数开始,到main函数结束 B、本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C、本程序的main函数开始,到本程序文件的最后一个函数结束 D、本程序文件的第一个函数开始,到本程序main函数结束 9. 能正确表示“当x的取值在[1,10]或[[200,210]范围内为真,否则为假”的表达式是________。 A、(x>=1)&&(x<=10)&&(x>=200)&&(x<=210) B、(x>=1)||(x<=10)||(x>=200)||(x<=210) C、(x>=1)&&(x<=10)||(x>=200)&&(x<=210) D、(x>=1)||(x<=10)&&(x>=200)||(x<=210) 10. 对两个数组a和b进行如下初始化 char a[]=“ABCDEF”;char b[]={ …A?,?B?,?C?,?D?,?E?,?F?}; 则以下叙述正确的是。 A、a和b数组完全相同 B、a和b长度相同 C、a和b中都存放字符串 D、a数组比b数组长度长 11. 是不正确的字符常量。 A、'\n' B、'1' C、"a" D、'\101' 12. 若变量已正确定义,语句“if(a>b) k=0; else k=1;”和等价。 A、k=(a>b)?1:0; B、k=a>b; C、k=a<=b; D、a<=b ? 0 : 1; 13. 设变量定义为“int x, *p=&x;”,则&*p相当于。 A、p B、*p C、x D、*&x 14. 有两个字符数组a、b,则以下正确的输入语句是。 A)gets(a,b); B) scanf(“%s%s”,a,b); C) scanf(“%s%s”,&a,&b); D) gets(“a”),gets(“b”); 15. C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是。 A、地址传递 B、单向值传递

NOIP-2017全国青少年信息学奥林匹克联赛提高组初赛试题答案

NOIP 2017全国青少年信息学奥林匹克联赛提高组初赛试题答案 ? 一、单项选择题(共 15 题,每题 1.5 分,共计 22.5 分;每题有且仅有一个正确选项)? 1. 从( )年开始,NOIP 竞赛将不再支持 Pascal 语言。 A. 2020 B. 2021 C. 2022 D. 2023 ? 2.在 8 位二进制补码中,10101011 表示的数是十进制下的( )。 A. 43 B. -85 C. -43 D.-84 ? 3.分辨率为 1600x900、16 位色的位图,存储图像信息所需的空间为( )。 A. 2812.5KB B. 4218.75KB C. 4320KB D. 2880KB ? 4. 2017年10月1日是星期日,1949年10月1日是( )。 A. 星期三 B. 星期日 C. 星期六 D. 星期二 ? 5. 设 G 是有 n 个结点、m 条边(n ≤m)的连通图,必须删去 G 的( )条边,才能使得 G 变成一棵树。 A.m–n+1 B. m-n C. m+n+1 D.n–m+1 ? 6. 若某算法的计算时间表示为递推关系式: T(N)=2T(N/2)+NlogN T(1)=1 则该算法的时间复杂度为( )。 A.O(N) B.O(NlogN) C.O(N log2N) D.O(N2) ? 7. 表达式a * (b + c) * d的后缀形式是()。 A. abcd*+* B. abc+*d* C. a*bc+*d D. b+c*a*d

? 8. 由四个不同的点构成的简单无向连通图的个数是( )。 A. 32 B. 35 C. 38 D. 41 ? 9. 将7个名额分给4个不同的班级,允许有的班级没有名额,有( )种不同的分配方案。 A. 60 B. 84 C. 96 D.120 ? 10. 若f[0]=0, f[1]=1, f[n+1]=(f[n]+f[n-1])/2,则随着i的增大,f[i]将接近与( )。 A. 1/2 B. 2/3 D. 1 ? 11. 设A和B是两个长为n的有序数组,现在需要将A和B合并成一个排好序的数组,请问任何以元素比较作为基本运算的归并算法最坏情况下至少要做( )次比较。 A. n2 B. nlogn C. 2n D.2n-1 ? 12. 在n(n>=3)枚硬币中有一枚质量不合格的硬币(质量过轻或质量过重),如果只有一架天平可以用来称重且称重的硬币数没有限制,下面是找出这枚不合格的硬币的算法。请把 a-c三行代码补全到算法中。 a. A XUY b. A Z c. n |A| 算法Coin(A,n) 1. k n/3 2. 将A中硬币分成X,Y,Z三个集合,使得|X|=|Y|=k, |Z|=n-2k 3. if W(X)≠W(Y) //W(X), W(Y)分别为X或Y的重量 4. then_______ 5. else_______ 6. __________ 7. if n>2 then goto 1 8. if n=2 then 任取A中1枚硬币与拿走硬币比较,若不等,则它不合格;若相等,则A 中剩下的硬币不合格 9. if n=1 then A中硬币不合格 正确的填空顺序是( )。 A. b,c,a B. c,b,a C. c,a,b D.a,b,c ?

c语言试题及答案 (2)

C语言部分 一、选择题(每小题2分,共10分) (下在各小题,分别有一个或多个正确答案,请将所有正确答案的编号,填写在该小题题干后的括号内。错选或漏选均不得分)。 1、若定义:int a[2][3]{0,2,4,6,8,10};以下描述正确的有( A,C,D, E ) A、*(a+1)为元素6的地址 这里a+1=a[1]的地址;*(a+1)的值是6,故A正确。 B、*(a[1]+1)的值为2 为8,故B不正确 C、**(a+1)+2的值为8 这里a+1是一个指针,指向的是a[1]. *(a+1)为a[1],a[1]指向的是a[1][0]. **(a+1)为6,加2得8,故C正确; D、a[0]与a相同 因二者都是指针,指针的地址都是指向数组中的第一个元素的地址,故D正确。 E、a[1][2]的值为10 它是指第二行的第三个元素,为10,正确 2、对函数的正确使用方法描述( A,C,D )。 A、用数组做函数参数时,必须在主调函数和被调函数中分别定义数组 B、实参数组元素和形参数组元素类型可以不一致 C、形参数组长度可以不指定 D、形参数组长度可以大于实参数组长度 E、数组名做参数属于值传递 3、对静态变量的正确描述( A,B,D,E ) A、静态局部变量在静态存储区内分配单元() B、静态外部变量可以赋初值,也可以不赋初值 C、静态外部变量的作用与外部变量相同 D、静态局部变量在函数调用结束时,仍保存其值,不会随着消失。 E、静态局部变量只赋一次初值 4、下列描述正确的是( A ,C)。 A、由main 函数及其参数argc和* argv[]可以实现命令行方式 B、使用fclose关闭文件时,先释放文件指针,再写缓冲区数据到文件中 //先写缓冲区数据到文件中,再释放文件指针 C、字符数组并不要求它的最后一个字符是‘\0’ //是的,以字符指针指向的字符串才要求,因为只有这样,才能知道字符串的长度,而在字符数组中,不用\0,一样可以知道到哪里是字符数组的结尾。 D、‘A’和“A”都是字符串常量 E、若char*S=“\ta\017bc”;则指针变量S指向的字符串所占的字节数是7 5、在缓冲文件系统中用于读写的函数有( A,B,D ) A、putchar () B、fread() C、rewind () D、purw() E、fseek() 二、程序阅读,并给出运行结果(共10分,每题5分)。 (1)main() { unsigned a,b,x int n; a=0x763 输出结果:

第十六届全国青少年信息学奥林匹克联赛初赛试题_提高组(c语言)

第十六届全国青少年信息学奥林匹克联赛初赛试题 (提高组 C 语言二小时完成) ●●全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效●● 一.单项选择题(共10题,每题 1.5分,共计15分。每题有且仅有一个正确选项。) 1.与16进制数A1.2等值的10进制数是() A.101.2 B.111.4 C.161.125 D.177.25 2.一个字节(byte)由()个二进制位组成。 A.8 B.16 C.32 D.以上都有可能 3.一下逻辑表达式的值恒为真的是( A.P∨(┐P∧Q)∨(┐P∧┐Q) C.P∨Q∨(P∧┐Q)∨(┐P∧Q) ) B.Q∨(┐P∧Q)∨(P∨┐Q) D.P∨┐Q∨(P∧┐Q)∨(┐P∧┐Q) 4.Linux下可执行文件的默认扩展名为() A.exe https://www.doczj.com/doc/091031292.html, C.dll D.都不是 5.如果在某个进制下等式7*7=41成立,那么在该进制下等式12*12=()也成立。 A.100 B.144 C.164 D.196 6.提出“存储程序”的计算机工作原理的是()。 A.克劳德·香农 B.戈登·摩尔 C.查尔斯·巴比奇 D.冯·诺依曼 7.前缀表达式“+3*2+5 12”的值是() A.23 B.25 C.37 D.65 8.主存储器的存取速度比中央处理器(CPU)的工作速度慢很多,从而使得后者的效率受到影响。而根据局部性原理,CPU所访问的存储单元通常都趋于聚集在一个较小的连续区域中。于是,为了提高系统整体的执行效率,在CPU中引入了() A.寄存器 B.高速缓存 C.闪存 D.外存 9.完全二叉树的顺序存储方案,是指将完全二叉树的结点从上至下、从左至右一次存放到一个顺序结构的数组中。假定根结点存放在数组的1号位置,则第K号结点的父结点如果存在的话,应当存放在数组的()号位置。 A.2k B.2k+1 C.k/2下取整 D.(k+1)/2下取整 10.一下竞赛活动中历史最悠久的是() A.全国青少年信息学奥林匹克联赛(NOIP)

二级C语言试题(含答案)

二级C语言试题 一、判断题(2×8=16分) 1、printf()函数总是从新行的起始位置开始打印。( F ) 2、所有的变量在使用前都必须予以申明。(F) 3、在申明变量时必须给出变量的类型。(T) 4、C语言认为变量number和NuMbEr是相同的。( F) 5、打印三行输出的C语言程序必须用三条printf语句。(F) 6、求余运算符%只能用于两个整数操作数。(T) 7、switch选择结构中必须有default子句。(F) 8、如果x>y或ay&&a

人教版二年级数学寒假作业答案

人教版二年级数学寒假作业答案2019 为进一步提高孩子的数学能力,在寒假期间,您可以根据实际,让孩子在完成必做作业的基础上,去做相应的选做作业。以下就是为大家分享的人教版二年级数学寒假作业答案,希望对大家有帮助。 第1页:三、1、18+16-9=25(人) 2、3×8+9=33(本) 3、10÷5=2(个) 10÷2=5(人) 第2页:二、直角:1、6 锐角:3、5 钝角:1、4 三、把三角形的三个顶点都向左平移9格再连接。 第3页:一、2、(3)个直角,(3)个锐角,(1)个钝角。3、3,6,2 二、1、18÷3=6(元) 5×6=30(元)2、(1)63÷9=7 第4页:二、千克,克,千克。四、(1)100克(2)200克(3)400克 第5页:三、1、800+200=1000 2、35÷5=7 3、1500-800=700 第6页:一、认真读题,先圈再算。18÷6=3 (总数÷每份数=份数) 二、1、× 2、√ 3、× 4、√ 三、1、6×4=24(个) 24+25=49(个)或6×4+25=49(个) 2、6×3=18(块) 18÷2=9(块)或6×3÷2=9(块) 第7页:一、1、4,6,16,24,4 2、30,15,40 (连减,或总数减两数和)

二、2×2=4(棵)(分给白兔前)4×2=8(棵)(分小羊前) 8×2=16(棵) 第8页:二、1、① 2、③三、1、4×9=36(人) 36÷6=6(人)(也可以综合) 2、、18+14=32(朵) 32÷4=8(朵) 或(18+14)÷4=8(朵) 注:列综合算式一定要加括号。 第9页:二、1、3003 2、6050 4、高、几千、1、不读。三、1、700+700=1400 2、54÷9=6 3、1000-100=900 第10页;一、提示:看清大小号再排队。 1、2068、286、2608、2806、2860 2、5550、5505、5500、5055、5005 3、8×7、6×6、81÷9、40÷5、35÷5 第11页:三、注:此题学生在家没办法调查统计数据,因此老师给出数据,请 同学们根据我给的数据做题。从前往后依次是:7、4、3、11、9 第12页:二、1、√2、×3、√4、√ 三、1、90-(45+25)=20(个)或90-45-25=20(个) 2、12÷4×8=24(元)(也可以分步计算) 第13页:三、1、√ 2、√ 3、× 4、× 四、1连③,2连①,3连② 第14页:一、1、44+77=121 2、四个角上的任一一个角的两

相关主题
文本预览
相关文档 最新文档