同济大学C语言期末考试卷

合集下载

c语言期末考试题库及详解答案编程题

c语言期末考试题库及详解答案编程题

c语言期末考试题库及详解答案编程题C语言期末考试题库及详解答案编程题1. 题目:编写一个C程序,实现输入一个整数,判断该整数是否为素数,并输出结果。

答案:```c#include <stdio.h>int isPrime(int n) {if (n <= 1) return 0; // 小于等于1的数不是素数for (int i = 2; i * i <= n; i++) {if (n % 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;}```2. 题目:编写一个C程序,实现字符串的反转,并输出原始字符串和反转后的字符串。

答案:```c#include <stdio.h>#include <string.h>void reverseString(char str[]) {int length = strlen(str);for (int i = 0; i < length / 2; i++) {char temp = str[i];str[i] = str[length - i - 1];str[length - i - 1] = temp;}}int main() {char str[100];printf("请输入一个字符串:");scanf("%s", str);reverseString(str);printf("原始字符串:%s\n", str);printf("反转后的字符串:%s\n", str);return 0;}```3. 题目:编写一个C程序,实现计算并输出一个整数数组中的最大值和最小值。

c语言期末考试题库及详解答案编程题

c语言期末考试题库及详解答案编程题

c语言期末考试题库及详解答案编程题在C语言的期末考试中,编程题是检验学生对C语言编程能力的重要部分。

以下是一套精心准备的C语言期末考试题库及详解答案,帮助学生复习和准备考试。

1. 编写一个程序,计算并输出100以内所有素数的和。

素数是指只能被1和它本身整除的大于1的自然数。

我们可以通过遍历2到99的每个数,检查它是否为素数,如果是,则累加到总和中。

最后输出总和。

```c#include <stdio.h>#include <stdbool.h>bool isPrime(int num) {if (num <= 1) return false;for (int i = 2; i * i <= num; i++) {if (num % i == 0) return false;}return true;}int main() {int sum = 0;for (int i = 2; i <= 100; i++) {if (isPrime(i)) {sum += i;}}printf("The sum of all prime numbers less than 100is: %d\n", sum);return 0;}```2. 编写一个程序,实现字符串的反转。

字符串反转是一个常见的编程问题,可以通过遍历字符串,将字符从后向前存入新的字符串中,然后输出。

```c#include <stdio.h>#include <string.h>void reverseString(char str[]) {int len = strlen(str);for (int i = len - 1; i >= 0; i--) {printf("%c", str[i]);}}int main() {char str[] = "Hello, World!";printf("Original string: %s\n", str);printf("Reversed string: ");reverseString(str);printf("\n");return 0;}```3. 编写一个程序,计算数组中所有元素的平均值。

C++同济大学期末考试统一命题纸 A卷

C++同济大学期末考试统一命题纸 A卷

同济大学本科课程期末考试统一命题纸 A卷2006-2007学年第一学期课程:C++语言专业:考试日期:课号:姓名:班级:任课老师:学号:考查出考卷教师签名:教学管理室主任签字:一、选择填空 (30分)1)下列变量名中,( )是合法的。

A、a<cB、byte-sizeC、double$D、_point2)若有以下定义:char c; int a;float x; double y;则表达式a-c+x/y值的类型为()。

A、floatB、intC、charD、double3)在int b[3][3]={{1},{3,2},{4,5,6}};中,b[2][2]的值是()。

A、0B、5C、6D、24)用指针来表示数组中的某个元素时,下列表示中( )是错误的。

已知:int x[5][8];int *p=x[0];A、*(*(x++));B、*(*x+3);C、*(p+32);D、*(&x[0][0]+2);5)下列给字符数组进行初始化中,()是正确的。

A、char s2[3]=“xyz”;B、char s1[]=“abcd”;C、char s3[3][]={‘a’,‘x’,‘y’};D、char s4[2][3]={“xyz”,“abc”};6) 已知int a,b; 下列switch语句中,()是正确的。

A、switch(a)B、switch(a+b){case a:a++;break; {case 1:a+b;break;case b:b++;break;} case 4*a:a-b;}C、switch(a*a)D、switch(a/10+b){case 1,2:++a; {case 5:a/5;break;case 3,4:++b; } default:a+b; }7)已知int a=3,b=0; !a&&a+b&&a++;a||b++||a+b;当逻辑表达式执行完毕后,a和b的值分别为:A、3,0B、3,1C、4,0D、4,18) 有以下程序union { float x; char c; } a; struct { float x; char c; } b;void main( ){ printf("%d,%d\n", sizeof(a), sizeof(b)); }程序输出结果是()。

同济大学C++07-08考试A试卷

同济大学C++07-08考试A试卷

同济大学本科课程期末考试统一命题纸 A卷2007-2008学年第一学期课程:C++语言专业:考试日期:课号:姓名:班级:任课老师:学号:考查出考卷教师签名:教学管理室主任签字:一、选择填空 (30分)1)已定义c为字符型变量,则下列语句中正确的是()。

A、c=’65’;B、c="65";C、c=65;D、c="A";2)若有以下定义:int n=10; typedef int array[10];则下列语句中不能正确定义数组的是()。

A、 int a[10]; B、 int b[n];C、 array c;D、 float d[5*2];3)若有以下定义:int *p; int x[3][4];则下列赋值语句中错误的是()。

A、p=x;B、p=&x[0][0];C、p=x[0];D、p=*(x+1);4)有以下程序段:x=1200;if(x>1000) y=0.5;else if(x>800) y=0.4;else if(x>600) y=0.3;else y=0.2;则程序段执行完毕时,y的值为()。

A、0.5B、0.4C、0.3D、0.25)以下表达式中能够被正确执行的是()。

A、a/(x-x++)B、a=b=c+10C、int 21.09%3D、x=y+2=z-56) 若有定义:int *p[5];则以下叙述中正确的是()。

A、定义了一个名为*p的整型数组,该数组含有五个整型元素;B、定义了一个指针数组p,该数组含有五个元素,每个元素都是整型指针;C、定义了一个指向整型数据的指针变量p,该变量具有五个指针;D、定义了一个可指向一维数组的指针变量p,所指一维数组有五个整型元素; 7)有下列定义:int b[10]; int *p=b;以下表达式中不能使数组b中元素b[1]的值为1的是()。

A、*(b+1)=1B、*(p+1)=1C、* ++b =1D、* ++p =18) 给出以下定义:char str1[ ]="abcde";char str2[ ]={'a','b','c','d','e'};则以下叙述中正确的是()。

同济c++期末测试练习题答案[1]

同济c++期末测试练习题答案[1]

1、程序的功能是输入你的出生日期,判断你的生日是星期几。

要求定义一个时间类Date,包括年,月,日3个私有数据成员,和三个公有成员函数:void set(int y,int m,int d)用于设置数据成员年、月、日的值,int weekday()用于计算某个日期是星期几。

Void display() 用来显示结果。

在主函数中读入你的生日〔年、月、日〕,调用成员函数设置数据成员,计算生日是星期几,并显示结果。

#include "iostream.h"int a[12]={31,28,31,30,31,30,31,31,30,31,30,31};char b[7][4]={"一","二","三","四","五","六","日"};class Date{int year,month,day;public:void set(int y,int m,int d){year=y;month=m;day=d;}int weekday(){int i,s=0;for(i=1990;i<year;i++){if(i%4==0&&i%100!=0||i%400==0)s=s+366;elses=s+365;}for(i=1;i<month;i++){s=s+a[i-1];}if(month>2&&year%4==0&&year%100!=0||year%400==0)s++;s=s+day;return s%7;}void display()cout<<"您的出生日期是:"<<year<<"年"<<month<<"月"<<day<<"日星期:"<<b[weekday()-1]<<endl;}};void main(){Date o;int year,month,day;cout<<"请输入您的出生年月日"<<endl;cin>>year>>month>>day;o.set(year,month,day);o.display();}第二题代码2、程序的功能是判断一个字符串是不是回文字符串。

C语言程序设计期末考试卷及答案

C语言程序设计期末考试卷及答案

C语言程序设计期末考试卷及答案考试时间:3小时满分:100分一、选择题(每题2分,共20分)1. 下列哪个不是C语言的关键字?A. intB. floatC. doubleD. printf答案:D2. 在C语言中,用于判断两个数是否相等的运算符是:A. >B. <C. ==D. >=答案:C3. 下面哪个选项是正确的函数声明方式?A. void sum(int a, b);B. int multiply(int x, int y);C. add(int a, int b);D. double divide(int a, int b);答案:B4. 下面哪个函数原型声明是错误的?A. void calculate(int a, int b);B. int calc(int x);C. int comp(float x, float y);D. double calculate(int x, int y);答案:D5. 在C语言中,用于循环执行某段代码的关键字是:A. ifB. elseC. switchD. while答案:D6. 下面哪个选项是正确的数组声明方式?A. int[5] numbers;B. numbers[5] int;C. int numbers[5];D. array = int[5];答案:C7. 在C语言中,用于读取用户输入的函数是:A. puts()B. scanf()C. print()D. read()答案:B8. 下列哪个运算符用于访问结构体成员?A. .B. ,C. :D. ;答案:A9. 在C语言中,用于定义常量的关键字是:A. defineB. constantC. constD. variable答案:C10. 下面哪个选项是正确的条件语句?A. if (x > 10) { printf("x大于10"); }B. if x > 10 { printf("x大于10"); }C. if x > 10 printf("x大于10");D. if x > 10 then printf("x大于10");答案:A二、编程题(共80分)题目一:请编写一个C语言程序,要求从键盘上输入一个整数n,然后计算并输出1到n之间所有整数的和。

c语言期末考试题库及详解答案

c语言期末考试题库及详解答案C语言作为计算机编程的基础语言,其期末考试通常包含对基础语法、数据结构、算法设计等方面的考察。

以下是一份C语言期末考试题库及详解答案,供学生复习参考。

1. 编写一个C程序,实现两个整数的加法运算,并输出结果。

```c#include <stdio.h>int main() {int a, b, sum;printf("请输入两个整数:");scanf("%d %d", &a, &b);sum = a + b;printf("两个整数相加的结果是:%d\n", sum);return 0;}```2. 编写一个C程序,实现字符串的反转输出。

```c#include <stdio.h>#include <string.h>void reverseString(char str[]) {int length = strlen(str);for (int i = 0; i < length / 2; i++) {char temp = str[i];str[i] = str[length - i - 1];str[length - i - 1] = temp;}}int main() {char str[100];printf("请输入一个字符串:");scanf("%s", str);reverseString(str);printf("反转后的字符串是:%s\n", str);return 0;}```3. 编写一个C程序,实现查找数组中的最大值,并输出其索引。

```c#include <stdio.h>int main() {int arr[] = {5, 10, 15, 20, 25};int maxIndex = 0;for (int i = 1; i < 5; i++) {if (arr[i] > arr[maxIndex]) {maxIndex = i;}}printf("数组中的最大值是:%d,其索引为:%d\n",arr[maxIndex], maxIndex);return 0;}```4. 编写一个C程序,实现冒泡排序算法。

大一的c与语言期末试题及答案

大一的c与语言期末试题及答案一、选择题(每题2分,共20分)1. C语言中,以下哪个关键字用于定义函数?A. intB. voidC. returnD. function答案:A2. 在C语言中,哪个运算符用于取模运算?A. %B. /C. *D. +答案:A3. 下列哪个选项是C语言中的合法变量名?A. 2variableB. variable2C. variable#2D. variable_2答案:D4. 在C语言中,以下哪个选项是正确的字符串定义?A. char str[] = "Hello";B. char str[] = {"Hello"};C. char str = "Hello";D. char str[] = 'Hello';答案:A5. C语言中,以下哪个选项是正确的注释?A. // This is a single line commentB. /* This is a single line comment */C. // This is a multi-line commentD. /* This is a multi-line comment */答案:A6. C语言中,以下哪个选项用于定义一个结构体?A. structB. struct{}C. struct nameD. struct name{}答案:D7. 在C语言中,以下哪个选项是正确的数组定义?A. int arr[] = {1, 2, 3};B. int arr[3] = {1, 2, 3};C. int arr = {1, 2, 3};D. int arr[3] = 1, 2, 3;答案:B8. C语言中,以下哪个选项是正确的指针声明?A. int *ptr;B. int ptr*;C. int *ptr = 0;D. int ptr = 0;答案:A9. 在C语言中,以下哪个选项是正确的文件包含指令?A. #include "stdio.h"B. #include <stdio.h>C. #include "stdio.h" and #include <stdio.h>D. #include "stdio.h" or #include <stdio.h>答案:B10. C语言中,以下哪个选项是正确的条件语句?A. if (x > 0) { ... }B. if x > 0 { ... }C. if (x > 0) ...;D. if x > 0 ...;答案:A二、填空题(每题3分,共15分)1. 在C语言中,定义一个整型变量并初始化为10的语句是____。

大一c语言期末考试题及答案下载

大一c语言期末考试题及答案下载随着信息技术的飞速发展,C语言作为一门基础且重要的编程语言,在大学计算机科学与技术专业的教学中占据着举足轻重的地位。

大一的同学们在经过一个学期的学习之后,即将迎来C语言的期末考试。

为了帮助同学们更好地复习和准备,我们特别整理了一份大一C语言期末考试题及答案,供同学们下载和参考。

首先,我们来看第一题,这是一道关于C语言基础语法的选择题。

题目要求同学们选择正确的C语言变量声明方式。

正确答案是选项C,即`int a = 5;`。

这道题目考察了同学们对C语言变量声明和初始化的理解。

接下来是第二题,这是一道关于数组的编程题。

题目要求编写一个程序,实现对一个整型数组的逆序输出。

同学们需要掌握数组的遍历和元素交换的方法来完成这道题目。

第三题是一道关于函数的编程题。

题目要求编写一个函数,实现对两个整数的交换。

这道题目不仅考察了同学们对函数定义和调用的理解,还考察了参数传递和返回值的使用。

紧接着是第四题,这是一道关于指针的选择题。

题目要求同学们选择正确的指针声明方式。

正确答案是选项B,即`int *p;`。

这道题目考察了同学们对指针声明和初始化的理解。

第五题是一道关于结构体的编程题。

题目要求编写一个程序,实现对学生信息的输入和输出。

同学们需要掌握结构体的定义和使用,以及如何通过指针访问结构体成员。

第六题是一道关于文件操作的编程题。

题目要求编写一个程序,实现对文本文件的读写操作。

这道题目考察了同学们对文件指针的使用,以及如何进行文件的打开、读取、写入和关闭。

第七题是一道关于预处理指令的选择题。

题目要求同学们选择正确的宏定义方式。

正确答案是选项A,即`#define PI 3.14159`。

这道题目考察了同学们对预处理指令的理解。

第八题是一道关于位运算的编程题。

题目要求编写一个程序,实现对整数的二进制表示的反转。

这道题目考察了同学们对位运算符的使用,以及如何进行位运算。

最后是第九题,这是一道综合性的编程题。

大学c期末考试题及答案

大学c期末考试题及答案一、选择题(每题2分,共20分)1. C语言中,以下哪个关键字用于定义一个函数?A. intB. floatC. voidD. char答案:C2. 在C语言中,哪个运算符用于取模?A. /B. %C. *D. -答案:B3. 下列哪个是C语言中的合法标识符?A. 3variableB. variable3C. variable$3D. variable-3答案:B4. C语言中,以下哪个是正确的数组声明?A. int [10] array;B. int array[10];C. int array[];D. int [10] array[];答案:B5. 在C语言中,以下哪个语句是正确的循环语句?A. for(i=0; i<10; i++);B. while(1) { ... }C. do { ... } while(1);D. for(;;);答案:B6. 在C语言中,以下哪个是正确的字符串定义?A. char str[10] = "Hello";B. char str = "Hello";C. char str[10] = {"Hello"};D. char str[] = "Hello";答案:A7. C语言中,哪个函数用于计算两个数的和?A. printf()B. scanf()C. sum()D. pow()答案:C(注意:sum()是自定义函数,需要在代码中定义)8. 下列哪个是C语言中的一元运算符?A. +=B. ++C. &&D. ==答案:B9. 在C语言中,以下哪个是正确的结构体声明?A. struct person { int age; char name[50]; };B. struct { int age; char name[50]; };C. person struct { int age; char name[50]; };D. struct person { int age; char name[50]; } person;答案:A10. C语言中,以下哪个关键字用于定义一个指针?A. intB. floatC. *D. void答案:C二、填空题(每题2分,共20分)11. 在C语言中,定义一个整型变量的关键字是____。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

同济大学C语言期末考试卷 2005-2006学年第二学期《C程序设计期末试卷》(闭卷) 一、单项选择题(20分) 1. 在定义函数时,能用以下 (1) 标识符作函数名。 A.struct B._abc C. 8abc D. abc@sina.com 2在一个函数被调用执行过程中,当执行到函数体中 (2) 语句后立即无条件返回主调函数。 A.goto B.break C.continue D.return 3.以下关于main函数定义的叙述中,错误的是 (3) 。 A. main函数是自定义函数,因此函数体中的声明和语句都是可选的 B. main函数定义时可以有形式参数也可以没有形式参数 C. main函数定义必须出现在一个源程序的起始位置 D. 在一个源程序中只能有一个main函数定义 4.以下函数定义中正确的是 (4) 。 A. double fun(intx,y){ return x*y;} B. double fun(intx,int x){ return x*x; } C. double fun(register intx,int y){ return x*x;} D. double fun(extern intx,int y){ return x*y;} 5.若函数定义为void fun(intx,inty,int *p) { *p= x>y ? x : y; },且main函数中有声明“int a=1,b=2,c[2]={0};”,则以下语句中正确的是 (5) 。 A.printf(“%d”,fun(a,b,c)); B.fun(a,b,c+1); C.fun(a,b,c[2]); D.fun(1,2); 6. 若函数定义为double fun(double x,double y){ return x/y;},则以下fun引用声明(函数原型)中错误的是 (6) 。 A. double fun(double x,double y); B. double fun(double a,double b); C. double fun(double ,double ); D. float fun(double x,double y); 7.以下程序段中,有语法错误的是 。 A. double f; double f (double x) { return f=x*x; } C. double f (double x) { double f; return f=x*x; } B. double f (double f) { return f*f;} D. double f (double x) { if(x>0){ double f ; return f=x;} else{ double f ; return f= -x;} } 8.以下一维数组声明中,正确的是 (8) 。 A. int a[ ]; B.int b[10],a[b]; C. int a[4]={1,2,3,4,5}; D. int a[sizeof('a')]={'a'}; 9.以下二维数组声明中,正确的是 (9) 。 A. char b[2][3]={“a”.”b”.”c”}; B. char b[][3]={0}; C. char b[2][]={0}; D. char b[][]={0}; 10.已知有二维数组声明“int a[3][3]={1,2,3,4,5,6,7,8,9};”,不能正确输出数组a中第2行(行下标为1)第3列元素(列下标为2)的语句是 (10) 。 A.printf(“%d”,a[1][2]); B. printf(“%d”,*(*(a+1)+2)); C. printf(“%d”,*(a+1)[2]); D. printf(“%d”,*(a[1]+2)); 11.若需要将字符串“happy”和“good luck”存储到数组中,则以下选项中正确的是 (11) 。 A. char s[2][10]; s[2][10]={“happy”, “good luck” }; B. char s[2][10]; s[0]= “happy”;s[1]=“good luck”; C. char s[2][10]; strcpy(s[0][0],“happy”);strcpy(s[1][0],“good luck”); D. char s[2][10]; strcpy(s[0],“happy”);strcpy(s[1],“good luck”); 12.已知有声明“char *s=”happy birthday”,t[10];”,要求将s指向的字符串中“birthday”子串复制到t数组中并输出t数组中的字符串,正确的操作的是 (12) 。 A.puts(strcpy(t,s)); B. puts(strcpy(t,s+6)); C. puts(strcat(t,s)); D. puts(strcat(t,s+6)); 13.在以下结构类型定义中,正确的是 (13) 。 A. struct for { intx,y; }; C. struct For { static int x, y; }; B. struct FOR { intx,y; }; D. struct FOR { int x; int x; };

A.B.C.D.

13. A.B.C.D. 14.已知有数据类型定义及变量声明如下: struct { int a; struct { char name[10];}b; }s={1,”mark”},*ps=&s; 则以下选项中能够输出“mark”的语句是 (14) 。 A.puts(name); B.puts(b.name) C.puts(s.b.name); D.puts(*p.b.name); 15.若已有数据类型定义为“struct { intx,y;}a={2,3},b={0};”,则以下语句中正确的是 (15) 。 A.b=a; B.if(a!=b)b=a; C.b+=a; D.b++; 16.在基于以下全局对象标识符p的声明中,不能做p++运算的声明是 。 A.int p; B.int a[10], *p=a; C. int a[2],*p[2]={a}; D. int a[2][2], (*p)[2]=a; 17. 若已有声明“int a[][3]={{1,2,3},{4,5},{6}},*p1=&a[0][0], (*p2)[3]=a;”,以下选项中的语句分别被执行后,屏幕输出结果不是4选项是 (17) 。 A. printf("%d",a[1][0]); B. printf("%d",a[0][3]); C. printf("%d",p1[4]); D. p2++; printf("%d",p2[0][0]); 18.以下选项均为fun函数的定义,其中有语法错误的是 (18) 。 A. void fun(int x, int *y){ x*=*y;} B. void fun(int x, int *y){ *x*=*y;} C. void fun(int *x,int y){ *x+=y;} D. int *fun(int *x,int y){ return x+=y;} 19.以下表达式中,不要求操作数a必须是左值的选项是 (19) 。 A.a++ B.*a C.--a D.a=0; 20.已知有数据类型定义为“enum flower{ROSE,LILY,TULIP}flo[2]={1,2},*pf;”则以下语句中正确的是 (20) 。 A. flo[ROSE]=LILY; B.ROSE=flo[LILY]; C. pf=&ROSE; D. flo[LILY+TULIP]=LILY; 二、填空题(18分) 1.当定义一个无返回值函数时,函数的返回值类型标应为 (1) 。 2.若已有二维数组声明“int a[][3]={{1},{2},3,4,5,6};”,则该数组共有 (2) 个数组元素。 3.若有如下数据类型定义及数组声明,则p数组在内存中占用的存储字节数为 (3) 。 struct { long x; union { int a; char b; float c;}y; }p[5]; 4.“int (*pa)();”是 (4) 的声明。 5.当程序中需要调用库函数strcmp时,应当包含头文件 (5) 。 6.当某程序准备从一个磁盘文件中读入数据,需要有类似“FILE *fp;”这样的声明,该声明中的FILE是指 (6) 。 7. 以下程序运行后输出结果是 (7) . #include int f(intx,int y) { if(x return x,y; else returny,x; } main() { printf("%d",f(2,3)); } 8. 以下程序运行后输出结果的第一行是 (8) 第二行是 (9) 。 #include void f(int *a,int n, int times) { inti,t=a[0]; for(i=0;i a[n-1]=t; times++; } main() { int a[5]={1,2,3,4},i; f(a,4, a[4]); for(i=0;i<4;i++)printf("%d ",a[i]);

相关文档
最新文档