一元二次方程的解
试题名称 1-3 一元二次方程的解
问题描述
一元二次方程的两个根为:
其解的情况与判别式的值有关:
•当,则方程有两个不相等的根;
•当,则方程有两个相等的根;
•当,则方程无实数根。
输入说明
输入三个整数 a,b,c()表示一元二次方程的三个系数,以空格分割。
输出说明
当方程有两个相等的根时,输出这个值;当方程有两个不相等根时输出两个根的平方和;当方程无实数根时输出“No real roots”。所有结果只保留整数部分(向下取整,即小数部分丢弃)。
测试样例
输入样例 1
1 -4 4
输出样例 1
2
输入样例 2
2 -7 6
输出样例2
6
输入样例3
-1 3 3
输出样例 3
15
输入样例4
10 1 10
输出样例 4
No real roots
#include <stdio.h>
#include <math.h>
int main(){
float a,b,c;
scanf("%f %f %f",&a,&b,&c);
float t;
t = b*b-4*a*c;
float result1 = (-b+sqrt(t))/2*a;
float result2 = (-b-sqrt(t))/2*a;
if(t==0){
printf("%.0f",result1);
}else if(t>0){
printf("%.0f",result1*result1+result2*result2);
}else printf("No real roots");
return 0;
}
密码生成
**试题名称 2-3密码生成
问题描述
输入一个含字母、数字、空格和其它字符的字符串,完成密码生成,密码算法如下:
1.) 大写字母转换为小写字母如'Y'转换为小写字母为’y’;
2.) 小写字母转换为大写字母,如'b'转换为大写字母为’B’
3.) 数字字符转换为其数值+2后的数字字符,如果+2后值大于等于10,则去掉十位,仅记录个位数字,如原字符为'9',其数字值为9,+2后变为11,大于10,取其个位数字1,转换为'1';
4.) 空格字符转换为'#'字符;
输入一串字符(长度小于20),试编程将该字符串转换为密码并输出。
输入说明
输入一串字符(长度小于20)。
输出说明
按要求的格式输出处理结果:处理后的密码
测试样例:
输入样例1
abcyz *& AZ
输出样例1
ABC#YZ#*&#az
输入样例2
kQ37 &*END
输出样例2
Kq59#&*end
输入样例3
28*& (abc YZD
输出样例3
40*&#(ABC#yzd
**
#include <stdio.h>
int main(){
char s[20];
int i=0;
gets(s);
for(i=0;s[i]!='\0';i++){
if(s[i]>='a'&&s[i]<='z'){
s[i] = s[i]-32;
}else if(s[i]>='A'&&s[i]<='Z'){
s[i] = s[i]+32;
}else if(s[i]>='0'&&s[i]<='9'){
int t;
t=s[i]-'0'+2;
if(t<10){
s[i]= t+'0';
}else if(t>=10){
s[i] = t%10+'0';
}
}else if(s[i]==' '){
s[i]='#';
}
}
printf("\n%s",s);
return 0;
}
最大公约数求和
试题名称 3-3 最大公约数求和
问题描述
对于n个正整数,分别求两相邻整数的最大公约数,得到n-1个值,然后求这n-1个值的和。
如给定n=4个整数2865,则相邻整数为(2,8),(8,6),(6,5),这三组数的最大公约数分别为2、2、1,所以最终输出5。
输入说明
输入分两行:
第一行为一个正整数n,1<n<100;
第二行为n个正整数,每个整数绝对值都小于215,整数之间以空格分隔.
输出说明
输出一行,为最大公约数的和,输出后换行。
测试样例:
输入样例1
4
2865
输出样例1
5
输入样例2
6
512841
输出样例2
9
#include <stdio.h>
int main(){
int i = 0,n,sum = 0;
scanf("%d",&n);
int a[100];
for(i=0;i<n;i++){
scanf("%d",&a[i]);
}
int t,m;
for(i=0;i<n-1;i++){
t = a[i+1];
m = a[i];
while(t!=0){
int q;
q= m%t;
m=t;
t = q;
}
sum = sum+m;
}
printf("%d",sum);
return 0;
}
查找矩阵元素
4-3查找矩阵元素
问题描述
找出一个m×n的矩阵中,在行上最大而在列上最小的元素,输出它的位置。
输入说明
共输入M+1行,第一行给出矩阵A的行数和列数(0<m、n <50),用空格分隔,以下m行,每行输入该行的n个元素,用空格分隔。矩阵所有元素各不相同。
输出说明
按行优先的顺序分行输出所有该类元素的行号、列号(行号和列号从1开始计数)及元素的值(用一个空格分隔),之后换行。如果不存在,输出”not exist”。
测试样例:
输入样例1
3 3
1 5 6
7 9 27
5 11 35
输出样例1
1 3 6
输入样例2
3 2
35 27
-12 9
20 0
输出样例2
not exist
#include <stdio.h>
int main(){
int m,n;
scanf("%d %d",&m,&n);
int a[50][50],i = 0,j=0;
for(i=0;i<m;i++){
for(j=0;j<n;j++){
scanf("%d",&a[i][j]);
}
}
int flag = 0;
for(i=0;i<m;i++){
for(j=0;j<n;j++){
int t=a[i][j];
int max = t,min = t;
for(int l=0;l<n;l++){
if(a[i][l]>max) max = a[i][l];
}
for(int r=0;r<m;r++){
if(a[r][j]<min) min = a[r][j];
}
if(max==t&&min==t){
printf("%d %d %d\n",i+1,j+1,a[i][j]);
flag = 1;
}
}
}
if(flag==0){
printf("not exist");
}
return 0;
}
禁考名单
在这里插入代码片试题名称 5-3禁考名单
问题描述
期末考试前,每门课程需按培养过程要求确定不能参加考试的学生名单。
给定N个学生的信息,包括学号(整数)、总课次数、到课次数和完成作业次数([0,48]区间内的整数),每次课对应一次应完成作业。要求输出禁考学生的总数和学号。
禁考规则:学生缺课次数达到(≥)总课程次数的四分之一,且完成作业次数不足(<)总次数的二分之一。
输入格式:
在一行中给出正整数N(0<N≤10)。随后N行,每行给出一名学生的学号、总课次数、到课次数和完成作业次数,中间以空格分隔。输入保证学号有序。
输出格式:
第一行输出禁考学生人数,后面每行输出一名禁考学生的学号。输出的学号顺序与输入时的学号次序相同;禁考人数为0时,输出”No”。
测试样例:
输入样例1:
3
10001 48 46 48
10002 32 16 15
10003 40 30 18
输出样例1:
2
10002
10003
输入样例2:
3
10001 48 46 48
10002 32 18 18
10003 40 30 28
输出样例2:
No
#include <stdio.h>
struct Student{
int num;
int all;
int com;
int fin;
}stu[100];
int main(){
int i = 0,n,count = 0;;
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%d %d %d %d",&stu[i].num,&stu[i].all,&stu[i].com,&stu[i].fin);
}
int b[100];
for(i=0;i<n;i++){
int t = stu[i].all;
if(stu[i].com<=3*t/4&&stu[i].fin<0.5*t){
b[count]=stu[i].num;
count++;
}
}
if(count==0){
printf("No");
}else{
printf("%d\n",count);
for(i=0;i<count;i++){
printf("%d\n",b[i]);
}
}
return 0;
}
码字不易,给个👍~我们下一篇博客见!
才疏学浅,个人理解难免有错,欢迎指正。