Contest1642 – 计Z1501函数 – 参考代码

本C语言问题参考代码由 从安小哥 友情为计Z1501班级同学提供

如果觉得我的博客不错就推荐给同学吧!

如有疑问请直接留言

建议自己能看懂的修改代码再提交作业

IW8HY421HY1LKKU03)WO2VB
 
鼠标移至代码框右上角工具栏可以查看源代码,将不会出现代码框中的序号。
6.1-17:00:更新题目参考。
 

/*
问题 A: 语言基础练习——整数分割(函数)
题目描述
写一函数,输入一个四位数字,要求输出这四个数字字符,但每两个数字间空格。如输入1990,应输出"1 9 9 0"。
输入
一个四位数
输出
增加空格输出
样例输入
1990
样例输出
1 9 9 0
*/
#include <stdio.h>
int num(char n[],int i)
{
printf("%c ",n[i]);
}
int main()
{
int i;
char n[4];
scanf("%s",n);
for(i=0;i<4;i++)
num(n,i);
}
/*
问题 B: 语言基础练习——统计个数(函数)
题目描述
编写一函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其它字符的个数,在主函数中输入字符串以及输出上述结果。 只要结果,别输出什么提示信息。
输入
一行字符串
输出
统计数据,4个数字,空格分开。
样例输入
!@#$%^QWERT 1234567
样例输出
5 7 4 6
*/
#include <stdio.h>
#include <string.h>
int num(char n[],char min,char max)
{ //自定义函数:计数符合条件的字符数
int i,sum=0;
for(i=0;i<strlen(n);i++)
if(n[i]>=min && n[i]<=max) sum++;
return sum;
}
int main()
{
int sum;
char n[100],min,max;
gets(n);
//计算字母个数
sum=0;
min=’a’;max=’z’;sum+=num(n,min,max);
min=’A’;max=’Z’;sum+=num(n,min,max);
printf("%d ",sum);
//计算数字个数
min=’0′;max=’9′;
printf("%d ",num(n,min,max));
//计算空格个数
min=’ ‘;max=’ ‘;
printf("%d ",num(n,min,max));
//计算其他字符个数
sum=0;
min=0;max=31;sum+=num(n,min,max);
min=33;max=47;sum+=num(n,min,max);
min=58;max=64;sum+=num(n,min,max);
min=91;max=96;sum+=num(n,min,max);
min=123;max=127;sum+=num(n,min,max);
printf("%dn",sum);
}
/*
问题 C: 语言基础练习——阶乘计算(函数)
题目描述
计算a!+b!+c!+d!的值。用一个函数fac(n)计算n!。a、b、c、d的值由主函数输入,最终的值由主函数输出。
输入
输入一行,包含a、b、c、d,以空格分隔。
输出
输出的计算结果占一行。
样例输入
4 5 10 8
样例输出
3669264
*/
#include <stdio.h>
int num(int n)
{
int sum=1,i;
for(i=1;i<=n;i++)
sum*=i;
return sum;
}
int main()
{
int a,b,c,d;
scanf("%d%d%d%d",&a,&b,&c,&d);
printf("%d",num(a)+num(b)+num(c)+num(d));
}
/*
问题 D: 语言基础练习——字符串复制(函数)
题目描述
写一函数,将两个字符串中的元音字母(aeiou)复制到另一个字符串,然后输出。
输入
一行字符串
输出
按原字符串中出现的顺序输出其中的元音字母
样例输入
Abcde
样例输出
Ae
*/
#include <stdio.h>
#include <string.h>
int str(char n[])
{ //自定义函数:筛选符合条件的字符
int i,j;
char ch[100];
for(i=0,j=0;i<strlen(n);i++)
if(n[i]==’a’||n[i]==’A’||
n[i]==’e’||n[i]==’E’||
n[i]==’i’||n[i]==’I’||
n[i]==’o’||n[i]==’O’||
n[i]==’u’||n[i]==’U’)
ch[j++]=n[i];
ch[j]=’\0’;
puts(ch);
}
int main()
{
char n[100];
gets(n);
str(n);
}
/*
问题 E: 语言基础练习——用函数判断素数问题(函数)
题目描述
写一个判断素数的函数,在主函数输入一个整数,输出是否是素数的消息。
输入
一个数
输出
如果是素数输出prime 如果不是输出not prime
样例输入
97
样例输出
prime
*/
#include <stdio.h>
int pri(int n)
{
int i;
for(i=2;i<n;i++)
if(n%i==0) break;
if(i>=n)
printf("prime");
else
printf("not prime");
}
int main()
{
int n;
scanf("%d",&n);
pri(n);
return 0;
}
/*
问题 F: 语言基础练习——字符串连接(函数)
题目描述
写一函数,将两个字符串连接
输入
两行字符串
输出
链接后的字符串
样例输入
123
abc
样例输出
123abc
*/
#include <stdio.h>
#define X 100
char link(char n[X],char m[X])
{
int i,j;
for(i=0;n[i]!=’\0’;i++);
for(j=0;m[j]!=’\0’;j++,i++)
n[i]=m[j];
n[i]=’\0’;
printf("%s",n);
}
int main()
{
char n[X],m[X];
scanf("%s%s",n,m);
link(n,m);
return 0;
}
/*
问题 G: 语言基础练习——矩阵转置1(函数 二维数组)
题目描述
写一个函数,使给定的一个二维数组(3×3)转置,即行列互换。
输入
一个3×3的矩阵
输出
转置后的矩阵
样例输入
1 2 3
4 5 6
7 8 9
样例输出
1 4 7
2 5 8
3 6 9
*/
#include <stdio.h>
int num(int n[3][3])
{
int i,j;
for(j=0;j<3;j++)
{for(i=0;i<2;i++)
printf("%d ",n[i][j]);
printf("%dn",n[2][j]);}
}
int main()
{
int i,j,n[3][3];
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%d",&n[i][j]);
num(n);
}

—————————-完美分割——————————————————————

/*
问题 H: 语言基础练习——余弦(函数 递归)
题目描述
输入n的值,计算cos(x)。
输入
输入数据有一行,包括x和n。第一数据为x,第二个数据为n (n的值小于等于6)
输出
输出cos(x)的值,保留4位小数
样例输入
0.0 6
样例输出
1.0000
*/
#include <stdio.h>
int fact(int x) //阶乘函数
{
if(x==1) return x;
return x*fact(x-1);
}
float power(float x,int n) //次方函数
{
int i;
float sum=1.0;
for(i=0;i<n;i++)
sum*=x;
return sum;
}
float cos(float x,int n) //COS计算函数
{
int i;
float sum=0.0;
for(i=2;i<=2*n;i+=2)
sum+=power(-1,i/2)*(power(x,i)/(float)fact(i));
return sum=1+sum;
}
int main()
{
float x;
int n;
scanf("%f%d",&x,&n);
printf("%.4f",cos(x,n));
return 0;
}
//其他参考
#include <stdio.h>
int main()
{
double x, sum, t, item;
int n, i;
while (scanf("%lf %d", &x, &n)==2)
{
t = x*x;
item = 1.0;
sum = 1.0;
for (i=1; i<=n; i++)
{
item *= -t;
item /= (i*2-1)*(i*2);
sum += item;
}
printf("%.4lfn", sum);
}
return 0;
}
/*
问题 I: 语言基础练习——求函数值(简单函数递归)
题目描述
按如下递归公式求函数值。
x=1时 f(x)=10;x>1时 f(x)=f(x-1)+2
输入
整型变量x
输出
f(x)
样例输入
10
样例输出
28
*/
#include <stdio.h>
int num(int x)
{
int i,f[x]; //f[]必须为X值
f[0]=10;
for(i=1;i<x;i++)
f[i]=f[i-1]+2;
printf("%d",f[x-1]);
}
int main()
{
int x;
scanf("%d",&x);
num(x);
}
/*
问题 J: 语言基础练习——求1+2!+3!+…+N!的和(循环和函数递归)
题目描述
用函数递归实现阶乘,然后求出1+2!+3!+…+N!的和。
输入
正整数N(N〈=20)
输出
1+2!+3!+…+N!的和 (结果为整数形式)
样例输入
3
样例输出
9
*/
#include <stdio.h>
int num(int n)
{
int sum=1,i;
for(i=1;i<=n;i++)
sum*=i;
return sum;
}
int main()
{
int n,sum=0,i;
scanf("%d",&n);
for(i=1;i<=n;i++)
sum+=num(i);
printf("%d",sum);
}
/*
问题 K: 语言基础练习——斐波纳契数列(循环或者用函数递归)
题目描述
斐波纳契数列
1,1,2,3,5,8,13,21,34,55,89……这个数列则称为“斐波纳契数列”,其中每个数字都是“斐波纳契数”。
输入
一个整数N(N不能大于40)
输出
由N个“斐波纳契数”组成的“斐波纳契数列”。
样例输入
6
样例输出
1 1 2 3 5 8
*/
#include <stdio.h>
int num(int x)
{
int i,f[x];
f[0]=f[1]=1;
for(i=2;i<x;i++)
f[i]=f[i-1]+f[i-2];
for(i=0;i<x;i++)
printf("%d ",f[i]);
}
int main()
{
int x;
scanf("%d",&x);
num(x);
}
/*
问题 L: 语言基础练习——计算组合数(函数递归)
题目描述
计算从n个人中选k个人组成委员会的不同组合数。其中1=<n<=22,1=<k=<22,请使用函数递归完成。
输入
分别输入n和k。
输出
输出组合数,占一行。
样例输入
4 2
样例输出
6
提示
*/
#include <stdio.h>
//组合定义公式c(n,m)=p(n,m)/m!=n!/((n-m)!*m!)
double fact(int x) //阶乘函数 长度必须为double
{
if(x==0) return 1;
return x*fact(x-1);
}
int group(int n,int m) //组合函数
{
return fact(n)/(fact(n-m)*fact(m));
}
int main()
{
int n,m;
scanf("%d%d",&n,&m);
printf("%dn",group(n,m));
return 0;
}

Contest1637 – 计Z1501二维数组 – 参考代码

本C语言问题参考代码由 从安小哥 友情为计Z1501班级同学提供

如果觉得我的博客不错就推荐给同学吧!

如有疑问请直接留言

建议自己能看懂的修改代码再提交作业

IW8HY421HY1LKKU03)WO2VB
 
鼠标移至代码框右上角工具栏可以查看源代码,将不会出现代码框中的序号。
5.25-17:00:更新题目参考。
 

/*
问题 A: 语言基础练习——求矩阵的两对角线上的元素之和(二维数组)
题目描述
求矩阵的两对角线上的元素之和
输入
矩阵的行数N
和一个N*N的整数矩阵a[N][N](N<=10)
输出
所输矩阵的两对角线上的元素之和
样例输入
3
1 2 3
4 5 6
7 8 9
样例输出
25
*/
#include <stdio.h>
int main(int argc, char *argv[])
{
int n,i,j,sum=0;
for(scanf("%d",&n),i=0;i<n;i++)
{
int N[n][n];
for(j=0;j<n;j++)
scanf("%d",&N[i][j]);
}
int N[n][n];
for(i=0;i<n;i++)
for(j=0;j<n;j++)
if(i==j)
sum+=N[i][j];
else if(n-1==i+j)
sum+=N[i][j];
printf("%d",sum);
return 0;
}
/*
问题 B: 语言基础练习——矩阵转置(数组)
题目描述
输入N*N的矩阵,输出它的转置矩阵。
输入
第一行为整数N(1≤N≤100)。 接着是一个N*N的矩阵。
输出
转置矩阵。
样例输入
2
1 2
1 2
样例输出
1 1
2 2
*/
#include <stdio.h>
int main(int argc, char *argv[])
{
int n,i,j,N[100][100];
for(scanf("%d",&n),i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%d",&N[i][j]);
for(i=0;i<n;i++)
{
for(j=0;j<n-1;j++)
printf("%d ",N[j][i]);
printf("%dn",N[j][i]);
}
return 0;
}
/*
问题 C: 语言基础练习——杨辉三角形(数组)
题目描述
打印以下杨辉三角形。
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
……
输入
输入n (1-10),表示杨辉三角形的行数。
输出
对应输入行数的杨辉三角形。要求每5格输一个数,数字右对齐。
样例输入
8
样例输出
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
*/
//自编代码
#include <stdio.h>
int main(int argc, char *argv[])
{
int i,j,n,N[10][10]={0}; //初始化所有值为0
for(scanf("%d",&n),j=0;j<n;j++) //以列为外循环
for(i=j;i<n;i++) //行从列的位置开始计算
if(i==j||j==0) //规律为前后值为1
N[i][j]=1;
else //每一个元素是上一行的左右两个数之和
N[i][j]=N[i-1][j-1]+N[i-1][j];
for(i=0;i<n;i++) //输出N[10][10]所有值的循环
{
for(j=0;j<n;j++)
if(N[i][j]!=0) //当值为0时换行
printf("%5d",N[i][j]);
printf("n");
}
return 0;
}
//代码参考后优化
#include <stdio.h>
int main(int argc, char *argv[])
{
int i,j,n;
for(scanf("%d",&n),i=0;i<n;i++)//for 循环,表示杨辉的行
{
int N[n][n];
for(j=0;j<=i;j++)// for循环表示杨辉中每一行的每一个元数
{
if(i==j||j==0)//表示每一行中的头和尾都是1
N[i][j]=1;
else
N[i][j]=N[i-1][j]+N[i-1][j-1]; //每一个元数是上一行的左右两个数之和,
printf("%5d",N[i][j]); //下面开始打印
if(i==j) //例如第一行是N[0][0],第二行是 N[1][0],N[1][1]
printf("n");
}
}
}
/*
问题 D: 语言基础练习——数组的鞍点(数组)
题目描述
找二维数组的鞍点,即该位置上的元素在该行上最大,在该列上最小(也可以没有鞍点)。
输入
先输入n,m (2<=n<=100, 2<=m<=100)
在输入矩阵中各元素的值。(假设为整型数)
输出
若有鞍点,输出所有鞍点的行和列及其值,每个占一行。
若没有鞍点,则输出"no",占一行
样例输入
3 3
1 2 3
5 6 7
7 8 9
样例输出
0 2 3
*/
#include <stdio.h>
int main(int argc, char *argv[])
{
int n,m,i,j,num,J,I=0,N[100][100];
for(scanf("%d %d",&n,&m),i=0;i<n;i++)
for(j=0;j<m;j++)
scanf("%d",&N[i][j]);
for(i=0;i<n;i++)
{
for(j=0,num=N[i][j];j<m;j++)
if(num<N[i][j]) //找出i行最大的数num
{
num=N[i][j];
J=j; //找出最大的数num记录列位置J
}
for(j=0;j<n;j++) //列比较num是否最小的
if(num>N[j][J])break;
if(j==n)
{
printf("%d %d %dn",i,J,num); //j=n则说明num最小
I++; //记录点,每有一个鞍点+1
}
}
if(I==0) printf("non");
return 0;
}

—————————————————-完美分割——————————————————–

/*
问题 E: 语言基础练习——最大值及其位置(数组)
题目描述
有一个n×m的矩阵,要求编程序求出:
每行元素的最大值,以及其所在的行号和列号。求出所有元素的最大值,以及其所在的行号和列号。
输入
先输入n,m (2<=n<=100,2<=m<=100)
在输入矩阵中各元素的值。(假设为整型数)
输出
先输出每行元素的最大值的下标及其值,每个占一行;
再输出所有元素的最大值的下标及其值。
样例输入
3 4
1 2 3 4
10 11 12 13
3 4 5 6
样例输出
0 3 4
1 3 13
2 3 6
1 3 13
*/
#include <stdio.h>
int main(int argc, char *argv[])
{
int n,m,i,j,J,max[4],num[100],N[100][100];
for(scanf("%d %d",&n,&m),i=0;i<n;i++)
for(j=0;j<m;j++)
scanf("%d",&N[i][j]);
for(i=0;i<n;i++)
{
for(j=0,num[i]=N[i][j];j<m;j++)
if(num[i]<N[i][j]) //找出i行最大的数num
{
num[i]=N[i][j];
J=j; //找出最大的数num记录列位置J
}
printf("%d %d %dn",i,J,num[i]);
if(i==0) max[2]=num[i]; //判断 num[i]中的最大值
if(max[2]<num[i])
{max[0]=i;max[1]=J;max[2]=num[i];}
}
printf("%d %d %dn",max[0],max[1],max[2]);
return 0;
}
/*
问题 F: 语言基础练习——补考名单(二维数组)
题目描述
输入5个学生的姓名、学号和成绩,将其中不及格的姓名、学号和成绩输出。
输入
输入5个学生的姓名、学号和成绩,每个学生的信息占一行。
输出
输出不及格学生的姓名、学号和成绩,每个学生的信息占一行。
样例输入
john 1001 30
mike 1002 60
judy 1003 90
ketty 1004 59
lely 1005 38
样例输出
john 1001 30
ketty 1004 59
lely 1005 38
*/
#include<stdio.h>
int main()
{
struct student
{
char name[100];
int id,grades;
};
struct student stu[5];
int i;
for(i=0;i<5;i++)
scanf("%s%d%d",stu[i].name,&stu[i].id,&stu[i].grades);
for(i=0;i<5;i++)
if(stu[i].grades<60)
printf("%s %d %dn",stu[i].name,stu[i].id,stu[i].grades);
}

C语言ACM竞赛练习题参考代码 第二期- 长期更新

C语言ACM竞赛练习题参考代码由从安小哥友情提供

如果觉得我的博客不错就推荐给同学吧!

如有疑问请直接留言

建议自己能看懂的重写更精炼的代码再提交作业

IW8HY421HY1LKKU03)WO2VB
 
鼠标移至代码框右上角工具栏可以查看源代码,将不会出现代码框中的序号。
5.5-9:00:更新题目参考。
 

/*
1115: 语言基础练习——合并排序(链表)
题目描述
已有a、b两个链表,每个链表中的结点包括学好、成绩。要求把两个链表合并,按学号升序排列。
输入
第一行,a、b两个链表元素的数量N、M,用空格隔开。接下来N行是a的数据然后M行是b的数据每行数据由学号和成绩两部分组成
输出
按照学号升序排列的数据
样例输入
2 3
5 100
6 89
3 82
4 95
2 10
样例输出
2 10
3 82
4 95
5 100
6 89
*/
/*
1130: 念数字
题目描述
编一个“念数字”的程序,它能让计算机完成以下工作:当你输入一个0至99 之
间的数后,计算机就会用汉语拼音印出这个数。
如果输入的数不在0到99 之间,就印出“CUO LE”。
注:为了使不熟悉汉语拼音的同学也能做这个题,把“零,一,二,三,……,九,十”的
拼音法写在下面。
零 LING 一 YI 二 ER 三 SAN 四 SI 五 WU
六 LIU 七 QI 八 BA 九 JIU 十 SHI
输入
输入数据有多组,每组数据占一行,内容为一个数字,数据以EOF作为结束。
输出
输出对应的汉语拼音,字母全部为大写。每组数据占一行
样例输入
35 0 11 100
样例输出
SAN SHI WU LING SHI YI CUO LE
*/
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[])
{
int i,j,k;
char num[100];
while(scanf("%s",num)!=EOF)
{
if(strlen(num))
}
return 0;
}
/*
1751: Excuses, Excuses!
*/
//1751: Excuses, Excuses!
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[])
{
int K,E,i=1;
while(scanf("%d%d",&K,&E)!=EOF)
{
int k,ki,e,ei,temp,TEMP,bad[E],mbad=0;
struct lie{ //定义结构体
char keyword[100],excuse[1000];
};
struct lie lies[K+E]; //定义结构体数组
getchar();
for(k=0;k<K;k++)
gets(lies[k].keyword); //输入关键词
for(e=0;e<E;e++)
{
bad[e]=0;
gets(lies[e].excuse); //输入借口
//匹配关键词
for(k=0;k<K;k++) //循环结构体的关键词组
{
for(ki=ei=temp=0;ei<strlen(lies[e].excuse);ei++) //同时循环借口和关键词字符匹配
{
if(lies[e].excuse[ei]>=’A’&&lies[e].excuse[ei]<=’Z’)//借口有大写字符是转换小写用
TEMP=lies[e].excuse[ei]+32;
else TEMP=lies[e].excuse[ei];
if(TEMP==lies[k].keyword[ki]) //匹配成功一个关键词字符进行下一个
{temp++;ki++;}
else //下一个关键词字符匹配失败则还原值
{ei-=ki;temp=ki=0;}
if(temp==strlen(lies[k].keyword)) //整个关键词匹配成功则借口最差值+1;
bad[e]+=1;
}
}
if(mbad<bad[e]) //对比每句话最差值,最大存入mbad
mbad=bad[e];
}
//打印结果
printf("Excuse Set #%dn",i);
for(e=0;e<E;e++)
if(mbad==bad[e]&&mbad!=0) //mbad是关键词最多的个数,与bad[e]数组值相等则lies[e].excuse最差借口
puts(lies[e].excuse);
printf("n");
i++;
}
return 0;
}
//ACM参考
#include<stdio.h>
#include<string.h>
#include<ctype.h>
int main()
{
//freopen("in.txt","r",stdin);
int m,n,i,j,num[20],max,t=1,a,k,len;
char word[20][20],excuse[20][71],ch[71];
while(scanf("%d%d",&m,&n)!=EOF)
{
getchar();
for(i=0; i<m; i++)
{
scanf("%s",word[i]);
getchar();
}
memset(num,0,sizeof(num));
max=0;
for(i=0; i<n; i++)
{
gets(excuse[i]);
len=strlen(excuse[i]);
for(j=0; j<len; j++)
{
a=0;
while(isalpha(excuse[i][j]))
{
ch[a++]=tolower(excuse[i][j]);
j++;
}
if(a>0)
{
ch[a]=’\0’;
for(k=0; k<m; k++)
{
if(strcmp(ch,word[k])==0)
{
num[i]++;break;
}
}
}
}
max=max>num[i]?max:num[i];
}
printf("Excuse Set #%dn",t++);
for(i=0; i<n; i++)
{
if(num[i]==max)
{
printf("%sn",excuse[i]);
}
}
printf("n");
}
return 0;
}
//百度答案
#include<stdio.h>
#include<string.h>
char keywords[21][21];
char str[21][101];
//匹配
int Match(char temp[],int M){
for(int i = 0;i < M;i++){
if(strcmp(temp,keywords[i]) == 0){
//printf("%s",temp);
return 1;
}
}
return 0;
}
int main (){
int i,j,M,N,k,Max,MaxIndex,Case = 1;
char temp[21];
int count[21];
//freopen("C:\Users\XIAOSI\Desktop\acm.txt","r",stdin);
while(scanf("%d %dn",&M,&N) != EOF){
memset(count,0,sizeof(int)*N);
Max = -1;
//输入关键词
for(i = 0;i < M;i++){
gets(keywords[i]);
}
//输入借口
for(i = 0;i < N;i++){
gets(str[i]);
int len = strlen(str[i]);
for(j = 0;j < len;){
k = 0;
//提取单词
while((str[i][j] >= ‘a’ && str[i][j] <= ‘z’) || (str[i][j] >= ‘A’ && str[i][j] <= ‘Z’)){
//转换为小写
if(str[i][j] >= ‘A’ && str[i][j] <= ‘Z’){
temp[k++] = str[i][j] – ‘A’ + ‘a’;
}
else{
temp[k++] = str[i][j];
}
j++;
}
j++;
temp[k] = ‘\0’;
//和关键词进行匹配
if(Match(temp,M)){
count[i] ++;
}
}
//最大借口关键词个数
if(Max < count[i]){
Max = count[i];
}
}//for
//输出
printf("Excuse Set #%dn",Case);
Case++;
//最差借口
for(i = 0;i < N;i++){
if(Max == count[i]){
puts(str[i]);
}
}
printf("n");
}
return 0;
}
/*
1762: Function Run Fun
*/
#include<stdio.h>
long data[21][21][21] = {0};
int fun(int a,int b,int c)//根据题意来写函数
{
if(a<=0||b<=0||c<=0)
return 1;
else if(a>20||b>20||c>20)
return fun(20,20,20);
if(data[a][b]

)//要是 data已经存在的话就直接返回值
return data[a][b]

;
else if(a<b&&b<c)
return fun(a, b, c-1) + fun(a, b-1, c-1) – fun(a, b-1, c);
else
return fun(a-1, b, c) + fun(a-1, b-1, c) + fun(a-1, b, c-1) – fun(a-1, b-1, c-1);
}
int main()
{
int a, b ,c;//三维
data[0][0][0] = 1;
for(a = 0;a<=20;a++)
for(b = 0;b<=20; b++)
for(c = 0;c <=20; c ++)
{
data[a][b]

= fun(a,b,c);
}
while(scanf("%d%d%d",&a,&b,&c)!=EOF)
{
if(a==-1&&b==-1&&c==-1)
return 1;
printf("w(%d, %d, %d) = %dn",a,b,c,fun(a,b,c));
}
return 0;
}
//ACM
#include<stdio.h>
long f(int a,int b,int c);
int d[25][25][25];
int main()
{
long int a,b,c,i,j,k,x,y,z;
for(i=0;i<21;i++)
for(j=0;j<21;j++)
for(k=0;k<21;k++)
d[i][j][k]=f(i,j,k);
while(scanf("%ld%ld%ld",&a,&b,&c))
{
x=a;
y=b;
z=c;
if(a==-1&&b==-1&&c==-1) break;
if(a<=0||b<=0||c<=0) {a=0;b=0;c=0;}
else if(a>20||b>20||c>20) {a=20;b=20;c=20;}
printf("w(%ld, %ld, %ld) = %ldn",x,y,z,f(a,b,c));
}
return 0;
}
long f(int a,int b,int c)
{
if(a<=0||b<=0||c<=0) return(1);
if(d[a][b]

>0) return d[a][b]

;
else if(a<b&&b<c) return(f(a,b,c-1)+f(a,b-1,c-1)-f(a,b-1,c));
else return (f(a-1,b,c)+f(a-1,b-1,c)+f(a-1,b,c-1)-f(a-1,b-1,c-1));
}
/**/
//1300: [USACO 1.1.1]你要乘坐的飞碟在这里
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[])
{
char team[6],comet[6];
scanf("%s%s",comet,team);
int i,j,mod[2]={1,1};
for(i=0;i<strlen(comet);i++)
for(j=0;j<26;j++)
if(comet[i]==’A’+j)
mod[0]*=j+1;
for(i=0;i<strlen(team);i++)
for(j=0;j<26;j++)
if(team[i]==’A’+j)
mod[1]*=j+1;
if(mod[0]%47==mod[1]%47)
printf("GO");
else printf("STAY");
return 0;
}
/**/
//参考博客http://www.cnblogs.com/zhourongqing/archive/2012/04/08/2438202.html
//1149: Max Sum
#include<cstdio>
int main()
{
int n,test,ans,t,a,i;
scanf("%d",&test);
while(test–)
{
scanf("%d",&n);
scanf("%d",&a);
ans=t=a;
for(i=1;i<n;i++)
{
scanf("%d",&a);
if(t<0) t=a;
else t=t+a;
if(ans<t) ans=t;
}
printf("%dn",ans);
}
return 0;
}
//ACM
#include<stdio.h>
int main()
{
int temp,now,max,x,pos1,pos2;
int n,t,i,j;
scanf("%d",&n);
for(j=0;j<n;j++)
{
scanf("%d%d",&t,&temp);
now=max=temp;
pos1=pos2=x=1;
for(i=2;i<=t;i++)
{
scanf("%d",&temp);
if(now+temp<temp)
{
now=temp;
x=i;
}
else
now+=temp;
if(now>max)
{
max=now;
pos1=x;pos2=i;
}
}
printf("Case %d:n",j+1);
printf("%d %d %dn",max,pos1,pos2);
if(j+1==n)
break;
printf("n");
}
return 0;
}
/**/
/**/
/**/
/**/
/**/
/**/
/**/
/**/
/**/
/**/

第一期代码入口:http://www.blacknet.cn/?p=117

Contest1632 – 计Z1501字符数组 – 参考代码

本C语言问题参考代码由 从安小哥 友情为计Z1501班级同学提供

如果觉得我的博客不错就推荐给同学吧!

如有疑问请直接留言

建议自己能看懂的修改代码再提交作业

IW8HY421HY1LKKU03)WO2VB
 
鼠标移至代码框右上角工具栏可以查看源代码,将不会出现代码框中的序号。
5.18-22:00:更新题目参考。
 

/*
语言基础练习——简单编码(循环)
题目描述
将一串文本译成密码,密码的规律是:
将原来的小写字母全部翻译成大写字母,大写字母全部翻译成小写字母,数字的翻译规律如下:
0——>9
1——>8
2——>7
3——>6
4——>5
5——>4
6——>3
7——>2
8——>1
9——>0
然后将所有字符的顺序颠倒。
输入
输入一串文本,最大字符个数不超过100。
输出
输出编码后的结果。
样例输入
china
样例输出
ANIHC
*/
#include <stdio.h>
int main(int argc, char *argv[])
{
char ch[100];
int i;
gets(ch);
for(i=0;ch[i]!=’\0’;i++)
{
if(ch[i]>=’a’&&ch[i]<=’z’)
ch[i]-=32;
else if(ch[i]>=’A’&&ch[i]<=’Z’)
ch[i]+=32;
else if(ch[i]>=’0’&&ch[i]<=’9′)
ch[i]=105-ch[i];
}
for(i=i-1;i>=0;i–)
printf("%c",ch[i]);
return 0;
}
/*
语言基础练习——字符逆序(数组)
题目描述
将一个字符串str的内容颠倒过来,并输出。str的长度不超过100个字符。
输入
输入包括一行。
第一行输入的字符串。
输出
输出转换好的逆序字符串。
样例输入
I am a student
样例输出
tneduts a ma I
*/
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[])
{
char ch[100];
int i;
gets(ch);
for(i=strlen(ch)-1;i>=0;i–)
printf("%c",ch[i]);
return 0;
}
/*
语言基础练习——保留字母(数组 与 字符串)
题目描述
编一个程序,输入一个字符串,将组成字符串的所有非英文字母的字符删除后输出。
输入
一个字符串,长度不超过80个字符
输出
删掉非英文字母后的字符串。
样例输入
abc123+xyz.5
样例输出
abcxyz
*/
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[])
{
char ch[80],str[80];
int i,j=0;
gets(ch);
for(i=0;i<strlen(ch);i++)
{
if(ch[i]>=’a’&&ch[i]<=’z’||ch[i]>=’A’&&ch[i]<=’Z’)
{
str[j]=ch[i];
j++;
}
str[j+1]=’\0’;
}
puts(str);
return 0;
}
/*
语言基础练习——大、小写问题(数组 和 字符串处理)
题目描述
输入一串字符,将其中的大写变成小写,若不为大写则原样输出
输入
任意字符串(长度在100以内)以回车表示输入结束
输出
将其中的大写 输出相应的小写,若不为大写则原样输出
样例输入
A123b
样例输出
a123b
*/
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[])
{
char ch[100];
int i;
gets(ch);
for(i=0;i<strlen(ch);i++)
if(ch[i]>=’A’&&ch[i]<=’Z’)
ch[i]+=32;
for(i=0;i<strlen(ch);i++)
printf("%c",ch[i]);
return 0;
}
/*
语言基础练习——字符串正反连接(数组和字符串)
题目描述
所给字符串正序和反序连接,形成新串并输出
输入
任意字符串(长度<=50)
输出
字符串正序和反序连接所成的新字符串
样例输入
123abc
样例输出
123abccba321
*/
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[])
{
char ch[50];
int i,j;
gets(ch);
for(i=j=strlen(ch)-1;i<=(strlen(ch)-1)*2;i–,j++)
ch[j+1]=ch[i];
ch[j+1]=’\0’;
for(i=0;i<strlen(ch);i++)
printf("%c",ch[i]);
return 0;
}
/*
语言基础练习——数字母(数组 与 字符串)
题目描述
输入一个字符串,数出其中的字母的个数.
输入
一个字符串,不包含空格(长度小于100)
输出
字符串中的字母的个数
样例输入
124lfdk54AIEJ92854&%$GJ
样例输出
10
*/
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[])
{
char ch[80];
int i,j=0;
gets(ch);
for(i=0;i<strlen(ch);i++)
if(ch[i]>=’a’&&ch[i]<=’z’||ch[i]>=’A’&&ch[i]<=’Z’)
j++;
printf("%d",j);
return 0;
}
/*
字符数组——寻找字符串中空格的数目
题目描述
输入一行字符(字符串包括最后的’\0’的长度,最长不超过80字符),统计其中空格出现的次数,连续的空格作为一次空格出现计算。
输入
一串带空格的字符。
输出
连续字符串中空格出现的次数。
样例输入
Hello world! I come here.
样例输出
4
提示
注意:字符串首尾都可能出现空格
*/
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[])
{
char ch[80];
int i,j=0;
gets(ch);
for(i=0;i<strlen(ch);i++)
{
if(ch[i]==’ ‘)
j++;
while(ch[i]==’ ‘)
i++;
}
printf("%d",j);
return 0;
}
/*
字符数组——寻找字符串中指定字符
题目描述
输入一行字符(字符串包括最后的’\0’的长度,最长不超过80字符),统计其中字母’a’和‘A’出现的次数,
输入
一串字符串
输出
字母A出现的次数,包括大写和小写
样例输入
Youth is not a time of life; it is a state of mind;
样例输出
3
提示
输入的字符串中可能有空格,需要用gets接口读取字符串
*/
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[])
{
char ch[80];
int i,j=0;
gets(ch);
for(i=0;i<strlen(ch);i++)
if(ch[i]==’A’||ch[i]==’a’)
j++;
printf("%d",j);
return 0;
}
/*
字符数组——字符串中字母更替
题目描述
输入一行字符(字符串包括最后的’\0’的长度,最长不超过80字符),字符串中可能有空格。将字符串中所有的小写a改成大写A,将大写A改成小写a
输入
一串带空格的字符。
输出
原字符串中大写A和小写a互换
样例输入
aAAabb Aa
样例输出
AaaAbb aA
提示
字符串中可能有空格,所以用接口gets()读取字符串
*/
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[])
{
char ch[80];
int i;
gets(ch);
for(i=0;i<strlen(ch);i++)
{
if(ch[i]==’a’)
ch[i]=’A’;
else if(ch[i]==’A’)
ch[i]=’a’;
}
puts(ch);
return 0;
}

– – – – – – – – – – – – – – – – – – – – – 华丽的隐藏 暂不公布以下内容- – – – – – – – – – – – – – – – – – – – – –

/*
数据结构——数组元素存储位置(数组)
题目描述
假设一个10行10列的二维数组,下标从0开始,已知a00的地址和每个元素占用的存储单元,求顺序存储的 二维数组中任意元素aij在内存中的存储位置。
输入
输入包括两行
第一行有两个整数,第一个是元素a00的首地址,第二个为每个元素所占用的存储单元数
第二行也有两个数字,分别是aij的行下标和列下标
输出
输出包括两个数字,分别是列优先的数组元素aij的地址和行优先的数组元素aij的地址值,两个数中间用一个空格隔开,
样例输入
100 4
2 3
样例输出
228 192
*/
#include <stdio.h>
int main()
{
/*
*二维数组a[m][n],a[p][q]为a的第一个元素
*行下标从p到m+p,列下标从q到n+q
*loc1为列优先顺序”存储值,loc2为行优先顺序”存储值
*t为每个元素所占用的存储单元数
*/
int a,m=10,n=10,i,j,loc1,loc2,p=0,q=0,t;
scanf("%d%d%d%d",&a,&t,&i,&j);
loc1=a+((j-q)*n+(i-p))*t;
loc2=a+((i-p)*m+(j-q))*t;
printf("%d %d",loc1,loc2);
return 0;
}
/*
数据结构——从指定位置删除子符(串)
题目描述
从一个字符串中的第p个位置起删除指定长度的字符串,输出最终结果,若输入不合法,则输出 Illegal input
输入
输入一个字符串s、位置p、长度n
输出
删除子串后的字符串
样例输入
adfasdf12
6 5
样例输出
Illegal input
*/
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[])
{
int p,n,i,x;
char s[1000];
gets(s); //输入一个字符串s
scanf("%d %d",&p,&n); //输入位置p、长度n
if(strlen(s)>p+n) //判断输入是否合法
{
for(i=0;i<strlen(s);i++) //位移删除指定字符段
s[p+i-1]=s[p+n+i-1];
s[p+n+1]=’\0’;
puts(s);
}
else
printf("Illegal input");
return 0;
}
/*
数据结构——字符串替换(串)
题目描述
编写一个C程序实现将字符串中的所有"you"替换成"we"
输入
输入包含多行数据
每行数据是一个字符串,长度不超过1000
数据以EOF结束
输出
对于输入的每一行,输出替换后的字符串
样例输入
you are what you do
样例输出
we are what we do
*/
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[])
{
int j,i;
char str[1000];
do
{
gets(str);
for(i=0;i<strlen(str);i++)
{
if(str[i]==’y’&&str[i+1]==’o’&&str[i+2]==’u’) //判断是否为“you”字符串
{
str[i]=’w’;
str[i+1]=’e’;
for(j=i+2;j<strlen(str);j++) //替换字符串后进行位移
str[j]=str[j+1];
str[j]=’\0’;
i+=2;
}
}
puts(str);
}while((scanf("%s",str))!=EOF);
return 0;
}
/*
数据结构——判断是否是合法邮箱(串)
题目描述
输入一个字符串,判断是否是合法邮箱(格式正确即可,不管是否真的存在)输入的只能是字母、数字、下划线、@以及.五种, @前后只能是字母或者数字,而且.后只能是com, 是则输出YES ,否则输出NO
输入
一串字符
输出
判断结果
样例输入
adf12@qw213.com
样例输出
YES
*/
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[])
{
int j,i,x=0;
char str[1000];
gets(str);
for(i=0;i<strlen(str)&&str[i]!=’@’;i++);
if(str[i]==’@’&& //判断@和.com是否符合
str[strlen(str)-1]==’m’&&
str[strlen(str)-2]==’o’&&
str[strlen(str)-3]==’c’&&
str[strlen(str)-4]==’.’)
x=1;
if(x==1) //判断@前字符是否符合,符合则X=2
for(j=0;j<i;j++)
{
if(str[j]>=’a’&&str[j]<=’z’||
str[j]>=’A’&&str[j]<=’Z’||
str[j]>=’0’&&str[j]<=’9′)
x=2;
else
{
x=0;
break;
}
}
if(x==2) //判断@后字符是否符合,符合则X=3
for(j=i+1;j<strlen(str)-4;j++)
{
if(str[j]>=’a’&&str[j]<=’z’||
str[j]>=’A’&&str[j]<=’Z’||
str[j]>=’0’&&str[j]<=’9′)
x=3;
else
{
x=0;
break;
}
}
if(x==3)
printf("YES");
else
printf("NO");
return 0;
}

C语言ACM竞赛练习题参考代码 第一期 1000 – 1010 长期更新

C语言ACM竞赛练习题参考代码由从安小哥友情提供

如果觉得我的博客不错就推荐给同学吧!

如有疑问请直接留言

建议自己能看懂的重写更精炼的代码再提交作业

IW8HY421HY1LKKU03)WO2VB
 
鼠标移至代码框右上角工具栏可以查看源代码,将不会出现代码框中的序号。
5.5-9:00:更新题目参考。
 

/*编号1000 A+B for Input-Output Practice (I)
题目描述
Your task is to Calculate a + b.
Too easy?! Of course! I specially designed the problem for acm beginners.
You must have found that some problems have the same titles with this one, yes, all these problems were designed for the same aim.
输入
The input will consist of a series of pairs of integers a and b, separated by a space, one pair of integers per line.
输出
For each pair of input integers a and b you should output the sum of a and b in one line, and with one line of output for each line in input.
样例输入
1 5
10 20
样例输出
6 30
*/
#include <stdio.h>
int main(int argc, char *argv[])
{
int a,b;
for(;scanf("%d %d",&a,&b)!=EOF;)
printf("%dn",a+b);
return 0;
}
/*编号1001 A+B for Input-Output Practice (II)
题目描述
Your task is to Calculate a + b。
输入
Input contains an integer N in the first line, and then N lines follow. Each line consists of a pair of integers a and b, separated by a space, one pair of integers per line.
输出
For each pair of input integers a and b you should output the sum of a and b in one line, and with one line of output for each line in input.
样例输入
2
1 5
10 20
样例输出
6 30
*/
#include <stdio.h>
int main(int argc, char *argv[])
{
int a,b,n;
scanf("%d",&n);
for(;n>0;n–)
{
scanf("%d%d",&a,&b);
printf("%dn",a+b);
}
return 0;
}
/*编号1002 A+B for Input-Output Practice (III)
题目描述
Your task is to Calculate a + b.
输入
Input contains multiple test cases. Each test case contains a pair of integers a and b, one pair of integers per line. A test case containing 0 0 terminates the input and this test case is not to be processed.
输出
For each pair of input integers a and b you should output the sum of a and b in one line, and with one line of output for each line in input.
样例输入
1 5
10 20
0 0
样例输出
6 30
*/
#include<stdio.h>
int main()
{
int a,b;
for(;scanf("%d %d",&a,&b)!=EOF;)
{
if(a==0&&b==0)
break;
printf("%dn",a+b);
}
return 0;
}
/*编号1003 A+B for Input-Output Practice (IV)
题目描述
Your task is to Calculate the sum of some integers.
输入
Input contains multiple test cases. Each test case contains a integer N, and then N integers follow in the same line. A test case starting with 0 terminates the input and this test case is not to be processed.
输出
For each group of input integers you should output their sum in one line, and with one line of output for each line in input.
样例输入
4 1 2 3 4
5 1 2 3 4 5
样例输出
10 15
*/
#include<stdio.h>
int main()
{
int n,a,i,sum;
while(scanf("%d",&n) && (n!=0) )
{
sum=0;
for(i=0;i<n;i++)
{
scanf("%d",&a);
sum+=a;
}
printf("%dn",sum);
}
return 0;
}
/*编号1004 A+B for Input-Output Practice (V)
题目描述
Your task is to calculate the sum of some integers.
输入
Input contains an integer N in the first line, and then N lines follow. Each line starts with a integer M, and then M integers follow in the same line.
输出
For each group of input integers you should output their sum in one line, and with one line of output for each line in input.
样例输入
2 4 1 2 3 4
5 1 2 3 4 5
样例输出
10 15
*/
#include<stdio.h>
int main()
{
int n,a,i,sum,N;
scanf("%d",&N);
for(;N>0;N–)
{ scanf("%d",&n);
sum=0;
for(i=0;i<n;i++)
{
scanf("%d",&a);
sum+=a;
}
printf("%dn",sum);
}
return 0;
}
/*编号1005 A+B for Input-Output Practice (VI)
题目描述
Your task is to calculate the sum of some integers.
输入
Input contains multiple test cases, and one case one line. Each case starts with an integer N, and then N integers follow in the same line.
输出
For each test case you should output the sum of N integers in one line, and with one line of output for each line in input.
样例输入
4 1 2 3 4
5 1 2 3 4 5
样例输出
10 15
*/
#include<stdio.h>
int main()
{
int n,a,i,sum;
while(scanf("%d",&n)!=EOF)
{
sum=0;
for(i=0;i<n;i++)
{
scanf("%d",&a);
sum+=a;
}
printf("%dn",sum);
}
return 0;
}
/*编号1007 A+B for Input-Output Practice (VIII)
题目描述
Your task is to calculate the sum of some integers.
输入
Input contains an integer N in the first line, and then N lines follow. Each line starts with a integer M, and then M integers follow in the same line.
输出
For each group of input integers you should output their sum in one line, and you must note that there is a blank line between outputs.
样例输入
3 4 1 2 3 4 5 1 2 3 4 5 3 1 2 3
样例输出
10 15 6
*/
#include<stdio.h>
int main()
{
int n,a,i,sum,na;
scanf("%d",&na);
while(na>0&&scanf("%d",&n)!=EOF)
{
sum=0;
for(i=0;i<n;i++)
{
scanf("%d",&a);
sum+=a;
}
printf("%dnn",sum);
na–;
}
return 0;
}
/*编号1008 字符串的输入输出处理
题目描述
字符串的输入输出处理。
输入
第一行是一个正整数N,最大为100。之后是多行字符串(行数大于N), 每一行字符串可能含有空格,字符数不超过1000。
输出
先将输入中的前N行字符串(可能含有空格)原样输出,再将余下的字符串(不含有空格)以空格或回车分割依次按行输出。每行输出之间输出一个空行。
样例输入
2
www.njupt.edu.cn NUPT
A C M
N U P Ter
样例输出
www.njupt.edu.cn
NUPT
A C M
N
U
P
Ter
*/
//方法1
#include <stdio.h>
int main(int argc, char *argv[])
{
int i,n,m,j,t=0;
char str[1000];
scanf("%d",&n); //输入原样输出行数
getchar();
while(gets(str)) //输入字符串
{
if(n>0) //判断是否原样输出
{
puts(str); //原样输出字符串
printf("n");
for(i=0;str[i]!=’\0’;i++)
str[i]=’\0’;
}
else //输出规定的格式
{
if(t!=0) printf("n");
t++;
for(m=0;str[m]!=’\0’;m++); //读取STR字符串的长度M
for(i=0;i<m;i++)
{
if(‘ ‘==str[i]||’n’==str[i]) //以空格或回车分割字符串
{
for(m=0;str[m]!=’\0’;m++); //读取STR字符串变化后的长度M
str[i]=’n’; //插入n后向后位移
for(j=0;j<m-i;j++)
str[m-j]=str[m-j-1];
str[i+1]=’n’;
i+=2;
}
}
puts(str); //输出字符串数组所有内容
}
n–;
}
return 0;
}
//方法2
#include <stdio.h>
int main()
{
int n,i;
char str[1000];
scanf("%d",&n);
gets(str);
gets(str);
printf("%sn",str);
printf("n");
for(i = 1;i < n;i++)
{
gets(str);
printf("%sn",str);
printf("n");
}
while(scanf("%s",&str)!=EOF)
{
printf("%sn",str);
printf("n");
}
return 0;
}
/*编号1009 Balloon Comes! (混合数据处理)
题目描述
The contest starts now! How excited it is to see balloons floating around. You, one of the best programmers in HDU, can get a very beautiful balloon if only you have solved the very very very… easy problem.
Give you an operator (+,-,*, / –denoting addition, subtraction, multiplication, division respectively) and two positive integers, your task is to output the result.
Is it very easy?
Come on, guy! PLMM will send you a beautiful Balloon right now!
Good Luck!
输入
Input contains multiple test cases. The first line of the input is a single integer T (0<T<1000) which is the number of test cases. T test cases follow. Each test case contains a char C (+,-,*, /) and two integers A and B(0<A,B<10000).Of course, we all know that A and B are operands and C is an operator.
输出
For each case, print the operation result. The result should be rounded to 2 decimal places If and only if it is not an integer.
样例输入
4
+ 1 2
– 1 2
* 1 2
/ 1 2
样例输出
3
-1
2
0.50
*/
#include <stdio.h>
int main(int argc, char *argv[])
{
int n,a,b;
char input;
scanf("%d",&n);
for(;n>0;n–)
{
getchar();
scanf("%c%d%d",&input,&a,&b);
switch(input){
case ‘+’:printf("%dn",a+b);break;
case ‘-‘:printf("%dn",a-b);break;
case ‘*’:printf("%dn",a*b);break;
case ‘/’:if(a%b==0) printf("%dn",a/b); else printf("%.2fn",(float)a/b);break;
}
}
return 0;
}
/*编号1010 简单的四则运算(ACM输入输出练习)
题目描述
编写一个程序,要求用户输入两个整数,输出这两个数的和、乘积、差和商。
输入
输入第一行有一个整数n,表示下面有n组数据。下面的n行,每行包括用空格隔开的两个int类型整数。
输出
输出n行,每行四个整数,分别为相应两个输入数的和、乘积、差和商(商若不是整数则保留2位小数),用空格隔开。输出结果不超过32位有符号整数范围。
样例输入
3
24 3
1 1
4 3
样例输出
27 72 21 8
2 1 0 1
7 12 1 1.33
*/
#include <stdio.h>
int main(int argc, char *argv[])
{
int n,a,b;
for(scanf("%d",&n);n>0;n–)
{
scanf("%d%d",&a,&b);
printf("%d %d %d ",a+b,a*b,a-b);
if(a%b==0)
printf("%dn",a/b);
else printf("%.2fn",(float)a/b);
}
return 0;
}

第二期代码入口:http://www.blacknet.cn/?p=153