打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
工作室,程序设计大赛题目
3月初会招新,11级、10级有兴趣的可以了解一下以前的题型。Goog Luck!
2011年三峡大学程序设计大赛题目
一、程序填空,每空限填一条语句,即不得出现“;”:
1、(单空)
题目:计算1!+2!+3!+....+n! (n <= 10):
代码:
long method(int n)
{
int i;
long a=1,sum=0;
for(i=1;i<=n;i++)
{
________;
sum+=a;
}
return sum;
}
void main()
{
int n;
scanf("%d",&n);
printf("%d",method(n));
}
2、(单空)
题目:改进的快速冒泡排序:
#define N 5
void bubbleSort(int*x,int n){
int lastExchange , index, temp, i;
___________;
while(lastExchange != 0){
index = lastExchange;
lastExchange=0;
for( i=0; i<index; i++){
if(x[i]>x[i+1]){
temp=x[i];
x[i]=x[i+1];
x[i+1]=temp;
lastExchange =i;
}
}
}
}
void main(){
int array[N], i = 0;
for (; i < N; i++)
scanf("%d", array+i);
bubbleSort(array,N);
for (i = 0; i < N; i++)
printf("%d ", array[i]);
}
3、(单空)
题目:字符串s中的内容按逆序输出,但不改变串中的内容
int inverp(char *a)
{
if(!*a)
return 0;
_____________;
printf("%c",*a);
}
int main()
{
char s[10]="hello!";
inverp(s);
}
4、(两空)
题目: 给出一个字符串输出它的排列。
如:
输入 123
输出:
123
132
213
231
312
321
代码:
char str[100];
int strLength;
void swap(int i,int j )
{
char c1;
c1=str[j];
str[j]=str[i];
str[i]=c1;
}
void f(int t,int k)
{
int i;
if(t > strLength)
printf("%s\n",str); // 打印str
else
for(i=k; ____(1)_____ ; i++)
{
swap(k,i);
___(2)____;
swap(k,i);
}
}
void main()
{
printf("请输入一行字符串\n");
scanf("%s",str);
strLength = strlen(str);
f(1,0);
}
5、(两空)
二、编程题(电脑自动阅卷,务必按规定格式输出,否则判为错误)
1、求n以内(不包括n)同时能被3和7整除的所有自然数个数,并求和。
输入:一个整数 n
输出:个数
例如输入:
输出:
2、假设在周末舞会上,男士们和女士们进入舞厅时,各自按编号排成一队。跳舞开始时,依次从男队和女队的队头上各出一人配成舞伴。若两队初始人数不相同,则较长的那一队中未配对者等待下一轮舞曲,跳过舞的排在队尾,参考以下跳舞顺序:
男队(4人):1 2 3 4 1 2 3 4 1 2 3 4...
女队(3人):1 2 3 1 2 3 1 2 3 1 2 3...
现要求:
输入:男队人数sumMale、女队人数sumFemale、某男编号m1、某女编号f1
输出:m1和f1将在第几轮舞曲第一次共舞,若不可能共舞则输出0。
例如:
输入:
22
输出:
1
21
3、现有画有黑色线条的白底图片一张,计算出有多少条黑线、并依次输出每条黑线所占的点数。图片我们用0、1图表示,1代表黑点  0 代表白点,某点周围8个方向都算连通,如下图所示,共有3条黑线,长度分别是5、3、5:
1 0 0 0 0 0 0
0 1 1 1 1 0 0
0 0 0 0 0 0 0
1 1 0 0 0 1 1
1 0 0 1 1 1 0
输入:图的宽w、高h,换行输入图的像素点
输出:黑线条数、换行输出每条线长度(间隔换行)。
例:
输入:
4 3 4 1
2
输出:
7 5
1 0 0 0 0 0 0
0 1 1 1 1 0 0
0 0 0 0 0 0 0
1 1 0 0 0 1 1
1 0 0 1 1 1 0
2011年工作室暑假培训考核题目
一、程序填空,每空限填一条语句,即不得出现“;”:
1、在下面这个程序片段中的划线处填上适当的表达式,使之逆序输出数组元素。(8分)
void recur(int a[], int k) {
int tmp;
if(______)
{
recur( ______ , ______);
tmp = a[0];
a[0] = a[k-1];
a[k-1] = tmp;
}
}
2、下面程序的功能是输出1到100之间每位数的乘积大于每位数的和的数。例如数字26,数位上数字的乘积12大于数字之和8。(8分)
void main()
{
int n,k=1,s=0,m;
for(n=1;n<=100;n++)
{
k=1;
s=0;
________;
while( ________ )
{
k*=m%10;
s+=m%10;
________;
}
if(k>s)
printf("%d\n",n);
}
}
3、链表转置,递归函数实现转置单向链表。空格处填入一条语句,使程序运行结果为9 8 7 6 5 4 3 2 1 0   (12分)
typedef struct _Node{
int data;
struct _Node* next;
}Node;
Node* doNext(Node *node) {
if (node->next != NULL)
__________________________;
return node;
}
void main(){
Node list[10];
int i;
for (i = 0; i < 10; i++) {
list[i].next = list + i+1;
list[i].data = i;
}
list[9].next = NULL;
//转置
doNext(list);
list[0].next = NULL;//转置后list[0]变成链表尾  list[9]变成链表头
Node *head = &list[9];
//  打印
while(head != 0){
printf("%d\n", head->data);
head = head->next;
}
};
二、编程题(能输出正确结果得分,结果错误不得分)
4、有N个小朋友人坐在草坪上做游戏,围坐成一个圈,现从某一个人开始报数,数到第M个人时那个人就出列,然后继续数,再次数到M的人出列,如此下去直到所有的人都出列,求出他们的出列顺序。(20分)
输入:N和M的值;
输出:出列顺序;
如:
Input:
4 2
Output:
2 4 3 1
5、在输入10个等长的字符串,对他们进行排序(按照字符的ASCii码从小到大)。然后在主函数输出这10个已经排好序的字符串(不允许使用strcmp函数)(20分)
输入: 字符串的长度n
10个等长字符串
输出: 10个排序好的字符串  每行输出一个
例如:
输入:3
aaa
Aaa
aAa
bac
bdc
bbc
cab
cba
cad
bda
输出:
Aaa
aAa
aaa
bac
bbc
bda
bdc
cab
cad
cba
6、大数相乘,输入两个数字,输出相乘结果,由于输入的数字或输出的数字超出int能表示的最大数字,要求写出的程序能处理大数的相乘。(32分)
输入:两个正整数
输出:相乘结果
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
C语言面试题
C/C++面试题大汇总6
C语言左旋转字符串与翻转字符串中单词顺序的方法
C语言字符串函数大全
★C语言试题及答案
C语言难点分析整理
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服