ps:都是自己练习写的,可能不是最好的写法,但是都运行过,能跑起来。
2021年
1.从键盘上输入一元二次方程(ax2+bx+c=0)的系数:a,b,c ;计算并输出方程的根,如果没有实根则输出“No real roots.”。(10 分)
例:(1)输入:6,3,1 输出:No real roots. (2)输入:1.0,-2,1 输出:x1=1,x2=1
#include <stdio.h>
#include <math.h>
int main(){
float a,b,c,x1,x2,d;
scanf("%f,%f,%f",&a,&b,&c);
d=b*b-4*a*c;
printf("xue");
if(d<0){
printf("No real roots.");
} else{
x1=(-b+ sqrtf(d))/(2*a*c);
x2=(-b- sqrtf(d))/(2*a*c);
printf("x1=%f,x2=%f",x1,x2);
}
return 0;
}
2.水仙花数是指一个 3 位数,其各位数字立方和等于该数本身。请输出所有的水仙花数。
#include <stdio.h>
int main(){
int n,n1,n2,n3;
for(n=100;n<1000;n++){
n1=n/100;
n2=n/10%10;
n3=n%10;
if(n==n1*n1*n1+n2*n2*n2+n3*n3*n3)
printf("%d\n",n);
}
return 0;
}
3.主函数中输入 n,调用递归函数计算 n! 并输出。(15 分)
#include <stdio.h>
int digui(int n) {
if (n < 2)
return 1;
else
return n * digui(n - 1);
}
int main() {
int n;
scanf("%d", &n);
printf("%d", digui(n));
return 0;
}
4.从键盘上输入 3*4 矩阵的各个元素(空格或者回车间隔),求出其中值最大的元素的
值,以及其行号与列号。(15 分)
例:(1)输入:1 2 3 4 5 6 7 8 9 10 11 12
输出:max=12,row=2,col=3
#include <stdio.h>
int main(){
int a[3][4],i,j,max,max_row,max_col;
for(i=0;i<3;i++){
for(j=0;j<4;j++){
scanf("%d",&a[i][j]);
if(i==0&&j==0)
max=a[i][j];
if(a[i][j]>max){
max=a[i][j];
max_row=i;
max_col=j;
}
}
}
printf("max=%d,row=%d,col=%d",max,max_row,max_col);
return 0;
}
2020年
1.输出 100~200之间既不能被 3整除也不能被 7整除的整数并统计这些整数的个数, 要求每行输出 8个数。(10分 )
#include <stdio.h>
int main(){
int n=0,i;
for(i=100;i<200;i++){
if(i%3!=0&&i%7!=0){
n++;
printf("%d ",i);
if(n%8==0){
printf("\n");
}
}
}
printf("\n n=%d",n);
return 0;
}
2.将一个二维数组行和列的元素互换,存到另一个二维数组中。(10分 )
#include "stdio.h"
int main(){
int a[2][3]={
{1,2,3},{4,5,6}
};
int b[3][2];
int i,j;
for(i=0;i<2;i++){
for(j=0;j<3;j++){
b[j][i]=a[i][j];
}
}
return 0;
}
3.输入 10个数,要求输出其中值最大的元素和该数是第几个数。
int main() {
int max, n, x, max_index;
for (n = 0; n < 10;n++) {
scanf("%d", &x);
if (n == 0 || max < x) {
max = x;
max_index = n;
}
}
printf("max=%d,max_index=%d",max,max_index+1);
return 0;
}
4.求爱因斯坦数学题。有一条长阶,
若每步跨 2阶 ,则最后剩1阶,
若每步跨3阶, 则最后剩2阶,
若每步跨5阶,则最后剩 4阶
每步跨 6阶 ,则最后剩 5阶,
每步跨 7阶 , 最后正好 1阶不剩 。
int main() {
int n = 0;
while (1) {
if (n % 2 == 1 && n % 3 == 2 && n % 5 == 4 && n % 6 == 5 && n % 7 == 0)
break;
else {
// printf("%d\n", n);
n++;
}
}
printf("n=%d", n);
return 0;
}
5.输入一行字符,统计其中有多少个单词,单词之间用空格分隔开。(15分 )
例如:输入 I am a student,输 出There are 4 words in this line.
int main() {
int i,n=0;
char str[100];
gets(str); //输入字符串,加入字符数组
for (i = 0; str[i] != 0; i++) {
if(str[i]==' ') n++;
printf("%c", str[i]);
}
printf("\nThere are %d words in this line.", n+1);
return 0;
}
2019年
1.利用数组存储从键盘接收的 10个数,并将其值按逆序输出,
例如,原来输入顺序为: 8,6,5,4,1。 要求输出顺序为:1,4,5,6,8。
int main(){
int a[10]={0},i;
for(i=0;i<10;i++){
scanf("%d",&a[i]);
}
for(i=0;i<10;i++){
printf("%d,",a[9-i]);
}
return 0;
}
2.编程打印如下的杨辉三角形 (要求打印出10行 )。
3.一球从 100米高度自由下落,每次落地后返回原高度的一半,再落下。求它在第10次落地时共经过多少米?第 10次反弹多高?
int main(){
float sum=100,h=100;
int i;
for(i=0;i<10;i++){
h=h/2;
sum=2*h+sum;
}
printf("sum=%f,h=%f",sum,h);
}
4.写 一个判断素数的函数,在主函数输入一个整数,输出是否是素数。(20分 )
int isSuShu(int num){
int is=1;
for(int i=1;i<num/2;i++){
if(num%i==0){
is=0;
break;
}
}
return is;
}
int main(){
int num;
scanf("%d",&num);
if(isSuShu(num))
printf("%d is yes",num);
else
printf("%d is no",num);
return 0;
}
2018年
1.(20 分)从键盘上输入若干个学生的成绩,计算出平均成绩,并输出不及格的成绩和人数。
int main(){
int i=0,n_sum=0,n_no=0;
float sum,m;
printf("n_sum=");
scanf("%d",&n_sum);
printf("\n");
float a[n_sum];
printf("m=\n");
do{
scanf("%f",&m);
sum+=m;
if(m<60){
a[n_no]=m;
n_no++;
}
i++;
} while (i<n_sum);
printf("avg:%f\n",sum/n_sum);
printf("n_no:%d\n",n_no);
printf("a[]\n");
for (int j = 0; j < n_no; ++j) {
printf("%f ",a[j]);
}
return 0;
}
2.(10分)试编程判断输入的正整数是否既是3又是5的正倍数。若是,则输出'yes';否则输出'no'。
//2.(10分)试编程判断输入的正整数是否既是3又是5的正倍数。若是,则输出'yes';否则输出'no'。
int main(){
int n;
scanf("%d",&n);
if(n%3==0&&n%5==0)
printf("yes");
else
printf("no");
return 0;
}
//编写程序,从键盘输入梯形的上下底边长度和高,计算梯形的面积。
int main(){
float a,b,h,area;
printf("a=");
scanf("%f",&a);
printf("b=");
scanf("%f",&b);
printf("h=");
scanf("%f",&h);
if(a>0&&b>0&&h>0){
area=(a+b)*h/2;
printf("area=%f",area);
} else{
printf("no");
}
return 0;
}
//利用递归进行计算
int digui(int num){
if(num>1){
return num*digui(num-1);
}else{
return 1;
}
}
int main(){
int sum;
for(int i=1;i<11;i++)
sum+= digui(i);
printf("%d",sum);
return 0;
}
#include <stdio.h>
struct Time{
int year;
int month;
int day;
} time;
void main()
{
int a[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int i,k=0;
scanf("%d-%d-%d",&time.year,&time.month,&time.day);
if((time.year%4==0 && time.year%100!=0) || time.year%400==0)
{
k=1;
}
for(i=0;i<time.month-1;i++)
{
if(i==1 && k==1)
{
time.day+=a[i]+1;
}else{
time.day+=a[i];
}
}
printf("%d",time.day);
}
2017年
int main(){
float x;
int y;
scanf("%f",&x);
if(x<0)
y=-1;
else if(x>0)
y=1;
else
y=0;
printf("y=%d",y);
return 0;
}
int main(){
int i,j;
for(i=1;i<10;i++){
for(j=1;j<=i;j++){
printf("%d*%d=%d\t",j,i,i*j);
}
printf("\n");
}
return 0;
}
#define STIDENT_NUMBER 30
//定义结构体
struct STUDENT{
char stuID[10];
char stuName[10];
float results[5]; //各科成绩
float results_sum; //总分
float results_avg; //平均分
};
void print(struct STUDENT p){
//输出函数
printf("name=%s\n",p.stuName);
printf("stuID=%s\n",p.stuID);
printf("results_sum=%f\n",p.results_sum);
printf("results_avg=%f\n",p.results_avg);
}
struct STUDENT input(){
//输入函数
struct STUDENT p; //创建结构体变量
p.results_sum=0; //初始化平均分与总分
p.results_avg=0;
printf("name=");
fflush(stdin); //清除缓冲区数据,防止出现bug ***重点***
gets(p.stuName);
printf("stuID=");
fflush(stdin);
gets(p.stuID);
for(int i=0;i<5;i++){
printf("results%d=",i+1);
scanf("%f",&(p.results[i]));
p.results_sum+=p.results[i];
}
p.results_avg=p.results_sum/5;
return p;
}
int main(){
struct STUDENT student[STIDENT_NUMBER];
for(int i=0;i<STIDENT_NUMBER;i++){
printf("input student %d\n",i+1);
student[i]=input();
}
for(int j=0;j<STIDENT_NUMBER;j++){
printf("print student %d\n",j+1);
print(student[j]);
}
}
2016年
1.用选择法对10个整数进行升序排序
思路
- 把首项当成最大最小元素
- 从剩余的元素中继续找到最大最小元素
- 需要确定每次找到的最大最小元素的下标
int main(){
int a[10]={4,31,5,67,4,4,3,2,6,0},i,j,x,z;
for(i=0;i<9;i++){
x=i; //先将a[i]当成最小的数,遍历找到最小的数的下标
for(j=i+1;j<10;j++){
if(a[x]>a[j]) //a[x]当成最小的数,于后面的元素一 一比较,
x=j; //如果a[x]>a[j]那么x等于j,变换最小值的下标
}
if(x!=i){ //如果x!=i,说明x的值已经改变,找到了比a[i]还小的数的下标
z=a[i]; //进行a[i]和a[x]的交换
a[i]=a[x];
a[x]=z;
}
}
for(j=0;j<10;j++){
printf("%d ",a[j]);
}
}
2.使用递归函数;有5个学生坐在一起。 问第5个学生多少岁?他说比第4个学生大2岁。 问第4个学生岁数,他说比第3个学生大2岁。 问第3个学生,又说比第2个学生大2岁。 问第2个学生,说比第1个学生大2岁。 最后问第1个学生,他说是10岁。 试编写一程序,求第5个学生的年龄。
int age(int n){
if(n==1){
return 10;
} else{
n--;
return age(n)+2;
}
}
int main(){
int n=5;
printf("%d",age(n));
}
3.鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?请编程序解决百钱白鸡问题。
int main(){
int man=5,women=3,child3=1;
int man_num,women_num,child_num;
for(man_num=0;man_num<101;man_num++){
for(women_num=0;women_num<101;women_num++){
for(child_num=0;child_num<101;child_num++){
if((women_num*women+man_num*man+child_num*child3==100)&&(child_num*3+women_num+man_num==100)){
printf("women=%d,man=%d,child=%d\n",women_num,man_num,child_num*3);
}
}
}
}
return 0;
}
4
int tao(int day){
if(day==1){
return 1;
} else{
day--;
return (tao(day)+1)*2;
}
}
int main(){
int day=10;
printf("%d",tao(day));
return 0;
}
5.(20分)有两个班,学生数不同,编写一个函数,用来分别求各班的平均成绩。
int main(void) {
float average(float array[], int n);
float score_1[5] = { 98.5,66,74,97,56 };
float score_2[10] = { 98,67,45,45,34,67,89,75,56,78 };
printf("score_1:%6.2f", average(score_1, 5));
printf("\nscore_2:%6.2f", average(score_2, 10));
return 0;
}
float average(float array[], int n) {
float aver;
float sum = array[0];
for (int i = 1; i < n; i++)
sum = sum + array[i];
aver = sum / n;
return aver;
}
2015年
int main(){
int a;
scanf("%d",&a);
switch (a/10) {
case 10:
case 9:
printf("A");break;
case 8:
printf("B");break;
case 7:
printf("C");break;
case 6:
printf("D");break;
default:
printf("E");break;
}
return 0;
}
3、(15分)将 26个英文字母按 aAbBcCdD……..zZ先小写后大写的顺序逐个打印出来。
int main() {
int n;
for (n = 0; n < 26; n++) {
printf("%c", 'a' + n);
printf("%c", 'A' + n);
}
return 0;
}
4、(15分)写一个函数,使给定的一个二维数组(3×3)转置,即行列互换。
int fun(int a[3][3]){
int i,j,t;
for(i=0;i<3;i++){
for(j=0;j<i;j++){
t=a[i][j];
a[i][j]=a[j][i];
a[j][i]=t;
}
}
return a[3][3];
}
int main(){
int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};
int i,j;
fun(a);
for(i=0;i<3;i++){
for(j=0;j<3;j++){
printf("%d ",a[i][j]);
}
printf("\n");
}
return 0;
}
用起泡法对10个数排序(由小到大)。
//6、(15分)用起泡法对10个数排序(由小到大)。
int main(){
int t;
int a[10]={8,4,3,8,1,6,4,9,4,2};
for(int i=0;i<10;i++){
for(int j=0;j<10;j++){
if(a[j]>a[j+1]){
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
for(int c=0;c<10;c++)
printf("%d",a[c]);
return 0;
}
2013-2014年
求 100~200间的全部素数。(要求每行输出 10个数 )。
//2.求 100~200间 的全部素数。(要求每行输出10个数)。 (20分 )
int main() {
int s, num;
for (int n = 100; n < 200; n++) {
s = 1;
for (int i = 2; i < n / 2; i++) {
if (n % i == 0) {
s = 0;
break;
}
}
if (s == 1) {
num++;
printf("%d ", n);
if (num % 10 == 0) {
printf("\n");
}
}
}
return 0;
}
求100之内自然数中最大的能被17整除的数。
//求100之内自然数中最大的能被17整除的数
int main(){
for(int i=100;i>17;i--){
if(i%17==0){
printf("%d",i);
break;
}
}
return 0;
}
求3行3列矩阵a[3][3]={1,2,3,4,5,6,7,8,9};非对角线上元素之和。
//2、求3行3列矩阵a[3][3]={1,2,3,4,5,6,7,8,9};非对角线上元素之和。
int main(){
int sum=0,a[3][3]={1,2,3,4,5,6,7,8,9};
int i,j;
for(i=0;i<3;i++){
for(j=0;j<i;j++){
sum=a[i][j]+a[j][i]+sum;
}
}
printf("%d",sum);
return 0;
}
编程计算1*2*3+3*4+6*7+…+99*100*101的值。
//3、编程计算1*2*3+3*4+6*7+…+99*100*101的值。
int main(){
int s=1,i;
for(i=1;i<102;i=i+2){
s=s+i*(i+1)*(i+1);
}
printf("%d",s);
return 0;
}
标签:10,return,int,max,c++,2021,printf,main,806c
From: https://www.cnblogs.com/zzx-blogs/p/17178155.html