12月10日上机题目及答案(函数和数组)
c语言上机春考考试试题及答案
c语言上机春考考试试题及答案一、选择题(每题2分,共20分)1. C语言中,以下哪个关键字用于定义一个函数?A. intB. voidC. returnD. function答案:A2. 下列哪个选项是正确的C语言注释方式?A. // 这是注释B. /* 这是注释 */C. /* 这是注释D. // 这是注释答案:B3. 在C语言中,以下哪个运算符用于比较两个值是否相等?A. ==B. =C. !=D. <=答案:A4. 下列哪个选项不是C语言的基本数据类型?A. intB. floatC. charD. string答案:D5. 在C语言中,以下哪个关键字用于定义一个结构体?A. structB. unionC. enumD. typedef答案:A6. C语言中,以下哪个关键字用于定义一个枚举类型?A. enumB. structC. unionD. typedef答案:A7. 在C语言中,以下哪个关键字用于定义一个宏?A. defineB. macroC. constD. #define答案:D8. 下列哪个选项是C语言中正确的数组声明?A. int arr[5] = {1, 2, 3, 4, 5};B. int arr[] = {1, 2, 3, 4, 5};C. int arr[5] = {1, 2};D. int arr = {1, 2, 3, 4, 5};答案:A9. 在C语言中,以下哪个函数用于计算字符串的长度?A. strlen()B. length()C. size()D. sizeof()答案:A10. C语言中,以下哪个函数用于将字符串复制到另一个字符串?A. strcpy()B. strcat()C. strncpy()D. strncat()答案:A二、填空题(每题3分,共15分)1. C语言中,用于定义一个整型变量的关键字是________。
答案:int2. 在C语言中,使用________运算符可以连接两个字符串。
国家二级C语言机试(函数和数组)模拟试卷6(题后含答案及解析)
国家二级C语言机试(函数和数组)模拟试卷6(题后含答案及解析) 题型有:1. 选择题选择题1.以下叙述中正确的是.A.用户自己定义的函数只能调用库函数B.不同函数的形式参数不能使用相同名称的标识符C.在C语言的函数内部,可以定义局部嵌套函数D.实用的C语言源程序总是由一个或多个函数组成正确答案:D解析:一个C语言源程序可以由一个或多个源文件组成,每个源文件可由一个或多个函数组成,这些函数可以是自定义函数,也可以是库函数,各个函数之间没有土从关系,不能嵌套定义函数。
知识模块:函数和数组2.有定义语句:char*s1=‘‘OK’’,*s2=‘‘ok’’;以下选项中,能够输出’’K’’的语句是A.if(strcmp(s1,s2)!=0)puts(s1);B.if(strcmp(s1,s2)!=0)puts(s2);C.if(strcmp(s1,s2)=1)puts(s1);D.if(strcmp(s1,s2)=0)puts(s1);正确答案:A解析:字符串比较函数strcmp的功能是对s1和s2所指字符串进行比较。
如果s1<s2,返回负数,如果s1=s2,返回0,如粜s1>s2,返回正数,所以对于本题来说,能够输出”OK”的语句是选项A所指的语句。
知识模块:函数和数组3.有以下程序#include<stdio.h>intfun(inta,intb){if(b=0)returna;、elsereturn(fun(-a,-b));}main( ){printf(‘‘%d\n’’,fun(4,2));}程序的运行结果是A.1B.2C.3D.4正确答案:B解析:由程序可知函数fun(inta,intb)是一个递归函数。
所以当主函数中调用‰(4,2)时,其执行过程如下:fun(4,2)->fun(3,1)->fun(2,0),其返回值为2。
知识模块:函数和数组4.以下叙述中正确的是A.函数名代表该函数的入口地址B.所有函数均不能接受函数名作为实参传入C.函数体中的语句不能出现对自己的调用D.如果函数带有参数,就不能调用自己正确答案:A解析:函数形、实参传递的时候,要求对应位置类型一致即可,如果实参为函数名,可以定义相应的形参为指向函数的指针变量来获得该函数的入口地址,因此选项B错误的,在C语言中允许进行递归调用,即自己调用自己,选项C 和选项D是错误的。
计算机二级C语言上机复习题及答案解析范文一份
计算机二级C语言上机复习题及答案解析范文一份计算机二级C语言上机复习题及答案解析 1计算机二级C语言上机复习题及答案解析填空题给定程序中,函数fun的功能是:在形参ss所指字符串数组中,查找含有形参substr所指子串的所有字符串并输出,若没找到则输出相应信息。
ss所指字符串数组__有N个字符串,且串长小于M。
程序中库函数strstr(s1, s2)的功能是在s1串中查找s2子串,若没有,函数值为0,若有,为非0。
请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!给定源程序:#include#include#define N 5#define M 15void fun(char (*ss)[M], char *substr){ int i,find=0;for(i=0; i __1__ ; i++)if( strstr(ss[i], __2__) != NULL ){ find=1; puts(ss[i]); printf(“\n"); }if (find==__3__) printf("\nDon't found!\n");}main(){ char x[N][M]={"BASIC","C langwage","Java","QBASIC","Access"},str[M];int i;printf("\nThe original string\n\n");for(i=0;i printf("\nEnter a string for search : "); gets(str);fun(x,str);}解题思路:本题是根据给定的字符串数组中查找指定的字符串,如果存在,则显示。
数组试题及答案
数组试题及答案1. 定义一个整型数组,包含10个元素,并初始化为0。
答案:```cint array[10] = {0};```2. 编写一个函数,用于计算数组中所有元素的和。
答案:```cint sumArray(int arr[], int size) {int sum = 0;for (int i = 0; i < size; i++) {sum += arr[i];}return sum;}```3. 给定一个数组,编写一个函数来找到数组中的最大值。
答案:```cint findMax(int arr[], int size) {int max = arr[0];for (int i = 1; i < size; i++) {if (arr[i] > max) {max = arr[i];}}return max;}```4. 编写一个程序,将一个数组中的所有元素逆序输出。
答案:```cvoid reverseArray(int arr[], int size) {for (int i = size - 1; i >= 0; i--) {printf("%d ", arr[i]);}}```5. 给定一个整数数组,编写一个函数,将数组中的所有负数移到数组的开头,所有非负数移到数组的末尾。
答案:```cvoid moveNegativesToFront(int arr[], int size) {int j = 0;for (int i = 0; i < size; i++) {if (arr[i] < 0) {arr[j++] = arr[i];}}for (int i = j; i < size; i++) {arr[i] = 0;}}```6. 编写一个函数,用于检查数组中是否存在重复元素。
答案:```cbool hasDuplicates(int arr[], int size) {for (int i = 0; i < size; i++) {for (int j = i + 1; j < size; j++) {if (arr[i] == arr[j]) {return true;}}}return false;}```7. 给定一个数组,编写一个函数,用于找出数组中第二大的元素。
数组选择试题及答案
数组选择试题及答案一、选择题1. 在C语言中,数组的索引是从哪个数字开始的?A. 0B. 1C. 2D. 3答案:A2. 下面哪个选项是正确的数组声明?A. int arr[5] = {1, 2, 3};B. int arr[5] = {1, 2, 3, 4, 5, 6};C. int arr[] = {1, 2, 3};D. int arr[5] = {1, 2};答案:C3. 如果有一个数组`int arr[10] = {0};`,那么数组中所有元素的初始值是多少?A. 1B. 0C. -1D. 未定义答案:B4. 以下哪个循环可以用来遍历数组?A. for (int i = 0; i < 10; i++) { ... }B. for (int i = 10; i > 0; i--) { ... }C. for (int i = 0; i <= 10; i++) { ... }D. for (int i = 0; i < 10; i += 2) { ... }答案:A5. 在C语言中,如何获取数组的长度?A. sizeof(arr) / sizeof(arr[0])B. sizeof(arr) * sizeof(arr[0])C. sizeof(arr) / sizeof(int)D. sizeof(arr) / sizeof(char)答案:A二、填空题1. 在C语言中,定义一个整型数组并初始化为前5个自然数,可以使用以下语句:`int arr[] = {______, ______, ______, ______,______};`答案:0, 1, 2, 3, 42. 如果有一个数组`int arr[5] = {10, 20, 30, 40, 50};`,那么`arr[2]`的值是______。
答案:303. 在C语言中,数组的内存是______的。
答案:连续4. 定义一个数组`int arr[3] = {0, 1, 2};`,数组的最后一个元素的索引是______。
一套简单的C语言上机试题及答案详解
C 语言上机模拟试题(附详细答案)1.程序填空题请补充main函数,该函数的功能是:从键盘输入一组字符串,以“*”结束输入,并显示出这个字符串。
例如,输入abcdefghi*,结果显示adcdefghi。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:不得增行或删行,也不得更改程序的结构!#include <stdio.h>#include <windows.h>#define N 80main(){int i=-1,j=0;char str[N];system("cls");printf("\n Input a string \n");do{i++;/**********found**********/scanf(___1___);/**********found**********/}while(___2___);printf("\n**display the string** \n");while(j<i){/**********found**********/printf(___3___);j++;}}2.程序修改题下列给定程序中,函数fun()的功能是:用冒泡法对6个字符串按由小到大的顺序进行排序。
请改正程序中的错误,使其能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
#include <conio.h>#include <stdio.h>#include <windows.h>#define MAXLINE 20/**********found**********/fun(char *pstr[6]){int I, j;char *p;for(i=0;i<5;i++){for(j=i+1;j<6;j++)/**********found**********/{if(strcmp(*(pstr+i),pstr+j)>0){p=*(pstr+i);/**********found**********/*(pstr+i)=pstr+j;*(pstr+j)=p;}}}}main(){int I;char *pstr[6],str[6][MAXLINE];system("cls");for(i=0;i<6;i++) pstr[i]=str[i];printf("Enter 6 string(1 string at eachline):\n ");for(i=0;i<6;i++) scanf("%s",pstr[i]);fun(pstr);printf("The strings after sorting:\n ");for(i=0;i<6;i++)printf("%s\n",pstr[i]);}3.程序设计题学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun(),它的功能是:把低于平均分的学生数据放在b所指的数组中,低于平均分的学生人数通过形参n传回,平均分通过函数值返回。
C语言--数组上机及答案
程序一:传值void swap(int a,int b){ int t;t=a; a=b; b=t;}main(){ int x=10,y=20;printf(“%d,%d\n”,x,y);swap(x,y);printf(“%d,%d\n”,x,y);}程序二:传地址void swap(int *a,int *b){ int t;t=*a; *a=*b; *b=t;}main(){ int x=10,y=20;printf(“%d,%d\n”,x,y);swap(&x,&y);printf(“%d,%d\n”,x,y);}上机练习1:现在一个数组存放10个整型数据(可以有相同),要求用户输入一个数,然后把数组中与其输入相同的数删除。
然后输出结果。
上机练习2:数组中有10个数,要求对数组进行排序,输出结果。
上机练习3:有10个学生的成绩存在数组中,请统计大于等于平均成绩的人数。
上机练习4:有10个学生的成绩存在数组中,请统计最高分,最低分,并将最高分和最低分学生的下标输出到屏幕上。
上机练习5:求a[M][N]数组四周的和。
#include <stdio.h>#define M 4#define N 5main( ){ int a[M][N]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};…….}程序一:传值void swap(int a,int b){ int t;t=a; a=b; b=t;}main(){ int x=10,y=20;printf(“%d,%d\n”,x,y);swap(x,y);printf(“%d,%d\n”,x,y);}程序二:传地址void swap(int *a,int *b){ int t;t=*a; *a=*b; *b=t;}main(){ int x=10,y=20;printf(“%d,%d\n”,x,y);swap(&x,&y);printf(“%d,%d\n”,x,y);}上机练习1:现在一个数组存放10个整型数据(可以有相同),要求用户输入一个数,然后把数组中与其输入相同的数删除。
上机题参考答案
上机题参考答案C语言实验参考答案实验一5、输入并运行自已编写的程序(教材第一章P14 三编程题)。
实验二1、编写一个程序,从键盘接收3个实数(分别为10.0、20.0、5.0),输出这3个数的和s、乘积t和平均值a。
#includemain(){float x,y,z,s,t,a;printf(“x,y,z=”);scanf(“%f,%f,%f”,&x,&y,&z);s=x+y+z;t=x*y*z;a=s/3;printf(“s=%f,t=%f,a=%f\n”,s,t,a);}2、编程。
要求用户输入两个整数a、b(分别为20、10),读取用户从键盘输入的值,然后:1)用整数输出这两个数的和、差;2)用长整型输出这两个数的积,用float输出商;3)用整数输出这两个数的余数,用float输出平均值。
#includemain(){int a,b,he,cha,yu;long ji;float shang,aver;printf(“a,b=”);scanf(“%d,%d”,&a,&b);cha=a-b;ji=(long)a*b;shang=1.0*a/b;yu=a%b;aver=(a+b)/2.0;printf(“a+b=%d,a-b=%d,a*b=%ld\n”,he,cha,ji);printf(“a/b=%f,a%%b=%d,aver=%f\n”,shang,yu,aver);}3. 再次运行程序第2题中的程序,使整数a 、b 的值分别为10、20,分析程序运行结果,并给出说明。
程序同上。
实验三1、编写一个程序,从键盘接收一个一位的整型数,经转换,用字符函数putchar 输出。
例如,输入整数5,程序运行后输出字符5。
#includemain(){int a;char c;printf(“a=”);scanf(“%d ”,&a);c=a+48;putchar(c);}2、编程。
数据结构上机实验答案
《数据结构实验指导书》答案实验一:1、请编写函数int fun(int*a, int *b), 函数的功能是判断两个指针 a 和 b 所指存储单元的值的符号是否相同;若相同函数返回1,否则返回0。
这两个存储单元中的值都不为0。
在主函数中输入 2 个整数、调用函数fun、输出结果。
#include <stdio.h>int fun(int*a, int *b){if (*a*(*b)>0) return(1);else return(0);}main(){int x,y;scanf("%d%d",&x,&y);if (fun(&x,&y)) printf("yes\n");else printf("no");}2、计算1+2+3+ ,,+100 ,要求用指针进行设计。
即设计函数int fun(int *n) 实现求1+2+3+ ,,+*n ,在主函数中输入、调用、输出结果。
#include <stdio.h>int fun(int *n){int i,sum=0;for (i=1;i<=*n;i++)sum+=i;return(sum);}main(){int x,sum;scanf("%d",&x);printf("the sum is %d\n",fun(&x));}3、函数的功能是求数组 a 中最大数的位置(位序号)。
在主函数中输入10 个整数、调用函数 fun、输出结果。
#define N 10#include <stdio.h>void input(int *a,int n){int i;for (i=0;i<n;i++)scanf("%d",a+i); /*scanf("%d",&a[i]);*/}int fun(int*a,int n){int i,*max;max=a;for (i=1;i<n;i++)if (a[i]>*max) max=a+i;return(max-a);}main(){int a[N],maxi;input(a,N);maxi=fun(a,N);printf("\n the max position is %d\n",maxi);}4、请编写函数fun(int *a,int n, int *odd, int *even),函数的功能是分别求出数组 a 中所有奇数之和和所有偶数之和。
上机考试题参考答案
上机考试题参考答案1、编一个函数fun(char *s),函数的功能是把字符串中的内容逆置。
例子如:字符串中原有的内容为:abcdefg,则调用该函数后,串中的内容为:gfedcba。
试题程序:#define N 10fun(char *s){ int i=0,t,n=strlen(s);for(;s+i<s+n-1-i;i++){t=*(s+i);*(s+i)=*(s+n-1-i);*(s+n-1-i)=t;}}main(){ char a[N];clrscr();printf("Enter a string:"); gets(a);printf("The original string is:");puts(a);fun(a);printf("\n");printf("The string after modified:");puts(a);}2、写程序,实现矩阵(3行3列)的转置(即行列互换)。
int fun(int array[3][3]){ int i,j,t;for(i=0;i<2;i++)for(j=i+1;j<3;j++){t=array[i][j];array[i][j]=array[j][i];array[j][i]=t;}}main(){ int i,j;clrscr();for(i=0;i<3;i++){for(j=0;j<3;j++)printf("%7d",array[i][j]);printf("\n");}fun(array);printf("Converted array:\n");for(i=0;i<3;i++){for(j=0;j<3;j++)printf("%7d",array[i][j]);printf("\n");}}3、请编一个函数fun(int *a,int n,int *odd,int *even),函数的功能是分别求出数组中所有奇数之和以及所有偶数之和。
数组c语言试题库及答案
数组c语言试题库及答案1. 请解释C语言中数组的概念。
答:在C语言中,数组是一种数据结构,它允许将多个相同类型的数据项存储在连续的内存位置。
数组可以是一维的,也可以是多维的。
2. 如何声明一个整型数组?答:声明一个整型数组的语法是 `int array_name[size];`,其中`array_name` 是数组的名字,`size` 是数组中元素的数量。
3. 请写出一个程序,用于计算一个整型数组中所有元素的和。
```c#include <stdio.h>int main() {int array[] = {1, 2, 3, 4, 5};int sum = 0;for(int i = 0; i < 5; i++) {sum += array[i];}printf("Sum of array elements: %d\n", sum);return 0;}```4. 如果一个数组的元素数量是动态的,应该如何声明?答:在C语言中,可以使用指针来处理动态数组。
声明方式为`int *array_name;`,然后在程序中使用 `malloc` 或 `calloc` 函数分配内存。
5. 请解释数组的索引。
答:数组的索引是从0开始的,它表示数组中元素的位置。
例如,对于一个名为 `array` 的数组,`array[0]` 是数组的第一个元素。
6. 如何初始化一个整型数组?答:可以使用花括号 `{}` 来初始化数组,例如 `int array[] = {1, 2, 3, 4, 5};`。
7. 请写出一个程序,用于交换数组中的两个元素。
```c#include <stdio.h>int main() {int array[] = {1, 2, 3, 4, 5};int temp;int index1 = 1; // 第二个元素int index2 = 3; // 第四个元素temp = array[index1];array[index1] = array[index2];array[index2] = temp;for(int i = 0; i < 5; i++) {printf("%d ", array[i]);}return 0;}```8. 在C语言中,数组的元素可以是什么数据类型?答:数组的元素可以是任何数据类型,包括整型、浮点型、字符型、结构体等。
数组题参考答案
数组题参考答案数组题参考答案在计算机科学中,数组是一种用于存储和管理一组相同类型数据的数据结构。
它是一种非常重要的数据结构,被广泛应用于各种编程语言和算法中。
在编程中,经常会遇到与数组相关的题目,这些题目既有基础的数组操作,也有一些较为复杂的问题。
下面,我将为大家提供一些常见数组题目的参考答案。
1. 数组反转题目描述:给定一个数组,将其反转。
解题思路:可以使用双指针法,一个指针指向数组的起始位置,另一个指针指向数组的末尾位置。
然后交换两个指针所指向的元素,并分别向中间移动,直到两个指针相遇。
```pythondef reverse_array(arr):left = 0right = len(arr) - 1while left < right:arr[left], arr[right] = arr[right], arr[left]left += 1right -= 1return arr```2. 数组去重题目描述:给定一个数组,删除其中重复的元素。
解题思路:可以使用一个集合来存储已经出现过的元素,然后遍历数组,将未出现过的元素添加到集合中。
```pythondef remove_duplicates(arr):unique_elements = set()result = []for num in arr:if num not in unique_elements:unique_elements.add(num)result.append(num)return result```3. 数组求和题目描述:给定一个数组,计算其中所有元素的和。
解题思路:可以使用一个变量来记录累加的和,然后遍历数组,将每个元素加到累加和中。
```pythondef array_sum(arr):sum = 0for num in arr:sum += numreturn sum```4. 数组中的最大值和最小值题目描述:给定一个数组,找出其中的最大值和最小值。
vb上机练习试题及答案
第一章概述一、基本要求(1)熟悉VB集成开发环境(2)掌握代码窗口的应用及录入、编辑代码的基本方法(3)了解VB程序设计的基本步骤二、实习内容(1)实习熟悉VB集成开发环境各组成部分(2)输入一个数,求该数的平方并显示结果第二章一、基本要求(1)熟练掌握各种运算符的应用和优先顺序(2)掌握各种常用函数的功能、参数和返回值(3)掌握立即窗口的使用方法二、实验内容(1)回答整形、长整型、单精度、双精度类型数据占用字节数。
(2)已知直角三角形的两条直角边长,求斜边长。
Privat e Sub Comman d1_Cl ick()Dim a%, b%, c%a = Val(InputB ox("输入第一条直角边长"))b = Val(InputB ox("输入第二条直角边长"))c = Sqr(a ^ 2 + b ^ 2)PrintcEnd Sub(3)给小学生随机出两位数和一位数的加法题。
Privat e Sub Comman d1_Cl ick()Dim a%, b%, c%a = Val(InputB ox("输入两位数"))b = Val(InputB ox("输入一位数"))c = a + bPrintcEnd Sub(4)用文本框输入一个带小数的数,对输入的数四舍五入保留2位小数。
Privat e Sub Comman d1_Cl ick()Dim x#, y!x = Text1.Texty = Round(x, 2)PrintyEnd Sub(5)输入某人姓名,判断是否你的本家。
Privat e Sub Comman d1_Cl ick()Dim a$, b$, p As Boolea nb = "李"a = InputB ox("输入某人的姓名")If Left(a, 1) = b Thenp = TrueEnd IfPrintpEnd Sub(6)任意输入西安地区的固定电话号码(原为7位),将其升为8位(在原号码前面加8)。
c语言数组考试题及答案
c语言数组考试题及答案C语言数组考试题及答案一、选择题1. 以下哪个选项是正确的数组声明方式?A. int a[5] = {1, 2, 3, 4, 5};B. int a = [5] = {1, 2, 3, 4, 5};C. int a[5] = {1, 2, 3};D. int a = {1, 2, 3, 4, 5};答案:A2. 对于数组int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; 以下哪个表达式是合法的?A. a[10]B. a[-1]C. a[3.5]答案:D3. 假设有数组int a[5] = {1, 2, 3, 4, 5}; 以下哪个表达式可以得到数组a的元素个数?A. sizeof(a) / sizeof(int)B. sizeof(a) / sizeof(char)C. sizeof(a) / sizeof(float)D. sizeof(a) / sizeof(double)答案:A4. 以下哪个选项是正确的二维数组声明方式?A. int a[3][2] = {{1, 2}, {3, 4}, {5, 6}};B. int a[3][2] = {1, 2, 3, 4, 5, 6};C. int a[3][2] = {{1, 2}, {3, 4, 5}, {6, 7}};D. int a[3][2] = {1, 2, 3, 4, 5, 6, 7, 8};5. 对于二维数组int a[3][2] = {{1, 2}, {3, 4}, {5, 6}}; 以下哪个表达式可以得到元素a[1][1]的值?A. a[1][1]B. a[1] + 1C. *(a[1] + 1)D. a[1] * 1答案:A二、填空题1. 假设有数组int a[5] = {10, 20, 30, 40, 50}; 则a[0]的值是______。
答案:102. 对于数组int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; 则a[9]的值是______。
C语言(数组与函数)习题与答案
1、有以下程序main(){int p[8]={11,12,13,14,15,16,17,18},i=0,j=0;while(i++<7)if(p[i]%2) j+=p[i];printf("%d\n",j);}程序运行后的输出结果是()。
A.42B.56C.60D.45正确答案:D2、以下叙述中错误的是()。
A.数组名代表的是数组所占存储区的首地址,其值不可改变B.只有double类型数组,不可以直接用数组名对数组进行整体输入或输出C.可以通过赋初值的方式确定数组元素的个数D.当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息正确答案:B3、以下能正确定义一维数组的选项是()。
A.int a[5]={0,1,2,3,4,5};B.int a[5]="0123";C.char a[]={0,1,2,3,4,5};D.char a={'A','B','C'};正确答案:C解析: D、不加[ ],a只能被看作是一个字符变量,只能接收一个字符4、有以下程序main(){ char p[ ]={‘a’,’b’,’c’},q[ ] =”abc”;printf("%d %d\n",sizeof(p),sizeof(q));};程序运行后的输出结果是()。
A.4 4B.3 3C.3 4D.4 3正确答案:C解析: C、p[] 只能认作字符数组,不会有字符串的结束标志,所以只有3个字符q[] 是字符串,末尾还会有字符串的结束标志,所以有4个字符5、以下程序运行后的输出结果是()。
main(){ int i,j,a[][3]={1,2,3,4,5,6,7,8,9};for(i=0;i<3;i++)for(j=i+1;j<3;j++) a[j][i]=0;for(i=0;i<3;i++){ for(j=0;j<3;j++) printf("%d ", a[i][j]);printf("\n");}}A.1 2 30 5 60 0 9B.1 2 30 0 00 0 9C.0 0 00 0 00 0 0D.1 2 04 0 60 8 9正确答案:A6、若有定义语句:int m[ ]={5,4,3,2,1},i=4; ,则下面对m 数组元素的引用中错误的是()。
c二级上机考试答案
c二级上机考试答案1. 请写出C语言中定义一个整型变量的语句。
答案:int variable_name;2. 在C语言中,如何声明一个指向整型数据的指针?答案:int *pointer_name;3. 如果有一个数组定义如下:int array[5] = {1, 2, 3, 4, 5}; 那么数组的第一个元素是什么?答案:14. 在C语言中,如何使用循环结构打印出1到10的数字?答案:```cfor(int i = 1; i <= 10; i++) {printf("%d ", i);}```5. 请解释C语言中的switch语句的基本用法。
答案:switch语句用于基于不同的情况执行不同的代码块。
它首先评估一个表达式,然后检查这个表达式的值与case标签匹配的情况,执行相应的代码块。
6. 以下代码段的输出是什么?```cint x = 5;printf("%d", x++);```答案:57. 在C语言中,如何声明一个函数,该函数接受一个整型参数并返回一个整型值?答案:int function_name(int parameter);8. 请写出C语言中定义一个结构体的语句,该结构体包含一个整型成员和一个字符型成员。
答案:```cstruct struct_name {int integer_member;char character_member;};```9. 如果有一个函数定义如下:void function_name(void) { /* function body */ }; 那么这个函数的返回类型是什么?答案:void10. 在C语言中,如何使用条件运算符(三元运算符)?答案:条件运算符的一般形式是:condition ? expression1 : expression2,其中condition是条件表达式,expression1是当条件为真时的返回值,expression2是当条件为假时的返回值。
c程序设计上机答案
c程序设计上机答案C程序设计是一门实践性很强的课程,上机练习是学习过程中不可或缺的一部分。
以下是一些常见的C语言上机练习题目及其参考答案,供同学们参考。
1. 输出"Hello, World!"```c#include <stdio.h>int main() {printf("Hello, World!\n");return 0;}```2. 计算两个数的和```c#include <stdio.h>int main() {int a, b, sum;printf("请输入两个整数:");scanf("%d %d", &a, &b);sum = a + b;printf("%d + %d = %d\n", a, b, sum);return 0;}```3. 判断一个数是否为素数```c#include <stdio.h>#include <math.h>int isPrime(int num) {if (num <= 1) return 0;for (int i = 2; i <= sqrt(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;}```4. 实现一个简单的计算器```c#include <stdio.h>int main() {double num1, num2;char op;printf("请输入运算符和两个数(例如:+ 10 20):");scanf("%c %lf %lf", &op, &num1, &num2);switch (op) {case '+':printf("%.2f + %.2f = %.2f\n", num1, num2, num1 + num2);break;case '-':printf("%.2f - %.2f = %.2f\n", num1, num2, num1 - num2);break;case '*':printf("%.2f * %.2f = %.2f\n", num1, num2, num1 * num2);break;case '/':if (num2 != 0) {printf("%.2f / %.2f = %.2f\n", num1, num2, num1 / num2);} else {printf("除数不能为0。
国家二级C语言机试(函数和数组)模拟试卷11(题后含答案及解析)
国家二级C语言机试(函数和数组)模拟试卷11(题后含答案及解析) 题型有:1. 选择题选择题1.下列叙述中正确的是A.两个连续的单引号(“)是合法的字符常量B.可以对字符串进行关系运算C.两个连续的双引号(““)是合法的字符串常量D.空字符串不占用内存,其内存空间大小是0正确答案:C解析:两个连续的双引号:”“,是一个字符串常量,称为“空串”。
知识模块:函数和数组2.以下选项中,能正确进行字符串赋值的是A.char s[5]={‘A’,’B’,’C’,’D’,’E’};B.char*s=“ABCDE”;C.char s[4][5]={“ABCDE”};D.char*s;gets(s);正确答案:B解析:对于选项A)字符串中无法存放字符串结束标志’\0’,选项C)每行仅仅存放5个字符,同样的不能存放字符串结束标志,选项D)中指针变量s没有实际的内存空间,无法存放输入的字符串。
因此正确的选项为B),相当于char*s:s=“ABCDE”,把字符串常量的首地址存放到指针变量中存储。
知识模块:函数和数组3.有以下程序#include<stdio.h>int fun(char s[]){char*p=s;while(*P!=0)p++;return(p-s);} main( ){printf(“%d\n”,fun(“0ABCDEF”));}程序运行后的输出结果是A.6B.7C.1D.0正确答案:B解析:函数fun的主要功能是计算字符串中实际字符的个数,因此主函数中调用fun得到结果为7。
知识模块:函数和数组4.若有以下程序段char str[4][12]={“aa”,”bbb”,”ccccc”,”d”},*strp[4];int i:for(i=0;i<4;i++)strp[i]=str[i];不能正确引用字符串的选项是A.strpB.str[0]C.strp[3]D.*strp正确答案:A解析:程序段中定义指针数组*strp,含有4个元素,for循环strp分别保存了二维数组str中的4个字符串的首地址,因此strp为二级地址,不能保存字符串的首地址,*strp或者strp[0]中存放了字符串”aa”的首地址。
VB2020大二上机考试题及答案
VB2020大二上机考试题及答案一、选择题(每题2分,共10分)1. VB2020中,下列哪个函数用于计算两个数的和?A. SumB. AddC. PlusD. Total答案:B2. 在VB2020中,以下哪个选项不是基本数据类型?A. IntegerB. StringC. BooleanD. Object答案:D3. VB2020中,用于创建一个新窗体的关键字是:A. FormB. WindowC. DialogD. Frame答案:A4. 如果要在VB2020中实现循环,下列哪个关键字是正确的?A. LoopB. RepeatC. ForD. While答案:C5. 在VB2020中,下列哪个选项用于定义一个常量?A. ConstB. DefineC. LetD. Static答案:A二、填空题(每题3分,共15分)1. 在VB2020中,声明一个变量的关键字是________。
答案:Dim2. VB2020中,用于输出文本到控制台的函数是________。
答案:Console.WriteLine3. 若要在VB2020中捕获异常,应使用________语句。
答案:Try...Catch4. 在VB2020中,用于声明一个数组的关键字是________。
答案:Array5. VB2020中,用于定义一个类的方法的关键字是________。
答案:Sub 或 Function三、编程题(每题10分,共20分)1. 编写一个VB2020程序,计算并输出100以内所有奇数的和。
答案:```vbDim sum As Integer = 0For i As Integer = 1 To 99 Step 2sum += iNextConsole.WriteLine("Sum of odd numbers under 100 is: " & sum)```2. 编写一个VB2020程序,定义一个类,包含一个方法,该方法接收两个整数作为参数,返回它们的乘积。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3
或 Cn m! m (m n)!n!
int comb_loop(int m,int n)
{
int i , temp, a, b, c;
10
for (n=1;n<=25;n++) if (n<=5) a[0][n-1]=n; else if (n<=9) a[n-5][4]=n; else if (n<=13) a[4][13-n]=n; else if (n<=16) a[17-n][0]=n; else if (n<=19) a[1][n-16]=n; else if (n<=21) a[n-18][3]=n; else if (n<=23) a[3][24-n]=n; else if (n<=25) a[2][n-23]=n; for (i=0;i<=4;i++) { for (j=0;j<=4;j++) cout<<a[i][j]<<" ";
{ huihuan(n-1,row+1,col+1,first);
} else {
if(n-row==1)//n是奇数时,要单独处理中心数 arr[row][col]=first; return 0;
for(int i=0;i<n;i++)//输出矩阵
{
}
for(int j=0;j<n;j++)
}
cout<<arr[i][j]<<"\t";
C C (
n m n 1 n1
m
n
m
)
用main函数调用两函数并打印结果。
南京大学 计算机科学与技术系
2
Base of Programming
算法与思路
➢1.非递归算法
主要是利用循环实现组合公式
C n m*(m 1)...(m n 1)
m
n!
int comb_loop(int m,int n) {
for(;row>row2;row--)//列向上赋值n-1
arr[row][col] = first++; if(n-row>1)//没有完成,调用递归完成下一圈赋值
用相同的解法,所以可以采用递
归。 int arr[10][10];
int n; void main() {
cin>>n; huihuan(n,0,0,1);
{ int a[10][10]={0},x,n,n0,m=1,i,j;
cin>>x;
n=x;
n0=0;
while(m<x*x)
{ for(i=n0;i<n;i++) a[n0][i]=m++;//赋值上排
for(i=n0+1;i<n;i++) a[i][n-1]=m++;//赋值右排
for(i=n-2;i>=n0;i--) a[n-1][i]=m++;//赋值下排
cout<<endl; } }
南京大学 计算机科学与技术系 Base of Programming
谢 谢!
}
南京大学 计算机科学与技术系
8
}
Base of Programming
算法与思路
int huihuan(int n,int row,int col,int first) {
int row2 = row;
int col2 = col;
for(;col<n-1;col++)//横向右赋值n-1
arr[row][col] = first++;
➢2.递归算法
利用递归公式:C
n m
m
n n
1C
n1 m
递归的结束条件:C
1 m
m
int comb_rescurision(inБайду номын сангаас m,int n)
{
if(n==1)
return m;
else
return (m-n+1)*comb_rescurision(m,n-1)/n;
}
4
南京大学 计算机科学与技术系 Base of Programming
for(i=1,a=1;i<=m; i++)
a=a*i;
for(i=1,b=1;i<=n; i++)
b=b*i;
for(i=1,c=1;i<=(m-n); i++)
c=c*i ;
temp=a/(b*c);
return temp;
}
南京大学 计算机科学与技术系
Base of Programming
算法与思路
常见错误
➢1.没有递归结束条件,造成栈溢出; ➢2.没有使用递归完成,如:
int comb_recursion(int m,int n) {
int shang=m; for(int i=1;i<n;i++)
{ shang=(m-i)/(i+1)*shang; } return shang; }
5
南京大学 计算机科学与技术系 Base of Programming
for(i=n-2;i>=n0+1;i--) a[i][n0]=m++;//赋值左排
n0++;
n--;
}
if(x%2==1) a[(x-1)/2][(x-1)/2]=x*x;
for(i=0;i<x;i++)
{ for(j=0;j<x;j++) cout<<a[i][j]<<'\t';
cout<<endl;
cout<<endl;
}
9
}
南京大学 计算机科学与技术系 Base of Programming
常见错误
➢1.大多数同学只能正常打cons印t int N第=5; 一圈,里面的 int a[N][N];
循环条件和关系没有找对i{nt m,ain ()不能正确对数
组赋值;
int i,j,n=1;
➢2.有同学采用每层每 列逐次赋值,如:
➢2.采用递归的方法
由外向里顺时针旋转时,最外
for(;row<n-1;row++)//列向下赋值n-1 arr[row][col] = first++;
for(;col>col2;col--)//横向左赋值n-1 arr[row][col] = first++;
层数据输出后,内层的图形只不 过是层数减少,新问题和原问采
南京大学 计算机科学与技术系
6
Base of Programming
题目二
下面是一个5阶的螺旋方阵。试编程打印出此形式的 n(n<10)阶的方阵(顺时针方向旋)。(8分)
南京大学 计算机科学与技术系
7
Base of Programming
算法与思路
➢1.先按要求从外到内一圈一圈赋值,最后打
印结果;int main()
常见错误
➢3.不理解递归,出现以下非法表达式:
int comb_recursion(int m,int n) {
comb_recursion(m,1)=m; comb_recursion(m,n)=((m-n)/(n-1))*comb_recursion(m,(n-1)); return comb_recursion(m,n); }
12月10日上机测试
(函数和数组)
题目与答案
题目一
1.写两个函数计算从m中选n的组合数即计算
C
n m
,
一个函数不使用递归的方法计算,一个函数使用递归
方法计算,函数函数原型可分别声明如下:(12分)
int comb_loop(int m, int n);
int comb_recursion(int m, int n);