厦门理工学院c语言复习题,答案仅供参考(强烈推荐)
- 格式:docx
- 大小:33.97 KB
- 文档页数:6
大一上c语言考试题及答案解析一、选择题(每题2分,共20分)1. 下列关于C语言的描述中,错误的是:A. C语言是一种高级语言B. C语言可以直接被计算机执行C. C语言具有结构化的特点D. C语言支持多种数据类型答案:B解析:C语言是一种高级语言,它需要编译成机器语言后才能被计算机执行。
2. C语言中,用于定义一个整型变量的关键字是:A. intB. floatC. charD. double答案:A解析:在C语言中,整型变量使用关键字int来定义。
3. 下列选项中,哪一个是C语言中的合法标识符?A. 2variableB. _variableC. variable2D. variable$答案:C解析:在C语言中,标识符可以包含字母、数字和下划线,但不能以数字开头。
4. C语言中,用于实现循环结构的关键字是:A. forB. ifC. switchD. while答案:A解析:for关键字用于定义循环结构。
5. 下列关于C语言数组的描述中,正确的是:A. 数组可以存储不同类型的数据B. 数组的大小在定义后可以改变C. 数组的索引从0开始D. 数组可以赋给另一个数组答案:C解析:C语言中数组的索引从0开始。
6. C语言中,用于定义一个浮点型变量的关键字是:A. intB. floatC. charD. double答案:B解析:在C语言中,浮点型变量使用关键字float来定义。
7. 下列选项中,哪一个是C语言中的合法字符串常量?A. "Hello"B. 'Hello'C. "HelloD. 'Hello'答案:A解析:在C语言中,字符串常量使用双引号括起来。
8. C语言中,用于定义一个字符型变量的关键字是:A. intB. floatC. charD. double答案:C解析:在C语言中,字符型变量使用关键字char来定义。
9. C语言中,用于定义一个双精度浮点型变量的关键字是:A. intB. floatC. charD. double答案:D解析:在C语言中,双精度浮点型变量使用关键字double来定义。
C程序设计期末复习思考题一、选择题:1 一个C语言程序是由______B___。
A)一个主程序和若干个程序组成B)函数组成C)若干过程组成D)若干子程序组成2已知各变量的类型说明如下:int i=8,k,a,b;unsigned long w=5;double x=1.42,y=5.2;则以下符合C语言语法的表达式是______D____。
A)a+=a-=(b=4)*(a=3) B) a=a*3=2C) x%(-3) D) y=float(i)3以下不正确的语句为___B_______。
A) if (x > y); B) if (x = = y) && (x != 0) x + = y;C) if (x < y) { x ++; y++;} D) if (x != y) scanf(“ %d ”,&x);else scanf(“ %d ”,&y);)4C语言中while 和do —whiloe循环的主要区别是_____A______。
A)do —while 的循环体至少无条件执行一次B)while 的循环控制条件比do—while 的循环控制条件严格C)do —while 允许从外部转到循环体内D)do —while 的循环体不能是复合语句5 下面程序应该是_____D___ (程序行左边的数字表示行号)1main( ) 5 for( i=0;i<3;i++) scanf( “%d”,&a[i]);2{ 6 for(i=1;i<4;i++) a[0] = a[0] + a[i];3int a[3]={0}; 7 printf(“%d\n”, a[0]);4int i; 8 }A)没有错误B)第3 行有错误C)第5 行有错误D)第6 行有错误6 以下程序有语法性错误,有关错误原因的正确说法是____________。
main( ){ int G=5,k;void prt_char( );……k=ptr_char(G);……}A)语句void ptr_char( ); 有错,它是函数调用语句,不能用void 说明B)变量名不能使用大写字母C)函数说明和函数调用语句之间有矛盾D)函数名不能使用下划线7若有以下定义,则对a数组元素正确引用的是___A_________。
c语言期末考试题库大题及详解答案C语言期末考试题库大题及详解答案一、简答题1. 请简述C语言的基本数据类型及其特点。
答案:C语言的基本数据类型包括整型(int)、浮点型(float和double)、字符型(char)和枚举型(enum)。
整型用于存储整数,浮点型用于存储小数,字符型用于存储单个字符,枚举型用于定义一组命名的常量。
每种数据类型都有其特定的取值范围和占用内存大小。
2. 请解释C语言中的数组和指针的区别。
答案:数组是一种数据结构,用于存储固定数量的相同类型元素,可以通过下标访问元素。
指针是一个变量,它存储另一个变量的内存地址。
数组名可以作为指向数组第一个元素的指针使用,但数组本身是一个固定大小的内存块,而指针可以被赋值为不同的地址,具有动态性。
二、编程题1. 编写一个C语言程序,实现输入三个整数,找出其中的最大值并输出。
答案:```c#include <stdio.h>int main() {int num1, num2, num3, max;printf("请输入三个整数:");scanf("%d %d %d", &num1, &num2, &num3);max = (num1 > num2) ? ((num1 > num3) ? num1 : num3) : ((num2 > num3) ? num2 : num3);printf("最大值是:%d\n", max);return 0;}```2. 编写一个C语言程序,实现字符串的反转。
答案:```c#include <stdio.h>#include <string.h>int main() {char str[100];printf("请输入一个字符串:");fgets(str, sizeof(str), stdin); // 使用fgets以包含空格int len = strlen(str) - 1; // 减去换行符长度for (int i = len; i >= 0; --i) {printf("%c", str[i]);}printf("\n");return 0;}```三、综合题1. 请编写一个C语言程序,实现一个简单的计算器,能够进行加、减、乘、除四种基本运算。
期末复习---C语言尹凤1、#include<stdio.h>Int main(){Int i,j;For(i=1;i<=5;i++){For(j=1;j<=i;j++)Printf("*");For(j=1;i<=(5-i);j++)Printf(" ");Printf("\n");}Return 0;}2、#include<stdio.h>int main(){int i,j;for(i=1;i<=5;i++){for(j=1;j<=2;j++)printf("*");printf("\n");}return 0;}3、#include<stdio.h>int main(){int i,j;for(i=1;i<=5;i++){for(j=1;j<=i;j++)printf(" ");for(j=1;j<=(2*i-1);j++)printf("*");printf("\n");}return 0;}4、#include<stdio.h>int main(){int i,j;for(i=1;i<=5;i++){for(j=1;j<=(5-i);j++)printf(" ");for(j=1;j<=(2*i-1);j++)printf("*");printf("\n");}return 0;}5、#include<stdio.h>void main(){struct PEOPLE{char name[20];int num;float salary;}people[5];int i;for(i=1;i<=5;i++){printf("Input all information about the NO.%d people:\n",i);gets(people[i].name);scanf("%d,%f",&people[i].num,&people[i].salary);getchar();}printf("\n%-20s%-10s%-10s%\n","Name","Nu m","Salary");for(i=1;i<=5;i++)printf("%-20s%-10d%-6.2f\n",people[i].name, people[i].num,people[i].salary);if(people[i].num>=30)people[i].salary=people[i].salary+100;printf("%-20s%-10d%-6.2f\n",people[i].name, people[i].num,people[i].salary);}6、#include<stdio.h>#define N 8int main(){float score[N]={3,4,5,7,8,6,4,5},max,min,sum=0; int i;for(i=0;i<N;i++){if(score[i]<max) max=score[i];if(score[i]>min) min=score[i];sum=sum+score[i];}sum=(sum-max-min)/(N-2); printf("%.2f",sum);return 0;}/*不知道错在哪里?*/7、#include<stdio.h>void main(){char grade;grade='B';switch(grade){case 'A':printf("excellent"); case 'B':printf("pass\n");case 'C':printf("failure");}8、#include<stdio.h>int main(){float score[11],sum=0;/**用一个数组score来储存11位评委的得分**/int i,max,min;printf("\nEnter 11 score:");for(i=0;i<11;i++)scanf("%f",&score[i]);max=min=score[0];/******把第一个得分作为最高分与最低分*****/for(i=0;i<11;i++){if(score[i]>max) max=score[i];else if(score[i]<min) min=score[i];/*需要将最高份和最低分表示出来*/sum=sum+score[i];}/*计算总分用循环结构来计算*/ sum=(sum-max-min)/(11-2);printf("\nFinal score is %6.2f",sum); return 0;}}。
c语言考试题及答案详解C语言考试题及答案详解一、选择题1. 下列哪个是C语言的关键字?A. voidB. mainC. returnD. print答案:A2. C语言中,哪个运算符用于计算两个数的乘积?A. +B. -C. *D. /答案:C二、填空题1. 在C语言中,用于定义一个整型变量的关键字是 ____ 。
答案:int2. 以下代码段的输出结果是____。
```cint a = 5;printf("%d", a++);```答案:5三、简答题1. 请简述C语言中数组的定义方式。
答案:在C语言中,数组的定义方式是通过指定数据类型、数组名和数组的大小。
例如,定义一个整型数组,大小为10,可以写作:int array[10];四、编程题1. 编写一个C程序,实现求两个整数的和,并输出结果。
```c#include <stdio.h>int main() {int num1, num2, sum;printf("Enter two numbers: ");scanf("%d %d", &num1, &num2);sum = num1 + num2;printf("Sum is: %d\n", sum);return 0;}```五、论述题1. 论述C语言中指针的概念及其重要性。
答案:指针是C语言中的一个重要概念,它存储了变量的内存地址。
指针的重要性在于它允许程序员直接操作内存,这使得动态内存分配、数组操作、函数参数传递等成为可能。
指针的使用提高了程序的灵活性和效率,但也增加了编程的复杂性。
六、案例分析题1. 给定以下C语言代码段,分析其功能并指出可能存在的问题。
```cint func(int *p) {return *p * 10;}int main() {int a = 5;printf("%d\n", func(&a));return 0;}```答案:该代码段定义了一个函数`func`,它接受一个整型指针作为参数,并返回该指针指向的值乘以10的结果。
c语言数据类型考试题目及答案C语言数据类型考试题目及答案1. 以下哪个选项不是C语言中的基本数据类型?A. intB. floatC. charD. string答案:D2. 在C语言中,一个int类型变量通常占用多少字节?A. 1B. 2C. 4D. 8答案:C3. 假设变量a的类型为int,变量b的类型为float,执行以下代码后,变量a的值是多少?```cint a;float b = 10.5;a = (int)b;```A. 10B. 11C. 10.5D. 0答案:A4. 以下哪个关键字用于定义一个字符常量?A. charB. stringC. intD. float答案:A5. 在C语言中,以下哪个选项不是合法的变量名?A. _myVarB. my_varC. 2myVarD. myVar2答案:C6. 以下哪个数据类型用于存储单个字符?A. intB. floatC. charD. double答案:C7. 如果一个变量的类型为double,那么它的值可以被存储为:A. 整数B. 小数C. 整数和小数D. 以上都不是答案:C8. 在C语言中,以下哪个运算符用于比较两个值是否相等?B. !=C. <=D. >=答案:A9. 以下哪个选项是C语言中的逻辑运算符?A. &&(逻辑与)B. ||(逻辑或)C. &(按位与)D. 以上都是答案:D10. 在C语言中,以下哪个关键字用于定义一个静态变量?A. staticB. constC. externD. volatile答案:A11. 以下哪个选项是C语言中的循环结构?A. ifB. switchC. whileD. for答案:C12. 在C语言中,以下哪个关键字用于定义一个函数?A. functionB. defC. void答案:C13. 以下哪个选项不是C语言中的文件操作函数?A. fopenB. fcloseC. printfD. fread答案:C14. 在C语言中,以下哪个关键字用于定义一个指针?A. pointerB. ptrC. *D. ref答案:C15. 以下哪个选项是C语言中的数组?A. 一组具有相同类型的变量B. 一组具有不同类型的变量C. 一个变量D. 一个函数答案:A。
2022年厦门理工学院公共课《C语言》科目期末试卷B(有答案)一、填空题1、假设变量a和b均为整型,以下语句可以不借助任何变量把a、b中的值进行交换。
请填空。
a+=_______;b=a-_______;a-=_______;2、在C语言中,输入操作是由库函数________完成的,输出操作是由库函数________完成的。
3、C语言源程序文件的后缀是;经过编译后,生成文件的后缀是;经过连接后,生成文件的后缀是4、在C语言中的实型变量分为两种类型,它们是_______和_______。
5、在C语言中,用关键字_______定义单精度实型变量,用关键字_______定义双精度实型变量,用关键字_______定义字符型变量。
6、请读程序段:int a=1,b=2;if(a&b)printf("***\n");else printf("$$ $\n");以上程序段的输出结果是_______。
7、鸡兔共有30只,脚共有90只,下面程序段是计算鸡兔各有多少只。
请填空。
for(x=0;x<=30;x++){y=30一x;if(_______)printf("%d,%d\n",x,y);}8、下面程序段的运行结果是_______。
int i=5;char c[6]="abcd";do{c[i]=c[i-1];}while(--i>0);puts(c);9、设有宏定义如下:#define MIN(x,y)(x)>(y)?(x):(y)#define T(x,y,r)x*r*y/4则执行以下语句后,s1的值为_______,s2的值为_______。
int a=1,b=3,c=5,s1,s2;s1=MIN(a=b,b-a);s2=T(a++,a*++b,a+b+c);10、若想输出b数组的10个元素,则下面存在错误的程序行是_______。
c语言考试题及答案一、选择题(每题2分,共20分)1. 下列关于C语言的描述中,错误的是:A. C语言是一种高级语言B. C语言可以直接被计算机执行C. C语言具有结构化的特点D. C语言具有跨平台的特性答案:B2. C语言中,用于定义一个整型变量的关键字是:A. intB. floatC. doubleD. char答案:A3. 在C语言中,以下哪个运算符用于取模运算?A. %B. /C. *D. -答案:A4. 下列关于数组的描述中,正确的是:A. 数组必须在程序开始时初始化B. 数组的元素可以是不同的数据类型C. 数组的索引从1开始D. 数组的声明必须指定数组的大小答案:D5. 在C语言中,以下哪个关键字用于定义一个函数?A. intB. voidC. functionD. define答案:B6. C语言中,用于表示逻辑“与”操作的运算符是:A. &&B. ||C. !D. &答案:A7. 下列哪个选项是C语言中合法的注释?A. // 这是一个注释B. /* 这是一个注释 */C. // 这是一个注释/* 这是一个注释 */D. /* 这是一个注释 */答案:A8. C语言中,用于定义一个空指针的值是:A. NULLB. 0C. falseD. none答案:A9. 下列关于指针的描述中,错误的是:A. 指针可以存储变量的地址B. 指针可以存储函数的地址C. 指针可以存储数组的索引D. 指针可以存储指针的地址答案:C10. 在C语言中,用于定义一个字符型指针的声明是:A. char *ptr;B. int *ptr;C. float *ptr;D. double *ptr;答案:A二、填空题(每题2分,共20分)1. 在C语言中,定义一个整型数组的语法是:______ int array[10];。
答案:int2. 如果一个变量的值是10,那么表达式sizeof(&var)的结果是:______。
C程序设计期末复习思考题一、选择题:1 一个C语言程序是由_________。
A)一个主程序和若干个程序组成B)函数组成C)若干过程组成D)若干子程序组成2已知各变量的类型说明如下:int i=8,k,a,b;unsigned long w=5;double x=1.42,y=5.2;则以下符合C语言语法的表达式是__________。
A)a+=a-=(b=4)*(a=3) B) a=a*3=2C) x%(-3) D) y=float(i)3以下不正确的语句为___________。
A) if (x > y); B) if (x = = y) && (x != 0) x + = y;C) if (x < y) { x ++; y++;} D) if (x != y) scanf(“ %d ”,&x); else scanf(“ %d ”,&y);)4C语言中while 和do —whiloe循环的主要区别是___________。
A)do —while 的循环体至少无条件执行一次B)while 的循环控制条件比do—while 的循环控制条件严格C)do —while 允许从外部转到循环体内D)do —while 的循环体不能是复合语句5 下面程序应该是________ (程序行左边的数字表示行号)1main( ) 5 for( i=0;i<3;i++) scanf( “%d”,&a[i]);2{ 6 for(i=1;i<4;i++) a[0] = a[0] + a[i];3int a[3]={0}; 7 printf(“%d\n”, a[0]);4int i; 8 }A)没有错误B)第3 行有错误C)第5 行有错误D)第6 行有错误6 以下程序有语法性错误,有关错误原因的正确说法是____________。
main( ){ int G=5,k;void prt_char( );……k=ptr_char(G);……}A)语句void ptr_char( ); 有错,它是函数调用语句,不能用void 说明B)变量名不能使用大写字母C)函数说明和函数调用语句之间有矛盾D)函数名不能使用下划线7 若有以下定义,则对a数组元素正确引用的是____________。
int a[5], *p=a;A) *&a[5] B) a+2 C) *(p+5) D) *(p+2)8在执行下面程序时,如果从键盘上输入:ABCdef〈回车>,则输出为______________。
#include <Stdio.h>main(){ char ch;while ((ch=getchar())!='\n'){ if (ch>='A' && ch<='Z') ch=ch+32;else if (ch>='a' && ch<='z') ch=ch-32;printf("%c",ch);}printf("\n");}A)ABCdef B)abcDEF C)abc D)DEF 9 以下叙述正确的是____________。
A)在C程序中,main函数必须位于程序的最前面B)C程序的每行中只能写一条语句C)C语言本身没有输入输出语句D)C程序的基本组成单位是语句10 已知程序中有声明“int a=3,b=4,c;”,则执行语句“c=1/2*(a+b);”后,c的值为____________。
A)4 B)3.5 C)7 D)011下列说法正确的是____________。
A、定义函数时,形参的说明可以放在函数体内B、return后面不能为表达式C、如果函数值的类型和返回值类型不一致,则以函数值为准D、如果形参和实参的类型不一致,则以实参类型为准12运行下面程序段时,编译提示第2行出错,其原因是____________。
void main( ){ char c1 = 'a' , c2 = '123' ;printf(" %c , %d\n " , c1 , c2 ) ;}A、字符常量要写成"a" 。
B、'123'只能赋值给字符串。
C、字符常量'123'长度太大。
D、字符变量c1,c2,不能在同一行中定义。
二、分析题(分析下列程序的运行结果并写在程序右边的空白处)1、main ( ){ int x=1,y=0,a=0,b=0;switch ( x ){ case 1 :switch ( y ){ case 0 : a++ ; break ;case 1 : b++ ; break ;}case 2 :a++ ; b++ ; break;}printf(“ a=%d, b=%d” ,a ,b);} ____________________________2、main ( ){ int i,j,k;for ( i=0; i<=3; i++ ){ for ( j=0; j<=2-i; j++ )printf (“ ”);for ( k=0; k<=2*i; k++ )printf (“*”);printf (“\n”);}for ( i=3; i<=0; i--){ for ( j=0; j<=2-i; j++ )printf (“ ”);for ( k=0; k<=2*i; k++ )printf (“#”)printf (“\n”);}} ___________________________3、main ( ){ int i, j, a=0;for ( i= 0; i< 2; i++ ){ a ++;for( j=0; j<4; j++ ){ if (j%2) break;a ++ ;}a ++;}printf (“a=%d\n” , a );}4、int Max = 0,Min = 0;float average ( int array[ ],int n){ int i;float aver, sum=array[0];Max=Min=array[0];for ( i=1; i<n; i++ ){ if (array[i] > Max) Max = array[i];if( array[i] < Min) Min = array[i];sum = sum + array[i];}aver = sum/n;return (aver);}main ( ){ int temp[6]={ 20, 55, -10, 70, 40, -35 };float ave ;ave = average ( temp, 6);printf (“max = %4d\nmin = %4d\naverage = %6.2f\n”, Max, Min, ave);} ______________ 5、# define N 5main ( ){ int j, temp, a[N]={ 8, 6, 4, 5, 7 };for ( j=0; j<N/2; j++){ temp = a[j];a[j]=a[N-j-1];a[N-j-1]=temp;}for ( j=0; j<N; j++)printf ( “%4d” , a[j]);printf(“\n”);__________________________}6、#include<stdio.h>int fun(int x){ static int t=0;return(t+=x);}void main(){int s,i;for(i=1;i<=5;i++){ s=fun(i);printf("%d,",s); }} ____三、填空题(将下面程序中缺少的部分填出)1、下面程序的功能是计算100 至1000 之间有多少个数其各位数之和是6。
请填空:# include < stdio.h >main ( ){ int i, s, k, count = 0;for ( i=100; i<=1000; i++ ){ s=0; k = i;while (【1】) ___________________{ s = s+k%10; k=【2】; } ___________________if ( s != 6 ) 【3】; ____________________else count++;}printf (“amount=%d”, count);}2、下面程序的功能是将输入字符串中的数字字符删除后输出。
请填空:#include <stdio.h>void delnum(char *s){int i,j;for(i=0,j=0;s[i]!=’\0’;i++)if(s[i]<’0’【1】s[i]>’9’) ____________________ { s[j]=s[i];j++;}【2】; ____________________ }main( ){char *item;printf(“\n input a string:”);gets(item);delnum(item);printf(“\n%s”,【3】); _____________________ }3、下面程序的功能是输出10至200 之间其每位数的乘积大于每位数的和的数。
请完成之:# include < stdio.h >main ( ){ int n, k=1,s=0,m;for ( n=10; n<=200; n++ ){ k = 1; s=0;【1】; ____while (【2】) _{ k*=m%10; ;s+ = m%10;【3】; ___}if (k>s) printf (“%d”, n);}}4、以下程序的功能是:输入1个大于2的整数,判断其是否为2个大于1的整数的乘积。
请填空。
#include <stdio.h>【1】____void main(){ int m,i;while(!scanf(“%d”,&m) &&m>2);for(i=2;i<=sqrt(m);i++)if( 【2】) ____{ printf("%d*%d=%d\n",i,m/i,m); break; }if( 【3】 ) printf("不可分解\n"); ____}四、 编程题:1、 从键盘输入任一整数x ,求出1!+2!+3!----x !(即求出∑n!, 其中n 从1~x )的结果并显示出来,试编一程序实现之。