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
是被拆分的实数(0x
10000),*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; }