首页 > 编程语言 >河北工程806c/c++程序设计2013年-2021年编程题

河北工程806c/c++程序设计2013年-2021年编程题

时间:2023-03-04 13:33:22浏览次数:44  
标签:10 return int max c++ 2021 printf main 806c

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分 )

img

#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行 )。

img


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;
}

img

//编写程序,从键盘输入梯形的上下底边长度和高,计算梯形的面积。
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;
}

img

//利用递归进行计算
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;
}

img

#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年

img

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;
}

img


img

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;
}

img

#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

img

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年

img

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

相关文章

  • 【C++随记】浅谈编译与链接
    原文网址:https://zhuanlan.zhihu.com/p/518831355本文讨论的内容来自于仕琪老师的课程:C/C++从基础语法到优化策略课程地址:[C++](快速学习C和C++,基础语法和优化策略,学了不......
  • C++编译错误、运行错误、链接错误小结
    原文网址:https://blog.csdn.net/Thera_qing/article/details/100740389一、运行错误运行错误是什么运行错误是指代码逻辑无措,由于编译器无法发现运行时错误,这些错误往往......
  • C/C++ 数据结构优先级队列的实现(使用二级指针)
    #include<iostream>#include<Windows.h>#include<iomanip>//优先级队列的实现usingnamespacestd;#defineMaxSize5typedefintDataType;//队列中的元素类型......
  • hash表 C++的使用以及理解
    hash表C++的使用以及理解1、哈希表定义哈希表(Hashtable,也叫哈希表),是根据关键码值(Keyvalue)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置......
  • ROS服务通信(C++)
    ROS服务通信C++效果图结构总览友情提醒每一步编辑完,执行一下Ctrl+Shift+B进行编译,及时排查错误准备工作第一步:创建工作空间配置:roscpprospystd_msgsd......
  • [C/C++] noexcept:承诺函数不抛出异常
    noexcept是新标准(C++11)引入的,其作用是我们承诺一个函数不抛出异常。标准库知道我们的函数不会抛出异常,就不会认为“函数可能会抛出异常”,而为这种可能性做一些额外的工作;......
  • C++智能指针详解(共享指针,唯一指针,自动指针)
    前言:智能指针在C++11中引入,分为三类:shared_ptr:共享指针unique_ptr:唯一指针auto_ptr:自动指针一、共享指针几个共享指针可以指向同一个对象;每当shared_ptr的最后一个所有者......
  • C++类的默认函数(特种函数)
    默认不显示地声明#include<iostream>#include<chrono>#include<unordered_map>usingnamespacestd;usingnamespacestd::chrono;classWidget{public://......
  • [JOISC 2021 Day3] ビーバーの会合 2
    前言:离联合省选还有28天,模拟赛40min把这题切了睡了一上午。来讲个有点异类,不用点分治的单\(\log\)做法。首先我们观察发现在奇数的时候答案是\(1\),偶数的时候答......
  • C++时间对秒数的运算
    使用引用#include<iostream>usingnamespacestd;structTime{ inth; intm; ints;};voidtimeCompute(Time&t,intsec){ //引用作为形参 t.m=t.m+(t.s......