C语言期中自测试卷

server/2024/10/9 17:27:45/

选择题

1、若有变量定义int a; double b; 要输入数据存放在a和b中,则下面正确的输入数据的语句为: 【 正确答案: C
A. scanf("%d%f",a,b);
B. scanf("%d%f",&a,&b);
C. scanf("%d%lf",&a,&b);
D. scanf("%d%lf",a,b);

2、为了避免嵌套的条件分支语句if~ else的二义性,特规定else总是与【 正确答案: A】组成配对关系。

A. 在其之前未配对的最近的if
B. 缩排位置相同的if
C. 在其前未配对的if
D. 同一行上的if

3、下面不能使字符数组获得正确字符串的操作是 【 正确答案: C】     
(A)  char s[10] = {"ABCDE"};
(B)  char s[10] = {'A', 'B', 'C', 'D', 'E'};
(C)  char s[10];  s = "ABCDE";
(D)  char s[10];  scanf("%s", s);

4、若有以下语句
int x = 3;
do {
    printf("%d\n", x -= 2);
} while (!(--x));
则上面程序段  【 正确答案: B     

(A)  输出的是1
(B)  输出的是1和-2
(C)  输出的是3和0
(D)  是死循环

5、字符串"\tabc5\0bc"的长度(不包括结束符)是  【 正确答案: D】         
(A)  9
(B)  7

(C)  6
(D)  5

6、以下正确的描述是  【 正确答案: B】    

(A)  continue语句的作用是结束整个循环的执行
(B)  break语句的作用是结束包含它的那层循环
(C)  在循环体内使用break语句或continue语句的作用相同
(D)  使用一次break语句可以从多层循环嵌套中退出

7、以下能正确表示x的取值范围在[15, 80]和[-1, -5]内的C语言表达式为 【 正确答案: A】。
A.(x>=-5)&&(x<=-1)||(x>=15)&&(x<=80)
B.(x<=-5)||(x>=-1) &&(x<=15)||(x>=80)
C.(-1>=x>=-5)||(15<=x<=80)
D.(x<=-1)&&(x>=-1)&&(x<=15)&&(x<=80)

8、若有说明:int a[][3] = {2,3,1,5,7,8,7,9,4}; 则a数组第一维的大小是 【 正确答案: B】。
A.2               B.3              C.4             D.不确定值

9、以下程序的运行结果正确的是 【 正确答案: C】。

#include <stdio.h>

int  main( )

unsigned char a = 8, c;

c = a>>3;

printf("%d\n",c);

       return 0;

}

A.32         B.16           C.1              D.0

10、引用数组元素时,数组下标的数据类型允许是 【 正确答案: C
A.整型常量                                     B.整型表达式

C.整型常量、整型表达式均可          D.任何类型

填空题

1、以下程序段中循环执行次数为                 【 正确答案: 死循环 或 无限循环】。(X次或死循环)

int k = 1;

while(!k==0)

{

    k = k+1;

    printf("%d\n",k);

}

2、下面程序段的运行结果是                  【 正确答案: 600】        
char ch[ ] = "600";
int a, s = 0;
for (a = 0; ch[a] >= '0' && ch[a] <= '9'; a++)
    s = 10 * s + ch[a] - '0';
printf("%d", s);

3、以下程序的运行结果是                  【 正确答案: 4578

#include<stdio.h>
int main()
{
    int i;
    for (i=4;i<10;i++)
    {
        if (i%3==0)
            continue;
        printf("%d",i);
    }
}

4、C语言中,若有定义:int a[10]; 则该数组能访问的下标下限为            【 正确答案: 0】,上限为             【 正确答案: 9】。

5、已知:int a=5,b=6,w=1,x=2,y=3,z=4;执行语句“(a=w>x)&&(b=y>z);”后b 的值为            【 正确答案: 6

编程题

1、同构数

【问题描述】

具有下面性质的数a称为"同构数":设b是a的平方,a与b的低若干位相同。例如,5是25的同构数,25是625的同构数.编程序满足如下要求:
输入两个整数a,b (0<=a, b<=99),找出a、b之间全部的同构数。
【输入形式】

控制台输入0-99之间的两个整数a和b.
【输出形式】

控制台上按照由小到大的顺序输出所有同构数.每一个整数占一行.
【样例输入】

0 30

【样例输出】

0
1
5
6
25

【样例说明】

在0-30之间的同构数有0, 1, 5, 6, 25.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>
int main()
{int a,b,x,y,i;scanf("%d %d",&a,&b);for(i=a;i<=b;i++){x=i;y=x*x;if(i<10&&y%10==x){printf("%d\n",i);}if(i>=10&&y%100==x){printf("%d\n",i);}}return 0;
}

2、二维数组处理

【问题描述】有一个4*4的整型二维数组组成的矩阵,元素值从键盘输入。现要求:

(1)找出其中最大数和最小数,并打印其所在的行号和列号

(2)求对角线元素之和

(3)求此矩阵的转置矩阵

(4)求此矩阵最外围所有元素之和

【输入形式】

按行输入4*4矩阵各元素的值
【输出形式】

最大数及所在的行号和列号

最小数及所在的行号和列号

主对角线元素之和,副对角线元素之和

转置矩阵(按行输出)(%5d形式)

矩阵最外围所有元素之和
【样例输入】

34 53 135 46

678 54 567 5

123 4 67 54

123 56 7 8

【样例输出】

max:678 row:2 col:1

min:4 row:3 col:2

163,740

transport matrix:

   34  678  123  123

   53   54    4   56

  135  567   67    7

   46    5   54    8

sum=1322

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>
int main()
{int a[4][4];int i,j,max,min,sum=0,sum1=0,sum2=0,a1=0,a2=0,a3=0,a4=0;for(i=0;i<4;i++){for(j=0;j<4;j++){scanf("%d",&a[i][j]);}}max=a[0][0];min=a[0][0];for(i=0;i<4;i++){for(j=0;j<4;j++){if(max<a[i][j]){max=a[i][j];a1=i;a2=j;}if(min>a[i][j]){min=a[i][j];a3=i;a4=j;}if(i==j){sum1+=a[i][j];}if(i+j==3){sum2+=a[i][j];}if(i==0||i==3){sum+=a[i][j];}}}sum=sum+a[1][0]+a[2][0]+a[1][3]+a[2][3];printf("max:%d row:%d col:%d\n\n",max,a1+1,a2+1);printf("min:%d row:%d col:%d\n\n",min,a3+1,a4+1);printf("%d,%d\n\n",sum1,sum2);printf("transport matrix:\n\n");for(i=0;i<4;i++){for(j=0;j<4;j++){printf("%5d",a[j][i]);}printf("\n\n");}printf("sum=%d\n",sum);return 0;
}

3、分数化简

【问题描述】

编写程序,从控制台读入一个分数的分子和分母(分数无符号,并且分子小于分母,其大小不会超过int数据类型的表示范围),输出化简后分子和分母不含公约数的分数。

【输入形式】

从控制台输入两个正整数分别表示分子和分母,两整数之间以一个空格分隔。

【输出形式】

在标准输出上输出化简后的分子和分母,以一个空格分隔。

【输入样例1】

26664 479952

【输出样例1】

1 18

【样例1说明】

输入的分子为26664,分母为479952,分母可以被分子整除,输出化简后的分子为1,分母为18。

【输入样例2】

9 24

【输出样例2】

3 8

【样例2说明】

输入的分子为9,分母为24,化简后分子和分母分别为3和8,不含公约数。

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>
int main()
{int a,b,i;scanf("%d %d",&a,&b);for(i=b;i>=1;i--){if(a%i==0&&b%i==0){break;}}printf("%d %d\n",a/i,b/i);return 0;
}

4、sinx计算公式

【问题描述】

已知sinx的近似计算公式如下:

 sin x = x - x3/3! + x5/5! - x7/7! + ... + (-1)n-1x2n-1/(2n-1)!

 其中x为弧度,n为正整数。编写程序根据用户输入的x和n的值,利用上述近似计算公式计算sinx的近似值,要求输出结果小数点后保留7位

【输入形式】

从控制台输入小数x(0<=x<=20)和整数n(1<=n<=5000),两数中间用空格分隔。

【输出形式】

控制台输出公式结果:小数点后保留7位。

【样例输入1】

0.5236 4

【样例输出1】

0.5000011

【样例输入2】

0.5236 50

【样例输出2】

0.5000011

【样例说明】

输入x为0.5236,n为4,求得sinx近似计算公式的值为0.5000011,小数点后保留7位;同样,输入x为0.5236,n为50,求得sinx近似计算公式的值为0.5000011,小数点后保留7位。

注意:为保证数据的准确性和一致性,请使用double数据类型保存计算结果

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>
int main()
{double x,s=0,a=1;int n,i,j,z=0;scanf("%lf %d",&x,&n);for(i=1;i<=2*n-1;i+=2){a=1;for(j=1;j<=i;j++){a*=j;if(j==i){s+=pow(-1.0,z)*pow(x,i)/a;z++;}}}printf("%.7f\n",s);return 0;
}

 5、工资

【问题描述】
假设税前工资和税率如下(s代表税前工资,t代表税率):
s<1000    t=0%
1000<=s<2000      t=10%
2000<=s<3000  t=15%
3000<=s<4000     t=20%
4000<=s             t=25%
编写一程序,要求用户输入税前工资额,然后用switch语句计算税后工资额。
【输入形式】
从键盘输入税前工资s,可以是浮点数。
【输出形式】
输出税后工资额,保留小数后两位。
【输入样例】

3000

【输出样例】

2400.00

【样例说明】
税前工资为3000,所以税率为20%,扣除税后工资为2400.00

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>
int main()
{double a,b,s;scanf("%lf",&s);b=s;s=s/1000;switch((int)s){case 0:a=b;break;case 1:a=b*0.9;break;case 2:a=b*0.85;break;case 3:a=b*0.8;break;default:a=b*0.75;break;}printf("%.2f\n",a);return 0;
}

程序片段编程题

1、程序填空:输出m到n之间的所有素数

【问题描述】下面的程序输出m到n之间的所有素数。 
【输入形式】两个正整数m n
【输出形式】m~n之间的素数
【样例输入】

20 40
【样例输出】

  23   29   31   37

#include <stdio.h>
int main()
{int i,j;int m, n;scanf("%d%d", &m, &n);for( i=m; i<=n; i++){for( j=2; j<=i-1; j++)if(i%j==0) break;if(j==i)printf("%4d ",i);}return 0;
}

2、十进制转换为十六进制

【问题描述】下面的函数itoh(n,s)完成将无符号十进制整数转换成十六进制表示,并存入字符串数组s中。程序中用到的函数reverse(char s[])是一个将字符串置逆的函数。

【输入形式】一个无符号整数
【输出形式】对应的十六进制数
【样例输入】255
【样例输出】FF

#include <stdio.h>
#include <string.h>
void reverse(char s[]);//函数声明 
void itoh(unsigned n,char s[]) {int h,i=0;do {h=n%16;		s[i]=(h<=9)?h+'0':h+'A'-10;i++;} while((n/=16)!=0);s[i]='\0';	reverse(s);
}
void reverse(char s[]) {int temp,i,j;for(i=0,j=strlen(s)-1; i<j; i++,j--) {temp=s[i];s[i]=s[j];s[j]=temp;}
}
int main()
{char s[50];unsigned n;scanf("%d",&n);itoh(n,s);  //调用函数实现转换 printf("%s\n",s);return 0;} 

3、学生成绩统计

【问题描述】从键盘输入若干个学生成绩,统计并输出最高分、最低分和平均分,输入-1时结束。
【输入形式】若干个学生成绩
【输出形式】最高分、最低分和平均分
【样例输入】

78 90 87 82 78 76 79 -1

【样例输出】

max:90.00,min:76.00,avg:81.43

#include <stdio.h>
int main()
{float score, max,min,sum;int cnt = 0;sum=0;scanf("%f", &score);max = min = score;while(score!=-1){sum += score;if (max<score)max = score;if (min>score)min = score;cnt++;scanf("%f", &score);		}printf("max:%.2f,min:%.2f,avg:%.2f\n",max, min, sum/cnt);return 0;
}


http://www.ppmy.cn/server/128756.html

相关文章

【设计模式-模板】

定义 模板方法模式是一种行为设计模式&#xff0c;它在一个方法中定义了一个算法的骨架&#xff0c;并将一些步骤延迟到子类中实现。通过这种方式&#xff0c;模板方法允许子类在不改变算法结构的情况下重新定义算法中的某些特定步骤。 UML图 组成角色 AbstractClass&#x…

Object.values() 、 Object.keys()

拿到当前对象里面的value值 // 假设你有一个对象 const myObject {name: Kimi,age: 30,country: Moon };// 获取对象的所有值 const values Object.values(myObject);// 输出值数组 console.log(values); // ["Kimi", 30, "Moon"] 如果你需要在 Vue 组…

ROS基础入门——实操教程

ROS基础入门——实操教程 前言 本教程实操为主&#xff0c;少说书。可供参考的文档中详细的记录了ROS的实操和理论&#xff0c;只是过于详细繁杂了&#xff0c;看得脑壳疼&#xff0c;于是做了这个笔记。 Ruby Rose&#xff0c;放在这里相当合理 本文初编辑于2024年10月4日 C…

社群团购中的用户黏性价值:以开源小程序多商户AI智能名片商城源码为例

摘要&#xff1a;本文探讨社群团购中的用户黏性价值&#xff0c;分析其与传统团购网站的区别&#xff0c;并阐述开源小程序多商户AI智能名片商城源码在增强社群团购用户黏性方面可能发挥的作用。 一、引言 在当今的商业环境中&#xff0c;社群团购逐渐成为一种重要的营销模式。…

数据结构之栈和队列

目录 1、栈的简介2、栈的术语3、栈的基本操作1.顺序栈的实现2.链栈的实现 4、栈的应用1.栈与递归2.括号匹配问题3.表达式计算 5、队列1.顺序队列2.链式队列 1、栈的简介 栈其实是一种特殊的线性表&#xff0c;就是只允许在一端进行插入或删除的操作&#xff1b;这就导致它有一…

基于STM32的智能水族箱控制系统设计

引言 本项目基于STM32微控制器设计一个智能水族箱控制系统。该系统能够通过传感器监测水温、照明和水位&#xff0c;并自动控制加热器、LED灯和水泵&#xff0c;确保水族箱内的环境适宜鱼类生长。该项目展示了STM32在环境监测、设备控制和智能反馈系统中的应用。 环境准备 1…

Activity

文章目录 1.启停活动页面1.Activity启动和结束2.Activity生命周期3. Activity启动模式 2.在活动之间传递信息1.显示Intent和隐式Intent显示Intent隐式Intent 2.向下一个Activity发送数据3.向上一个Activity返回数据 3.为活动补充附加信息1.利用资源文件配置字符串2.利用元数据传…

JSON详解

目录 一. JSON简述 二. XML和JSON的区别 三. JSON的语法格式 3.1 JSON语法格式 3.2 单个JSON对象 3.3 数组存储JSON数据 四. JSON数据与Java的相互转化 4.1 hutool工具包 4.2 fastjson 工具包 一. JSON简述 JSON (JavaScript Object Notation,JS对象简谱)是一种轻量级…