****************************0-0目录************************************
****************************0-0目录************************************
6-1 求m到n之和
1.题目
本题要求实现一个计算m~n(m<n)之间所有整数的和的简单函数。
函数接口定义:
int sum( int m, int n );
其中
m
和n
是用户传入的参数,保证有m<n。函数返回的是m~n之间所有整数的和。裁判测试程序样例:
#include <stdio.h> int sum(int m, int n); int main() { int m, n; scanf("%d %d", &m, &n); printf("sum = %d\n", sum(m, n)); return 0; } /* 你的代码将被嵌在这里 */
输入样例:
-5 8
输出样例:
sum = 21
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
2.参考代码
/*@Date:2023/12/25 */ int sum(int m,int n){ int sum = 0; for(int i=m;i<=n;i++){ sum+=i; } return sum; }
6-2 字符串的连接
1.题目
本题要求实现一个函数,将两个字符串连接起来。
函数接口定义:
char *str_cat( char *s, char *t );
函数
str_cat
应将字符串t
复制到字符串s
的末端,并且返回字符串s
的首地址。裁判测试程序样例:
#include <stdio.h> #include <string.h> #define MAXS 10 char *str_cat( char *s, char *t ); int main() { char *p; char str1[MAXS+MAXS] = {'\0'}, str2[MAXS] = {'\0'}; scanf("%s%s", str1, str2); p = str_cat(str1, str2); printf("%s\n%s\n", p, str1); return 0; } /* 你的代码将被嵌在这里 */
输入样例:
abc def
输出样例:
abcdef abcdef
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
2.参考代码
/*@Date:2023/12/25 */ char *str_cat(char *s,char *t){ int length = strlen(s); for(int i=0;*(t+i)!='\0';i++){ *(s+length+i) = *(t+i); //s+length:s字符串后面、s+length+i:s字符串后面往后走 } //t+i:t字符串从首地址遍历 return s; }
7-1 sdut-C语言实验——逆置正整数
1.题目
输入一个三位正整数,将它反向输出。注意130逆置后是31。
输入格式:
3位正整数。
输出格式:
逆置后的正整数。
输入样例:
在这里给出一组输入。例如:
123
输出样例:
在这里给出相应的输出。例如:
321
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
2.参考代码
/*@Date:2023/12/25 */ #include<stdio.h> int Reversenum(int num); int main(){ int num; scanf("%d",&num); printf("%d",Reversenum(num)); } int Reversenum(int num){ int save = num; int result = 0; int x; while(save>0){ x = save%10; save/=10; result = x+result*10; } return result; }
7-2 查找指定字符
1.题目
本题要求编写程序,从给定字符串中查找某指定的字符。
输入格式:
输入的第一行是一个待查找的字符。第二行是一个以回车结束的非空字符串(不超过80个字符)。
输出格式:
如果找到,在一行内按照格式“index = 下标”输出该字符在字符串中所对应的最大下标(下标从0开始);否则输出"Not Found"。
输入样例1:
m programming
输出样例1:
index = 7
输入样例2:
a 1234
输出样例2:
Not Found
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
2.参考代码
/*@Date:2023/12/26 */ #include<stdio.h> #include<string.h> int main(){ int index = -1; char ch; char str[81]; ch = getchar(); getchar(); //getchar()用于吞掉输入第一个字符时产生的回车键,防止进入了gets使gets直接跳过 gets(str); //这里不能写scanf来输入字符串,会扣分 int length = strlen(str); for(int i=0;i<length;i++){ if(str[i]==ch){ //这里如果满足条件就赋值,所以是可以输出最大下标的 index = i; } } if(index == -1){ printf("Not Found"); } else{ printf("index = %d",index); } }
7-3 sdut-C语言实验- 分段函数求值
1.题目
有如下分段函数
F(x) = x^2 + 1 当x> 0时;
F(x) = -x 当x<0时;
F(x) = 100.0 当x=0时;
编程根据输入的不同x(x为实数),输出其对应的函数值。输入格式:
多组输入,每组一个实数x。处理到文件结束。
输出格式:
对于每组输入x,输出其对应的F(x),每组一行,结果保留1位小数。
输入样例:
8.00 -5.0
输出样例:
在这里给出相应的输出。例如:
65.0 5.0
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
2.参考代码
/*@Date:2023/12/25 */ #include<stdio.h> int main(){ double x; while(scanf("%lf",&x)!=EOF){ double result; if(x>0){ result = x*x+1; } else if(x<0){ result = -x; } else if(x==0){ result = 100.0; } printf("%.1lf\n",result); } return 0; }
7-4 求阶乘序列前N项和
1.题目
本题要求编写程序,计算序列 1!+2!+3!+⋯ 的前N项之和。
输入格式:
输入在一行中给出一个不超过12的正整数N。
输出格式:
在一行中输出整数结果。
输入样例:
5
输出样例:
153
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
2.参考代码
/*@Date:2023/12/25 */ #include<stdio.h> int Factorial(int n); int main(){ int N; int result = 0; scanf("%d",&N); for(int i=1;i<=N;i++){ result+=Factorial(i); } printf("%d",result); } int Factorial(int n){ //函数作用:计算阶乘(Factorial) int out = 1; for(int i=1;i<=n;i++){ out*=i; } return out; }
7-5 判断上三角矩阵
1.题目
上三角矩阵指主对角线以下的元素都为0的矩阵;主对角线为从矩阵的左上角至右下角的连线。
本题要求编写程序,判断一个给定的方阵是否上三角矩阵。
输入格式:
输入第一行给出一个正整数T,为待测矩阵的个数。接下来给出T个矩阵的信息:每个矩阵信息的第一行给出一个不超过10的正整数n。随后n行,每行给出n个整数,其间以空格分隔。
输出格式:
每个矩阵的判断结果占一行。如果输入的矩阵是上三角矩阵,输出“YES”,否则输出“NO”。
输入样例:
3 3 1 2 3 0 4 5 0 0 6 2 1 0 -8 2 3 1 2 3 1 4 5 0 -1 6
输出样例:
YES NO NO
鸣谢中水七局机电安装分局喻春桥补充数据!
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
2.参考代码
/*@Date:2023/12/26 */ #include<stdio.h> int main(){ int T; scanf("%d",&T); while(T--){ int n; int arr[1000][1000]; scanf("%d",&n); for(int i=0;i<n;i++){ for(int k=0;k<n;k++){ scanf("%d",&arr[i][k]); } } int flag=1; for(int i=0;i<n;i++){ for(int k=0;k<i;k++){ if(arr[i][k]!=0){ flag=0; } } } if(flag==1){ printf("YES\n"); } else if(flag==0){ printf("NO\n"); } } return 0; }
7-6 字符串排序
1.题目
本题要求编写程序,读入5个字符串,按由小到大的顺序输出。
输入格式:
输入为由空格分隔的5个非空字符串,每个字符串不包括空格、制表符、换行符等空白字符,长度小于80。
输出格式:
按照以下格式输出排序后的结果:
After sorted: 每行一个字符串
输入样例:
red yellow blue black white
输出样例:
After sorted: black blue red white yellow
鸣谢贵州民族大学张玉全老师修正数据!
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
2.参考代码
/*@Date:2023/12/26 */ #include<stdio.h> #include<string.h> //strcpy、strcmp函数要用 int main(){ char arr[5][80]; //二维数组的"行"表示字符串个数,"列"表示每个字符 串的字符数 for(int i=0;i<5;i++){ scanf("%s",&arr[i]); //输入5个字符串 } for(int i=0;i<5-1;i++){ //冒泡排序 for(int k=0;k<5-1-i;k++){ if(strcmp(arr[k],arr[k+1])>0){ char temp[80] = "\0"; strcpy(temp,arr[k+1]); strcpy(arr[k+1],arr[k]); strcpy(arr[k],temp); } } } printf("After sorted:\n"); for(int i=0;i<5;i++){ printf("%s\n",arr[i]); } return 0; }