C语言阶段练习题

  • 题目一:(25分)

  1. 题目描述:输入终值,输出所有能被7整除的数值及其和

数据展示: 

代码展示:

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

int main(int argc, const char *argv[])

{

int a , sum=0 , m=0;          //定义输入值,求和值,以及判断换行的值

printf("题目:输入终值,输出所以被7整除的数值及其和\n");

printf("请输入:");

scanf("%d",&a );

for(int i=1;i<a;i++){

      if(i%7==0){             //模7换行

          printf("%-2d   ",i); //调整格式

          sum+=i;            //求模7的和

          m++;              //计数

      if(m%5==0) printf("\n");  //一行有五个就换行

      }



}



printf("\n\n100以内能被7整除的数值和是:%d\n",sum);

return 0;

}

  1. 评分要求
      1. 根据接收值准确定义变量类型(2分)
      2. 提示并输入终值(2分)
      3. 阅读题目确定循环要素:起始值、终值、步长(3分)
      4. 循环判断指定范围内能被7整除的数值并输出(5分) 核心
      5. 每5个换行输出(2分)
      6. 累计全部符合条件的数值和并输出(3分)
      7. 代码中添加不少于5行的关键注释描述实现思路(3分)

  • 题目二: (20分)

  1. 题目描述:  注册账号时需输入6位密码,根据密码组成验证其安全等级

输出框展示:

代码展示:

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

int main(int argc, const char *argv[])

{

         printf("题目:注册账号时需输入6位密码,根据密码组成验证其安全等级\n");

         int n=0,flag1=0,flag2=0,flag3=0,flag4=0,x=0;

         char a[20]={0};

         printf(" 请输入6位密码: ");

         while(n!=15){    //当所以类型都包含就是1111转换成十进制就是15

                  n=0;

                  x=0;

                  flag1=0;

                  flag2=0;

                  flag3=0;

                  flag4=0;

                  while(a[x-1]!=10||x==0){    //用来判断回车符合退出第一次输入密码

                          a[x]=getchar();

         //     printf("%d %d\n",x,a[x]); //测试数组每个下标以及下标表示的内容

                          x++;

                  }

                  if(x!=7) {

                          printf("密码位数不正确,请再次输入密码:");

                          x=0;

                          continue;

                  }

         //     printf("%s\n",a);     //测试输出的字符串

                  x=0;

         //     printf("%ld\n",strlen(a)); //用来测试字符串

                  for(int i=0 ;i<6;i++){

                          if(a[i]>65&&a[i]<122){

                                   flag1=8;

                          }else if(a[i]>48&&a[i]<57){

                                   flag2=4;

                          }else if(a[i]== ' '){

                                   flag3=2;

                          }else{

                                   flag4=1;

                          }

                          n=flag1+flag2+flag3+flag4;

                  //     printf("%d\n",n);   //测试密码每位相加是多少,用来判断各个的值

                  }

                  if(n==4||n==8||n==2||n==1) {  //以下判断有几个不同类型的字符用来选择输出内容

                          printf("输入的六位的密码 等级验证为:低\n");

                          printf("密码太简单,请再次输入密码:");

                  }

                  else if(n==12||n==3||n==5||n==6||n==9||n==10) {

                          printf("请输入六位数的密码 该密码等级为中\n");

                          printf("密码太简单,请再次输入密码:");

                  }

                  else if(n==7||n==11||n==13||n==14) {

                          printf("请输入六位数密码 该秘密等级为高\n");

                          printf("密码太简单,请再次输入密码:");

                  }

                  else printf("请输入六位数密码 该秘密等级为极高\n");

                 

         }

        

         return 0;

}
  1. 评分要求
    1. 代码中需要添加至少5行关键注释描述实现思路(3分)
    2. 根据字母、数字、特殊字符、空格个数验证密码等级(3分) 核心
    3. 如长度不符合要求给出提示信息(1分)
    4. 判断并统计输入的密码各组成部分个数(4分) 核心
    5. 利用循环结构、getchar()函数 输入验证密码(3分)
    6. 根据接收用户值定义变量类型,命名遵守规范(2分)

  • 题目三 :(30分)

  1. 题目描述:  神州租车公司为提升服务质量近期展开满意度调查活动,请输入近期租车6位顾客满意度进行相关运算

数据展示: 

代码展示:

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

int main(int argc, const char *argv[])

{

  int n,j=0,k=0;

  int a[20];

  float b;

  printf("题目:神州租车公司为提升服务质量近期展开满意度调查活动,请输入近期租车6位顾客满意度进行相关运算\n");

  for(int i=0 ; i<6 ;i++){

        printf("请输入第%d位顾客的满意度:",i+1);

        scanf("%d",&a[i]);

  }

  int min;

  for(int i=0 ; i<6 ; i++){

        min = i;

        for(int j=i+1;j<6 ; j++){

              if(a[j]<a[min]){

                    min = j;

              }

        }

        int t = a[i];

        a[i] = a[min];

        a[min] = t;

  }

  for(int i=0 ; i<6 ; i++){

        if(a[i]>=90) j++;

        else k++;

        b=(float)j/(j+k);

       

  //    printf("%d %d %d\n",j,k,a[i]);

  }

  printf("\t满意度为:%.2f%%\n",b*100);

  if(j<6) printf("服务质量有待改变\n");

  else printf("保持现有服务质量水平\n");

  return 0;

}

  1. 评分要求 :
    1. 判断如果百分比值低于90%则显示信息“服务质量有待改进”,否则提示“保持现
    2. 统计满意度个数,计算百分比并输出 (90分为合格) (4分) 核心
    3. 将 6位用户的满意度按由小到大的顺序排序输出(5分) 核心
    4. 循环输入6位顾客的满意度值(5分) 核心
    5. 正确定义一维数组 (3分)

有服务质量水平” (3分)

      1. 代码关键处添加不少于5行的规范注释(5分)

  • 题目四 :(25分)

  1. 题目描述:  输入一批数,输出是3倍数的数值,计算3倍数中的最大值、最小值

    

数据展示: 

代码展示:

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

int main(int argc, const char *argv[])

{

printf("题目:输入一批数,输出是3倍数的数值,计算3倍数中的最大值、最小值\n");

int a[100] , d , min,max , b[100],j=0;

printf("请输入数组长度:");

scanf("%d",&d);

printf("请依次输入数组元素值:");

for(int i=0 ; i<d ; i++){           //输入数组内容,长度为d

     scanf("%d",&a[i]);

}

printf(" 数组中3倍数的元素包含:");

for(int i=0 ; i<d ; i++){                //当可以被3整除,赋值到b数组

     if(a[i]%3==0) {

         b[j] = a[i];

         j++;

         printf("%d\t",a[i]);

     }

}

min = 0;
max = 0;

for(int i=0 ; i<j ; i++){           //在b数组中依次找小的值,下标赋值给min

     if(b[i]<b[min]){

         min = i;

     }
    ifb[i]>b[max]){

         max = i;   
} 

}

printf("\n元素中3的倍数最小的值是:%d\n",b[min]);      //利用min找到最小值
printf("\n元素中3的倍数最大的值是:%d\n",b[max]);      //利用max找到最大值

return 0;

}
  1. 评分要求
      1. 正确定义一维数组(2分)
      2. 提示并输入数组长度(2分)
      3. 循环输入数组元素的值(5分) 核心
      4. 循环判断并输出数组元素中是3倍数的元素(4分) 核心
      5. 循环查找数组元素中是3倍数的最小值,最大值并输出结果(4分) 核心
      6. 代码中添加不少于5行的关键注释描述程序实现思路(4分)

  • 题目五:(30分)

  1. 题目描述:输入操作数及运算符完成数值的加、减、乘、除运算

         数据展示:

代码展示:

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

int main(int argc, const char *argv[])

{

printf("题目:输入操作数及运算符完成数值的加、减、乘、除运算a\n");

printf("请输入第一个操作数:");

float n,m;

char i,j;

float a;

scanf("%f",&n);

printf("请输入运算符[加-P/p 减-S/s 乘-M/m 除-D/d]");

getchar();

scanf("%c",&i);

printf("请输入第二个操作数:");

scanf("%f",&m);

printf("运算结果为\n");

if(i=='P'||i=='p'){

     a=n+m;

     j='+';

}

if(i=='S'||i=='s'){

     a=n-m;

     j='-';

}

if(i=='M'||i=='m'){

     a=n*m;

     j='*';

}

if(i=='D'||i=='d'){

     if(0==m) {

         printf("分母不能为0/n");

         return 0;

     }

     else a=n+m;

     j='/';

}

printf("%.2f%c%.2f=%.2f\n",n,j,m,a);

return 0;

}
  1. 评分要求
  1. 定义接收操作数及运算符的变量,名称要符合规范(2分)
  2. 提示并输入第一个操作数(2分)
  3. 提示并输入运算符[加减乘除用字母代表](2分)
  4. 提示并输入第二个操作数(2分)
  5. 采用多分支选择结构switch对输入的操作数进行判断,输入大小写字母都可以调用
  6. 对应的运算(3分)  核心
  7. 正常计算两数相加并输出结果(2分)核心
  8. 正常计算两数相减并输出结果(2分)核心
  9. 正常计算两数相乘并输出结果(2分)核心
  10. 正常计算两数相除并输出结果(2分)核心
  11. 如分母为0则输出提示信息“分母不能为零!”(2分)
  12. 核心语句需添加不少于5行的规范注释描述实现思路(4分)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值