软件(C语言)测试题
c语言测试题目及答案

c语言测试题目及答案一、选择题(每题2分,共20分)1. 下列哪个关键字不是C语言的控制语句?A. ifB. switchC. whileD. loop答案:D2. C语言中,一个整型变量int占用的字节数是多少?A. 1B. 2C. 4D. 8答案:C3. 在C语言中,以下哪个运算符用于计算两个数的乘方?A. *B. /C. ^D. %答案:C4. 下列哪个函数用于计算一个数的绝对值?A. abs()B. max()C. min()D. pow()答案:A5. 在C语言中,以下哪个是正确的字符串字面量?A. "Hello World"B. 'Hello World'C. {"Hello World"}D. ["Hello World"]答案:A6. 在C语言中,以下哪个是正确的数组声明?A. int array[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};B. int array[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};C. int array = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};D. int array[10] = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9;答案:B7. 在C语言中,以下哪个是正确的函数声明?A. void myFunction(int x, int y);B. int myFunction();C. void myFunction(int x, int y) {}D. int myFunction(int x, int y);答案:A8. 在C语言中,以下哪个是正确的递归函数调用?A. func(5);B. func(func(5));C. func(func(5, 3));D. func(5, 3);答案:B9. 下列哪个是C语言中合法的变量名?A. 2variableB. variable-nameC. variable#nameD. variable_name答案:D10. 在C语言中,以下哪个是正确的结构体声明?A. struct Person { int age; char name[50]; };B. struct { int age; char name[50]; };C. Person { int age; char name[50]; };D. Person struct { int age; char name[50]; };答案:A二、填空题(每空2分,共20分)1. C语言中,用于定义一个函数的关键字是________。
C语言测试题及答案

C语言测试题及答案C语言测试题及答案古今来许多世家,无非积德。
天地间第一人品,还是读书。
以下是店铺为大家搜索整理的C语言测试题及答案,希望能给大家带来帮助!C语言测试题及答案篇11.(A )是构成C语言程序的基本单位。
A、函数B、过程C、子程序D、子例程2.C语言程序从 C 开始执行。
A、程序中第一条可执行语句B、程序中第一个函数C、程序中的main函数D、包含文件中的第一个函数3、以下说法中正确的是( C )。
A、C语言程序总是从第一个定义的函数开始执行B、在C语言程序中,要调用的函数必须在main( )函数中定义C、C语言程序总是从main( )函数开始执行D、C语言程序中的main( )函数必须放在程序的开始部分4.下列关于C语言的说法错误的是( B ) 。
A、 C程序的工作过程是编辑、编译、连接、运行B、 C语言不区分大小写。
C、 C程序的三种基本结构是顺序、选择、循环D、C程序从main函数开始执行5.下列正确的标识符是(C )。
A、-a1B、a[i]C、a2_iD、int t5~8题为相同类型题考点:标识符的命名规则只能由字母、数字、下划线构成数字不能作为标识符的开头关键字不能作为标识符选项A中的“-” ,选项B中“[”与“]”不满足(1);选项D中的int为关键字,不满足(3)6.下列C语言用户标识符中合法的是(B )。
A、3axB、xC、caseD、-e2 E)union选项A中的标识符以数字开头不满足(2);选项C,E均为为关键字,不满足(3);选项D中的“-”不满足(1);7.下列四组选项中,正确的C语言标识符是( C )。
A、 %xB、a+bC、a123D、123选项A中的“%” ,选项B中“+”不满足(1);选项D中的标识符以数字开头不满足(2)8、下列四组字符串中都可以用作C语言程序中的标识符的是( A)。
A、print _3d db8 aBcB、Iam one_half start$it 3paiC、str_1 Cpp pow whileD、Pxq My->book line# His.age选项B中的“”,”$” ,选项D中“>”,”#”,”.”,”-”不满足(1);选项C中的while为关键字,不满足(3)9.C语言中的简单数据类型包括(D )。
13真题与答案 202403青少年软件编程(C语言)等级考试试卷(三级)

202403青少年软件编程(C语言)等级考试试卷(三级)分数:100分题数:51. 我家的门牌号我家住在一条短胡同里,这条胡同的门牌号从 1 开始顺序编号。
若所有的门牌号之和减去我家门牌号的两倍,恰好等于 n,求我家的门牌号及总共有多少家。
数据保证有唯一解。
时间限制:1000内存限制:65536输入一个正整数 n。
n < 100000。
输出一行,包含两个正整数,分别是我家的门牌号及总共有多少家,中间用单个空格隔开。
样例输入100样例输出10 15参考代码:#include <stdio.h>int main() {int n;scanf("%d", &n);int x, y;for (x = 1; x < n; x++) {for (y = x + 1; y < n; y++) {int sum = y * (y + 1) / 2 - x * 2;if (sum == n) {printf("%d %d\n", x, y);return 0;}}}return 0;}2. 最接近的分数分母不超过 N 且小于 A/B 的最大最简分数是多少?时间限制:10000内存限制:65536输入三个正整数 N,A,B,相邻两个数之间用单个空格隔开。
1 <= A < B <N <= 1000。
输出两个正整数,分别是所求分数的分子和分母,中间用单个空格隔开。
样例输入100 7 13样例输出50 93参考代码:#include <stdio.h>int gcd(int a, int b) {return b == 0? a : gcd(b, a % b);}int main() {int N, A, B;scanf("%d %d %d", &N, &A, &B);int numerator = 0, denominator = 1;for (int i = 2; i <= N; i++) {for (int j = 1; j < i; j++) {if ((double)j / i < (double)A / B && ((double)numerator / denominator < (double)j / i || (double)A / B - (double)j / i < (double)A / B - (double)numerator / denominator)) {numerator = j;denominator = i;}}}printf("%d %d\n", numerator, denominator);return 0;}3.菲波那契数列菲波那契数列是指这样的数列: 数列的第一个和第二个数都为 1,接下来每个数都等于前面 2 个数之和。
c语言测试题

c语言测试题1.题目一编写一个C语言程序,要求从键盘输入两个整数,然后输出它们的和。
解答:```c#include <stdio.h>int main() {int num1, num2;printf("请输入两个整数: ");scanf("%d %d", &num1, &num2);int sum = num1 + num2;printf("两数之和为:%d\n", sum);return 0;}```2.题目二编写一个C语言程序,要求从键盘输入一个整数,然后判断它是否为素数。
解答:```c#include <stdio.h>int isPrime(int num) {if (num <= 1) {return 0;}for (int i = 2; i * i <= num; i++) { if (num % i == 0) {return 0;}}return 1;}int main() {int num;printf("请输入一个整数: ");scanf("%d", &num);if (isPrime(num)) {printf("%d是素数\n", num);} else {printf("%d不是素数\n", num);}return 0;}```3.题目三编写一个C语言程序,要求实现冒泡排序算法对一个数组进行排序。
解答:```c#include <stdio.h>void bubbleSort(int arr[], int size) {for (int i = 0; i < size - 1; i++) {for (int j = 0; j < size - i - 1; j++) {if (arr[j] > arr[j + 1]) {int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}}void printArray(int arr[], int size) {for (int i = 0; i < size; i++) {printf("%d ", arr[i]);}printf("\n");}int main() {int arr[] = {5, 2, 9, 1, 3};int size = sizeof(arr) / sizeof(arr[0]); printf("排序前的数组: ");printArray(arr, size);bubbleSort(arr, size);printf("排序后的数组: ");printArray(arr, size);return 0;}```以上是三个C语言测试题的解答,分别涉及输入输出、数学运算和数组排序等。
C语言测试题(附有详细解析)

C语言测试题(附有详细解析)一、选择题1. 以下哪个选项是C语言的关键字?A. ifB. sizeofC. structD. include解析:C语言中,关键字是指被C语言本身定义的具有特定意义的单词。
选项A的`if`是关键字,用于条件判断;选项C的`struct`是关键字,用于定义结构体;选项D的`include`实际上是预处理指令的一部分,不属于关键字。
选项B的`sizeof`是运算符,用于计算数据类型或变量的大小。
因此,正确答案是A、C。
2. 在C语言中,以下哪个选项表示整型变量?A. charB. intC. floatD. double解析:在C语言中,`int`类型用于存储整数。
选项A 的`char`用于存储字符;选项C的`float`和选项D的`double`用于存储浮点数。
因此,正确答案是B。
3. 以下哪个选项表示逻辑运算符?A. `++`B. `--`C. `&&`D. `%`解析:逻辑运算符用于连接多个条件表达式,包括与运算符`&&`、或运算符`||`和非运算符`!`。
选项C的`&&`是逻辑与运算符。
选项A的`++`和选项B的`--`是算术运算符,用于自增和自减;选项D的`%`是取模运算符。
因此,正确答案是C。
二、填空题1. 在C语言中,定义一个整型变量`a`并赋值为10的代码是______。
解析:定义整型变量`a`并赋值为10的代码如下:```cint a = 10;```2. 以下代码的输出结果是______。
```c#include <stdio.h>int main() {int x = 5;printf("%d\n", x++ + ++x);return 0;}```解析:在C语言中,`x++`是先使用x的值,然后x自增1;`++x`是先x自增1,然后使用x的值。
因此,`x++ + ++x`的执行过程如下:- `x++`,此时x的值为5,输出5;- `++x`,此时x的值为6,输出6;- 最终输出结果为11。
C语言试题

C测试题一、选择题(20题,共44分)1.常见的Linux发行版本有很多,下面不是Linux发行版本的是(C )。
[A] Red Hat Linux [B] Ubuntu Linux [C] X Window [D] SuSE Linux2.下面不是对Linux操作系统特点描述的是( B )。
[A] 良好的可移植性[B] 单用户[C] 多用户[D] 多任务3.下面( C )命令不能用来显示文件的内容。
[A] more [B] less [C] find [D] cat4.查看创建目录命令mkdir的帮助文档,可以使用命令( D )。
[A] mkdir –h [B] help mkdir [C] mkdir -p [D] man mkdir5.假设目录中存在若干文件file_num.txt(num表示文件编号,1~10),使用以下( C )通配符可以挑选出其中的编号为1、3、5的文件。
[A] file_*.txt [B] flie_?.txt [C] file_[135].txt [D] file_[^135].txt6.文件权限r-x-wxr--对应的八进制表示形式为( D )[A] 0536 [B] 0654 [C] 0656 [D] 05347.在C语言中,要求运算数必须是整型的运算符是( D )。
[A] / [B] ++ [C] != [D] %8.C语言中,逻辑“真”等价于( C )。
[A] 大于零的数[B] 大于零的整数[C] 非零的数[D] 非零的整数9.目前流行的两种软件包管理机制,Debian使用( D )软件包,Redhat使用( B )软件包。
[A] tgz [B] rpm [C] tar [D] deb10.下面函数的功能是( A )。
int fun (char*x){char*y=x;while(*y++);return(y-x-1);}[A] 求字符串的长度[B] 比较两个字符串的大小[C] 将字符串x复制到字符串y[D] 将字符串x连接到字符串y后面11.C语言程序的三种基本程序是( A )。
2024年6月青少年软件编程C语言等级考试试卷一级真题

2024年6月青少年软件编程C语言等级考试试卷一级真题分数:100 题数:51.奇迹(20分)。
经典电影《阿甘正传》有句台词,说:(奇迹每天都发生)。
本题就请你直接在屏幕上输出这句话。
输入:本题没有输入。
输出:在一行中输出。
样例输入:无。
样例输出:2.九牛一毛(20分)。
这是一道脑筋急转弯题:猪肉一斤15元,鸡肉一斤20元,那么一毛钱能买多少头牛?答案是:9——因为“九牛一毛”。
本题就请你按照这个逻辑,计算一下N块钱能买多少斤猪肉、多少斤鸡肉、多少头牛。
输入:输入在一行中给出一个不超过1000的正整数N,即以“元”为单位的货币量。
输出:在一行中顺序输出N块钱能买多少斤猪肉、多少斤鸡肉、多少头牛。
三个数字都取整数,其间以1个空格分隔,行首尾不得有多余空格。
样例输入:样例输出:3.题A除以B(20分)。
给定两个绝对值不超过100的整数A和B,要求你按照“A/B=商”的格式输出结果。
输入:输入在第一行给出两个整数A和B(-100≤A,B≤100),数字间以空格分隔。
输出:在一行中输出结果:如果分母是正数,则输出“A/B=商”;如果分母是负数,则要用括号把分母括起来输出;如果分母为零,则输出的商应为“Error”。
输出的商应保留小数点后2位。
4.进化论(20分)。
在“一年一度喜剧大赛”上有一部作品《进化论》,讲的是动物园两只猩猩进化的故事。
猩猩吕严说自己已经进化了9年了,因为“三年又三年”。
猩猩土豆指出“三年又三年是六年呐”。
本题给定两个数字,以及用这两个数字计算的结果,要求你根据结果判断,这是吕严算出来的,还是土豆算出来的。
输入:输入第一行给出一个正整数N,随后N行,每行给出三个正整数A、B和C。
其中C不超过10000,其他三个数字都不超过100。
输出:对每一行给出的三个数,如果C是A×B,就在一行中输出“Lv Yan”;如果是A+B,就在一行中输出“Tu Dou”;如果都不是,就在一行中输出“zhe du shi sha ya!”。
C语言测试题目

一、顺序结构1.从键盘输入一个大于0的实数,编程计算并输出以该数位半径的圆面积、圆周长及球体积(取圆周率为3.14)要求输出时有适当的文字说明测试数据:输入2.5输出圆周长15.700000 圆面积19.625000 球体积为65.4166672.从键盘输入两个大于0的实数,编程计算并输出以其为长和宽的矩形的周长和面积。
要求输出时有适当的文字说明测试数据:输入 1.2 3.5输出矩形周长9.400000 矩形面积4.2000003.从键盘输入一个华氏温度值,计算并输出其摄氏温度的值。
提示:摄氏温度c=(5/9)*(f-32) f为华氏温度测试数据:输入华氏温度值100输出摄氏温度值37.7777784.从键盘输入三个实数,计算并输出它们的和及积。
测试数据:输入 1.1 2.2 3.5输出和6.800000 积8.4700005、从键盘输入三个整数,计算并输出它们的和及平均值测试数据:输入 2 5 7输出和14.000000 平均值4.6666676、输入一个三位数,依次输出该数的符号和百位、十位、个位数字。
测试数据:输入-752输出和符号- 百位7 十位5 个位2二、选择结构1.从键盘输入一个字符,判断它如果是小写字母输出其对应大写字母;如果是大写字母输出其对应小写字母;如果是数字输出数字本身;如果是空格,输出“space”;如果不是上述情况,输出“other”。
2.从键盘输入三个实数a、b、c,输出其中最大的数。
测试数据:输入5.3 6.5 2.1输出最大数6.53.从键盘输入一个正整数,判断它能否被 3或者被 5整除, 如至少能被这两个数中的一个整除则输出“yes”,否则输出“no”。
测试数据:(1)输入12 输出yes(2)输入16 输出no4.从键盘输入1到7之间的某个正整数,输出表示一星期中相应的某一天的英文单词:Monday、 Tuesday等等,用switch语句做。
测试数据:输入7输出Sunday5.从键盘输入一百分制成绩(实数),将其转换为成绩等级并输出:大于等于90分为‘A’,80~89分为‘B’,70~79分为‘C’,60~69分为‘D’,60分以下为‘E’。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件测试题(C语言)1.请给出正确答案:(10’)#define y 3+2int a = 5, b = 7, c;c = (a+++b)*y;这段代码持行后a=( ) b=( ) c=( )2.下面的代码输出是什么,为什么?(10’)void func(void){unsigned int a = 10;int b = -20;(a+b > 10) ? puts("> 10") : puts("<= 10");}3.下面的函数有错误吗?如有该怎样修改?(10’)int square(volatile int *ptr){return *ptr * *ptr;}4.下面的代码使用了__interrupt关键字去定义了一个中断服务子程序(ISR),请评论一下这段代码:(20’)__interrupt double compute_area (double radius){double area = PI * radius * radius;printf("\nArea = %f", area);return area;}5.请编写下面函数:(20’)void* m emmove(void *dest, const void *src,size_t n)6.请编程实现:(30’)M个人围成一圈,按顺时针方向依次编号为1到M,从编号1开始顺时针方向报数,报到为N的人出局,出局人的下一位重新从1开始报数,请编程求出最后剩下的人的编号。
参考答案:1.a=( 6 ) b=( 7 ) c=( 38 )2.(1)答案是输出是">10"。
原因是当表达式中存在有符号类型和无符号类型时所有的操作数都自动转换为无符号类型。
因此-20变成了一个非常大的正整数,所以该表达式计算出的结果大于10。
(2)如果答对了,面试时可以接着问假如编译器认为int为16位数据,a+b结果为多少。
(答案65526)3.因为volatile可能被意想不到地改变,因此这段代码可能返不是你所期望的平方值!正确的代码如下:long square(volatile int *ptr){int a;a = *ptr;return a * a;}4.1)ISR 不能返回一个值。
2) ISR 不能传递参数。
3) 在许多的处理器/编译器中,浮点一般都是不可重入的。
有些处理器/编译器需要让额处的寄存器入栈,有些处理器/编译器就是不允许在ISR中做浮点运算。
此外,ISR应该是短而有效率的,在ISR中做浮点运算是不明智的。
4) printf()经常有重入和性能上的问题。
5.仅供参考:void* memmove(void *dest, const void *src,size_t n){if (n == 0) return 0;if (dest == NULL) return 0;if (src == NULL) return 0;char *psrc = (char*)src;char *pdest = (char*)dest;if((dest <= psrc) || (pdest >= psrc + n)) /*检查是否有重叠问题*/{for(int i=0; i < n; i++) /*正向拷贝*/{*pdest = *psrc;psrc++;pdest++;}}else /*反向拷贝*/{psrc += n;pdest += n;for(int i=0;i<n;i++){psrc--;pdest--;*pdest = *psrc;}}return dest;}6.该题主要考查编程序思路和风格,实现方法会有很多种。
不提供参考答案。
6。
main() { int a[5]={1,2,3,4,5}; int *ptr=(int *)(&a+1); printf("%d,%d",*(a+1),*(ptr-1)); } 答案:2。
5 *(a+1)就是a[1],*(ptr-1)就是a[4],执行结果是2,5 &a+1不是首地址+1,系统会认为加一个a数组的偏移,是偏移了一个数组的大小(本例是5个int)int *ptr=(int *)(&a+1); 则ptr实际是&(a[5]),也就是a+5 原因如下:&a是数组指针,其类型为int (*)[5]; 而指针加1要根据指针类型加上一定的值,不同类型的指针+1之后增加的大小不同a是长度为5的int数组指针,所以要加5*sizeof(int) 所以ptr实际是a[5] 但是prt与(&a+1)类型是不一样的(这点很重要) 所以prt-1只会减去sizeof(int*) a,&a的地址是一样的,但意思不一样,a是数组首地址,也就是a[0]的地址,&a是对象(数组)首地址,a+1是数组下一元素的地址,即a[1],&a+1是下一个对象的地址,即a[5].7。
请问以下代码有什么问题:int main() { char a; char *str=&a; strcpy(str,"hello"); printf(str); return 0; } 答案:没有为str分配内存空间,将会发生异常问题出在将一个字符串复制进一个字符变量指针所指地址。
虽然可以正确输出结果,但因为越界进行内在读写而导致程序崩溃。
8。
char* s="AAA"; printf("%s",s); s[0]='B'; printf("%s",s); 有什么错?答案:"AAA"是字符串常量。
s是指针,指向这个字符串常量,所以声明s的时候就有问题。
cosnt char* s="AAA"; 然后又因为是常量,所以对是s[0]的赋值操作是不合法的。
9。
写一个“标准”宏,这个宏输入两个参数并返回较小的一个。
答案:.#define Min(X, Y) ((X)>(Y)?(Y):(X)) //结尾没有‘;’10。
嵌入式系统中经常要用到无限循环,你怎么用C编写死循环。
答案:while(1){}或者for(;;)1.请给出以下代码的输出结果int main(){char a[100];int i;for(i=0;i<1000;i++){a[i] = -1 - i;}printf("%d",strlen(a));return 0;}答案:2552.选择正确的语句()A. int/*...*/i;B. char* s="abcdef //hijk";C. //Is it a \valid comment?D. in/*...*/ti;答案:A B C3,已知一个数组table,用一个宏定义,求出数据的元素个数答案:#define NTBL (sizeof(table)/sizeof(table[0]))1.-1,2,7,28,,126请问28和126中间那个数是什么?为什么?答案:第一题的答案应该是4^3-1=63 规律是n^3-1(当n为偶数0,2,4) n^3+1(当n 为奇数1,3,5)9。
enum string { x1, x2, x3=30, x4, x5, }x; 问x的取值范围?答案:取值在0。
1。
30。
31。
32中的一个10。
unsigned char *p1; unsigned long *p2; p1=(unsigned char *)0x801000; p2=(unsigned long *)0x810000; 请问p1+5= ; p2+5= ;答案:0x801005;0x810014。
不要忘记了这个是16进制的数字,p2要加20变为16进制就是143.以下是求一个数的平方的程序,请找出错误:#define SQUARE(a) ((a)*(a))int a=5;int b;b=SQUARE(a++);答案:这个没有问题,s(a++),就是((a++)×(a++))唯一要注意的就是计算后b=25, a=7了6、请写出下列代码的输出内容#include <stdio.h> main() { int a,b,c,d; a=10; b=a++; c=++a; d=10*a++; printf("b,c,d:%d,%d,%d",b,c,d); return 0; }答案:10,12,120[ a=10; b=a++;//a=11 b=10 c=++a;//a=12 c=12 d=10*a++;//a=13 d=120 ]4.32位系统中,设有以下说明和定义:typedef union {long i; int k[5]; char c;} DA TE; struct data { int cat; DA TE cow; double dog;} too; DA TE max; 则语句printf("%d",sizeof(too)+sizeof(max));的执行结果是:______答案:52DA TE是一个union, 变量公用空间. 里面最大的变量类型是int[5], 占用20个字节. 所以它的大小是20 data是一个struct, 每个变量分开占用空间. 依次为int4 + DA TE20 + double8 = 32. 所以结果是20 + 32 = 52.一、判断题(对的写T,错的写F并说明原因,每小题4分,共20分)1、有数组定义int a[2][2]={{1},{2,3}};则a[0][1]的值为0。
(正确)2、int (*ptr) (),则ptr是一维数组的名字。
(错误int (*ptr) ();定义一个指向函数的指针变量)3、指针在任何情况下都可进行>, <,>=, <=,==运算。
(错误)4、switch(c) 语句中c可以是int ,long,char ,float ,unsigned int 类型。
(错,不能用实形)1.32位系统中定义int **a[2][3],变量占有的内存空间为多少?答案:24 [2*3*4]。