1-1 sdut- C语言实验——矩阵下三角元素之和
任务描述:
输入一个正整数n(1<=n<=10),再输入n*n的矩阵,要求求该矩阵的下三角元素之和。
函数接口定义:
int f(int (*p)[10],int n);
其中 p 和 n 都是用户传入的参数。 p 的值为地址; n 是[1, 10]区间内的个位数。函数需要返回求和后的数据。
裁判测试程序样例:
#include <stdio.h>
int f(int (*p)[10],int n);
int main()
{
int n,i,j,sum;
int a[10][10];
scanf("%d",&n);
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
{
scanf("%d",&a[i][j]);
}
}
sum=f(a,n);
printf("%d",sum);
return 0;
}
/* 请在这里填写答案 */
输入样例:
5 1 2 3 4 5 2 3 4 5 6 3 4 5 6 7 4 5 6 7 8 5 6 7 8 9
输出样例:
75
相关限制:
代码长度限制16KB 时间限制400ms 内存限制64MB 栈限制8192KB
答案:
int f(int (*p)[10],int n)
{
int i,j,c=0;
for(i=0;i<n;i++)
{
for(j=0;j<=i;j++)
{
c+=p[i][j];
}
}
return c;
}
1-2 sdut-C语言实验- n个数的排序
任务描述:
Qiao当上了体育委员,现在老师让他去给班级里的人排队,Qiao刚学了排序,所以他想以这种方式给班级里的人排队(从矮到高),他想知道排序完成后的结果。
函数接口定义:
void sort(int *p,int n);
其中 p 和 n 都是用户传入的参数。 p 的值为传递过来的地址; n 的为正整数(1<=n<=100)。函数不需要返回数据。
裁判测试程序样例:
#include <stdio.h>
void sort(int *p,int n);
int main()
{
int a[100];
int n,i;
int *p1;
while(scanf("%d",&n)!=EOF)
{
for(p1=a; p1<a+n; p1++)
scanf("%d",p1);
sort(a,n);
for(i=0; i<n-1; i++)
printf("%d ",a[i]);
printf("%d\n",a[n-1]);
}
return 0;
}
/* 请在这里填写答案 */
输入样例:
3 176 175 174
输出样例:
174 175 176
相关限制:
代码长度限制16KB 时间限制400ms 内存限制64MB 栈限制8192KB
答案:
void sort(int *p,int n)
{
int i,j,t;
for(i=0;i<n-1;i++)
{
for(j=0;j<n-1-i;j++) { if(*(p+j)>*(p+j+1))
{
t=*(p+j);
*(p+j)=*(p+j+1);
*(p+j+1)=t;
}
}
}
}
1-3 拆分实数的整数与小数部分
任务描述:
本题要求实现一个拆分实数的整数与小数部分的简单函数。
函数接口定义:
void splitfloat( float x, int *intpart, float *fracpart );
其中x是被拆分的实数(0x10000),*intpart和*fracpart分别是将实数x拆分出来的整数部分与小数部分。
裁判测试程序样例:
#include <stdio.h>
void splitfloat( float x, int *intpart, float *fracpart );
int main()
{
float x, fracpart;
int intpart;
scanf("%f", &x);
splitfloat(x, &intpart, &fracpart);
printf("The integer part is %d\n", intpart);
printf("The fractional part is %g\n", fracpart);
return 0;
}
/* 你的代码将被嵌在这里 */
输入样例:
2.718
输出样例:
The integer part is 2 The fractional part is 0.718
相关限制:
代码长度限制16KB 时间限制400ms 内存限制64MB 栈限制8192KB
答案:
void splitfloat( float x, int *intpart, float *fracpart ){
int y=(int)x;
float z;
*intpart=y;
z=(x-(int)x);
*fracpart=z ;
return;
}
1-4 sdut-C语言实验-计算组合数
任务描述:
计算组合数。C(n,m),表示从n个数中选择m个的组合数。
计算公式如下:
若:m=0,C(n,m)=1
否则, 若 n=1,C(n,m)=1
否则,若m=n,C(n,m)=1
否则 C(n,m) = C(n-1,m-1) + C(n-1,m).
函数接口定义:
在这里描述函数接口。例如: int fun(int n,int m);
其中 n 和 m 都是用户传入的参数(0 <= m <= n <= 20)。
裁判测试程序样例:
#include <stdio.h>
int fun(int n,int m);
int main()
{
int t,n,m,i;
scanf("%d",&t);
for(i=1;i<=t;i++)
{
scanf("%d %d",&n,&m);
printf("%d\n",fun(n,m));
}
return 0;
}
/* 请在这里填写答案 */
输入样例:
3 2 1 3 2 4 0
输出样例:
2 3 1
相关限制:
代码长度限制16KB 时间限制400ms 内存限制64MB 栈限制8192KB
答案:
int fun(int n,int m)
{
if((m==0)||(n==1)||(m==n))
{
return 1;
}
else
return fun(n-1,m-1)+fun(n-1,m);
}
1-5 sdut-C语言实验- 简单字符串排序
任务描述:
从键盘输入10个学生的姓名和成绩,请按字典序排列学生的姓名并输出(姓名和成绩对应关系保持不变)。
输入格式:
输入共11行,前10行每行是一个学生的姓名,最后一行是10个用空格分开的整数表示对应的10个学生成绩。(姓名大小不超过20个字符)
输出格式:
输出姓名按字典序排列后的学生姓名和成绩,共10行,每个学生的姓名和成绩占一行,姓名和成绩间用逗号分开。
输入样例:
Bush White Mark Jean Black Wood Jenny Frank Bill Smith 78 85 96 65 46 83 77 88 54 98
输出样例:
Bill,54 Black,46 Bush,78 Frank,88 Jean,65 Jenny,77 Mark,96 Smith,98 White,85 Wood,83
相关限制:
代码长度限制16KB 时间限制400ms 内存限制64MB 栈限制8192KB
答案:
#include <stdio.h>
int main()
{
int i,j,b[10],t;
char a[10][20],c[20];
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
for(i=0;i<10;i++)
{
scanf("%s",a[i]);
}
for(i=0;i<10;i++)
{
scanf("%d",&b[i]);
}
for(j=0;j<9;j++)
{
for(i=0;i<9;i++) { if(strcmp(a[i],a[i+1])>0)
{
strcpy(c,a[i]);
strcpy(a[i],a[i+1]);
strcpy(a[i+1],c);
t=b[i];
b[i]=b[i+1];
b[i+1]=t;
}
}
}
for(i=0;i<9;i++)
{
printf("%s,%d\n",a[i],b[i]);
}
printf("%s,%d",a[9],b[9]);
return 0;
}
1-6 sdut-C语言实验 – 字符统计
任务描述:
输入英文句子,输出该句子中除了空格外出现次数最多的字符及其出现的次数。
输入格式:
输入数据包含多个测试实例,每个测试实例是一个长度不超过100的英文句子,占一行。
输出格式:
逐行输出每个句子中出现次数最多的字符及其出现的次数(如果有多个字符的次数相同,只输出ASCII码最小的字符)。
输入样例:
在这里给出一组输入。例如:
I am a student a good programming problem ABCD abcd ABCD abcd
输出样例:
在这里给出相应的输出。例如:
a 2 o 4 A 2
相关限制:
代码长度限制16KB 时间限制400ms 内存限制64MB 栈限制8192KB
答案:
#include <stdio.h>
int main()
{
char s[1000],k;
int i,max;
while(gets(s))
{
int a[1000]={0};
max=0;
for(i=0;s[i]!='\0';i++)
{
if(s[i]!=' ')
a[s[i]]++;
}
for(i='A';i<='z';i++) { if(a[i]>max)
{
max=a[i];
k=i;
}
}
printf("%c %d\n",k,max);
}
return 0;
}
1-7 sdut- C语言实验-删除指定字符
任务描述:
从键盘输入一个字符串给str和一个字符给c,删除str中的所有字符c并输出删除后的字符串str。
输入格式:
第一行是一个字符串,不超过100个字符 ,可以带空格;第二行是一个字符。
输出格式:
删除指定字符后的字符串。
输入样例:
在这里给出一组输入。例如:
sdf$$$sdf$$ $
输出样例:
在这里给出相应的输出。例如:
sdfsdf
相关限制:
代码长度限制16KB 时间限制400ms 内存限制64MB 栈限制8192KB
答案:
#include <stdio.h>
int main()
{
int i;
char s[100],p;
gets(s);
scanf("%c",&p);
for(i=0;s[i]!='\0';i++)
{
if(s[i]!=p)
printf("%c",s[i]);
}
printf("\n");
return 0;
}
1-8 字符串逆序
任务描述:
输入一个字符串,对该字符串进行逆序,输出逆序后的字符串。
输入格式:
输入在一行中给出一个不超过80个字符长度的、以回车结束的非空字符串。
输出格式:
在一行中输出逆序后的字符串。
输入样例:
在这里给出一组输入。例如:
Hello World!
输出样例:
在这里给出相应的输出。例如:
!dlroW olleH
相关限制:
代码长度限制16KB 时间限制400ms 内存限制64MB 栈限制8192KB
答案:
#include <stdio.h>
int main()
{
char s[101],i;
gets(s);
for(i=strlen(s)-1; i>=0; i--)
{
printf("%c",s[i]);
}
return 0;
}