vb地址vb函数传递数组的名词解释

★c,,试题及答案
> c,,试题及答案
c,,试题及答案
篇一:★C语言试题及答案
&&&《C语言试题及答案》简介开始:C语言部分一、选择题(每小题2分,共10分)(下在各小题,分别有一个或多个正确答案,请将所有正确答案的编号,填写在该小题题干后的括号内。错选或漏选均不得分)。1、若定义:inta[2][3]{0,2,4,6,8,10};以下描述正确的有(A,C,D,E)A、*(a+1)为元素6的地址这里a+1a[1]的地址;*(a+1)的。。此内容文章属于《考试资料》栏目,以上内容为《C语言试题及答案 19:22:09》简单介绍,正文正式开始》》》C语言部分一、选择题(每小题2分,共10分)(下在各小题,分别有一个或多个正确答案,请将所有正确答案的编号,填写在该小题题干后的括号内。错选或漏选均不得分)。1、若定义:int a[2][3]{0,2,4,6,8,10};以下描述正确的有( A,C,D,E )A、*(a+1)为元素6的地址 这里a+1=a[1]的地址;*(a+1)的值是6,故A正确。B、*(a[1]+1)的值为2为8,故B不正确C、**(a+1)+2的值为8 这里a+1是一个指针,指向的是a[1]. *(a+1)为a[1],a[1]指向的是a[1][0]. **(a+1)为6,加2得8,故C正确;D、a[0]与a相同 因二者都是指针,指针的地址都是指向数组中的第一个元素的地址,故D正确。E、a[1][2]的值为10它是指第二行的第三个元素,为10,正确2、对函数的正确使用方法描述( A,C,D )。A、用数组做函数参数时,必须在主调函数和被调函数中分别定义数组B、实参数组元素和形参数组元素类型可以不一致 C、形参数组长度可以不指定 D、形参数组长度可以大于实参数组长度E、数组名做参数属于值传递3、对静态变量的正确描述( A,B,D,E )A、静态局部变量在静态存储区内分配单元( )B、静态外部变量可以赋初值,也可以不赋初值C、静态外部变量的作用与外部变量相同D、静态局部变量在函数调用结束时,仍保存其值,不会随着消失。E、静态局部变量只赋一次初值4、下列描述正确的是( A ,C)。A、由main 函数及其参数argc和* argv[]可以实现命令行方式B、使用fclose关闭文件时,先释放文件指针,再写缓冲区数据到文件中//先写缓冲区数据到文件中,再释放文件指针C、字符数组并不要求它的最后一个字符是‘\0’//是的,以字符指针指向的字符串才要求,因为只有这样,才能知道字符串的长度,而在字符数组中,不用\0,一样可以知道到哪里是字符数组的结尾。D、‘A’和“A”都是字符串常量 E、若char*S=“\ta\017bc”;则指针变量S指向的字符串所占的字节数是75、在缓冲文件系统中用于读写的函数有( A,B,D )A、putchar () B、fread() C、rewind () D、purw() E、fseek()二、程序阅读,并给出运行结果(共10分,每题5分)。(1)main(){ unsigned a,b,x a=0x763 输出结果: n=6; b=a<<(12n);
x=(a>>n2)^b; //+,,的优先级比&&,&&高。 printf(“\nb=%x,\nx=%x”,b,x); }在用2个字节表示整数的系统中结果为d8c0d8b6在用4个字节表示整数的系统中结果为1d8c01d8b6故以上两种结果都正确。 (2) #include 〈stdin.h〉 struct m {int *y; } *p;int a [4]={12,33,40,100}; struct m b [4]={10,&a[2],9,&a[3],8,&a[0],7,&a[1]}" main(){ p=b; 输出结果: printf(“%d\n”,++p>x); //&的优先级高于++,因此等于是++(p&x),为11 printf(“%d\n”,(++p)>x); //p后移一个元素,其x值为9; printf(“%d\n”,++(*p>y));//&的优先级高于*, 此时p已指向b[1],故*(p&y)为a[3]为100.自加后为101;}故输出结果为:119101三、程序设计(共10分)设在文件a.txt和文件b.txt中分别存有两个字符串,设计一个程序将这两个字符串按依序交叉的方式合并为一个字符串(例如“aaaaa”与“bbb”的合并结果为“abababaa”,而“bbb”与“aaaaa”的合作结果为“ bababaa”,)并将结果存入文件a.txt中。【答案】写程序时,可以分别读取a.txt文件和b.txt文件,注意(1),无论a文件先读完还是b文件先读完,程序都能作出适应性的判断。注意(2)把a和b合并的结果,写到一个临时文件c中,最后把c的文件覆盖到a文件中,达到题意的要求。#include&stdio.h&main(){ FILE *fp,*fq,* if((fp=fopen("a.txt","r+"))==NULL) { printf("cannot open file a.txt"); exit(0); } if((fq=fopen("b.txt","r"))==NULL) { printf("cannot open file b.txt"); exit(0); } fr=fopen("c.txt","w+"); while(!feof(fp)) { ch=fgetc(fp); fputc(ch,fr); if(!feof(fq)) { ch=fgetc(fq); fputc(ch,fr); } } while(!feof(fq)) { ch=fgetc(fq); fputc(ch,fr); } rewind(fp); rewind(fr); while(!feof(fr)) { ch=fgetc(fr); fputc(ch,fp); } fclose(fp); fclose(fq); fclose(fr); }1.2 四川大学2001年攻读硕士学位研究生入学考试试题 及 答案1.2.1第2001年DDC语言程序设计 题目一、单项选择题(在每小题的四个备选答案中,选出一个正确的答案,并将其号码写在答题纸上。请注意注明题号。每小题1分,共计6分)1、‘\t’表示什么?①字符串常数 ②标识符 ③变量 ④字符常量答案:④2、对宏定义不正确的描述是哪一个?①在进行宏定义时,可以引用已经定义的宏名,可以层层置换//可以引用已经定义了的宏名,可以层层置换②宏名的有效范围包括本文件的任何位置//宏名的有效范围定义命令之后到本源文件结束,可以用#define终止宏定义的作用域③宠定义不是语句,不必在行末加分号//是预处理定义语句④对程序中双引号括起来的字符串,即使与宏名相同,也不进行置换3、若定义static char s[20]=”computer”;则执行语句x = strlen(s);之后,x的值为多少?①20 ②9 ③8 ④19//strlen函数计算char*型字符串的长度的时候,并不包含末尾的\0;4、以下哪一个表达式取值是正确的?①6&5结果为6 ②6&&5结果为7③6||5结果为7 ④6&5结果为05、如定义enum weekday {one, two, thr, fou, fiv};enum weekday working;以下哪个是不正确的枚举变量的使用?①working = ②working =2;③working = (enum weekday)2;④working = (enum weekday) (53);//不能对其赋值6、下列说法中正确的是哪一个?①sizeof (char) 是结果为整型的表达式②sizeof (char) 是一个不合法的表示形式③sizeof (char) 是一种函数调用④sizeof (char) 是结果为实型的表达式二、阅读程序,并回答问题(共12分)1、下列程序的输出是什么?(3分)# include &stdio. h&void main ()xchar * aplha [6] = x“ABC”,“DEF”,“GHI”,“JKL”,“MNO”,“PQR”y;char **p;p =for (i = 0; i&4; i++)printf (“%s”, p[i]);printf (“\n”);y//输出结果ABCDEFGHIJKL刚好是字符串数组里面的前四个元素的内容连接起来2、下列程序为什么无法将用户输入的三个整数按从小到大排序输出?应该如何修改?(6分)# include &stdio.h&void swap (int x, int y)xint t =x =y =yvoid main ()xint a, b,scanf (“%d, %d, %d”, &a, &b, &c);if (a&b) swap (a, b);if (a&c) swap (a, c);if (b&c) swap (b, c);printf (“%d, %d, %d”, a, b, c);y//函数swap采用值传递,虽然将形参x和y交换了,但是并不影响到实参。将值传递改成指针传递就可以了。C函数参数采用值传递方式,虽然swap函数将形式参数x和y的值进行了调换,但是影响不到相应的实在参数。所以在主函数中,通过调用sawp函数调换a和b(或a或c,或b和c)的值是根本达不到目的的。修改:(1)(2分)void swap (int *x, int*y)xint t = *x;*x = *y;*y =y(2)(2分)主函数if(a&b) swap(&a,&b);if(a&c) swap(&a,&c);if(b&c) swap(&b,&c);3、假设系统为基本整型量分配2个字节,为字符型量分配1个字节。下列程序完成的功能是什么?(3分)# include &stdio. h&unionxchar ch [2];void main ()xscanf (“%d”,&m);u.n =printf (“\n%u, %u”,u.ch[0], u.ch[1]);y//该程序的功能,取用户输入的整数值的高字节和低字节,并按照任意整数的低字节和高字节分别输出。三、程序设计题(12分)假设一个文本文件中保存着100个整数,请将这100个整数按从小到大的顺序写到另一个文本文件中去,并且在新文件中每10个整数占一行。源文件名和目标文件名通过命令行参数获取。分数分配:变量定义 2分命令行参数处理 1分文件打开 1分文件读 2分排序 3分文件写 2分文件关闭 1分# include &stdio. h&void main(int argc, char *argv[])xFILE *fin, *Int a [100], i, j,if(argc!=3)xprintf (“ You forgot to enter a filename\n”);yfin = fopen (argv[1], “r”);fout = fopen (argv[2], “w”);for (i = 0; i&100; i++)fscanf (fin, “%d”, &a[i]);for (i = 0; i&99; i++)for (i = 0; i&99-i; i++)if (a[j]&a[j+1])xt = a[j]; a[j] = a[j+1]; a[j+1]=t;yfor (i = 0; i&100; i++)xif (i%10 = 0)fprintf (fout, “%s”, “\n”);fprintf (fout, “%d”, a[i]);yfclose (fin);fclose (fout);y1.3 四川大学2002年攻读硕士学位研究生入学考试试题 及 答案1.3.1 第2002年DDC语言题目C语言程序设计(共30分)一、单项选择题(在每小题的四个备选答案中,选出一个正确答案。每小题1分,共6分)1、如果I为整型变量,f为float型变量,c表达式"a"+I*f的类型为 。A、字符型 B、整型 C、单精度型 D、双精度型//即使是两个float型的数据相加,都化成double型 float型的数据在运算时一律转化成双精度型,提高其运算精度2、关于c表达式5||(a=b+c)==3的值,正确的说法为 。A、值为1 B、值为5 C、值为0 D、仅这一个表达式,不能确定值,必须知道a,b,c的值后才能计算。//等号==的优先级高于||所以先计算(a=b+c)==3但是不论它为真或假,在与5进行或运算时,按照或运算的法则,只要一方为真,表达式的结果为真。3、若整型变量a的值为50,则c表达式a>>2的值为 。A、50 B、25 C、12.5 D、12//每右移一位除以2,且由于a为整型,结果为整型4、若c,c1,c2均为字符型变量,下列语句执行后。c="a";c1=++c;c2=c++;c1,c2的值分别为 。A、c1="b",c2="c" B、c1="a", c2="c" C、c1="b",c2="b" D、c1="a",c2="b"//前加加,先加1后使用值,后加加是先使用其值在加加,所以c加加后的值赋予c1,c1得值b,c2先使用值,再加加,c2得值b5、以下c 语句执行后, int i, s=0;for (i=0;i<10;i++)s+=i;printf ("%d\n", i);输出的内容为 。A、0 B、9 C、10 D、11//i值在循环外定义,所以其值循环结束仍有意义,得值106、以下c语句执行后,char s1[100] =″I like C 1anguage″,s2[100];strcpy(s2, s1);strcat (s1, s2);puts (s2);输出的内容为 。A、I B、I like C language C、I like C language I like C languageD、I like C language I like C language I like C language//连接后的串存在s1里,对s2没有影响二、阅读程序,写出该程序的执行结果。(4分)# include 〈stdio.h〉void main ( ){ char a [3] [10]={"Beijing ","Shanghai", "Chengdu"};char p1, (*p2)[10];p1=a[0];p2=a;printf("%c\n",*(a[1]+1));// a[1]代表是第一行字符串Shanghai,加1后得值第一个字符h的地址,*取出其地址里的值hprintf("%c\n",*(*(a+1)+2));// *(a+i)=a[i] 代表是第一行字符串Shanghai,加2后得值第2个字符a的地址,*取出其地址里的值printf("%c\n",*(p1+1));//p1是一字符指针,加一指向第零行第1个字符e的位置,*取出其地址里的值printf("%c\n",*(*(p2+1)+2));//p2为一指向数组的指针,p2是与数组名等价的指针,它指向2维数组的首行,p2+1指针指向了第一行字串Shanghai,加2后得值第2个字符a的地址,*取出其地址里的值printf("%s\n",*(p1+1)); //打印的从第一个字符开始的第零行余下的字符串eijingprintf("%s\n",*(p2[2]);//p2[2]指的是第二行,打印第二行字符串Chengduprintf("%s\n",*(p2+1)); //p2+1指向的是第一行字符串shanghai三、按要求编写函数。(8分)在一程序中定义了如下结构类型用于处理单向链表:struct linkage { struct linkage *pN};现已经编写出按节点的成员a值从小到大建立初始链表的函数create ( ),如下所示: struct linkage * create (void ){ struct linkage * pHint a[4]={2,1,3,5};pHead=NULL;for (i=0;i<4;i++)pHead=addItem(pHead,a[i]);return pH}在该函数的for循环前,pHead为NULL;在执行整个for循环后,创建的链表如下所示:即在被调函数addItem( )中,需要动态分配内存,生成新节点,将传入的第二参数的值赋给该节点的成员value:并通过第一个参数链表首节点确定适当位置放置该新节点。请完成函数:struct linkage * addItem (struct linkage *pHead, int value );返回值指向单向链表头节点。你可能用到下面的动态内存分配函数。void* malloc (unsigned int size);其作用是在内存的动态存储区中分配一个长度为size的连续空间。返回值为指向分配域起始地址的指针。1、在空链表中加第一个节点2分;2、加到当前链表头节点前2分;3、加到当前链表头节之后适当位置,可分为两步。2分;4、其它部分2分,包括整体结构,变量定义,返回值。struct linkage *addItem (struct linkgae *pHead ,int value){ struct linkage *p ,*q,*r,*s;p=pH if (!p){ r=(struct linkage *) malloc (sizeof (struct linkage)); r>a= r>pNext =NULL; pHead=r;}else if (value <=p>a){ r=(struct linkage *) malloc (sizeof (struct linkage)); r>a= r>pNext =p; pHead=r;else{ q=p>pNwhile (q)if (value<=q>a)else{ p=q;q=p>pN}r=(struct linkage *)malloc (sizeof (struct linkage));r>a=r>pNext=q;p>pNext=r;}return pH}四、程序设计。(12分)单位HTML文件由标签,标题和正文主体等部分组成。如下所示:〈HTML〉〈HEAD〉〈TITLE〉HTML标题部分&/TITLE&〈/HEAD〉&BODY&这里是HTML文件的主体部分。&BR&换新行。&/BODY&〈/HTML〉 符号"&与"&"及其之间的内容是标签,如〈HTML〉,&/TITLE&等。其它部分是标题和主体。请按以下说明和要求完成程序,将简单的HTML文件转换为TXT文件:1. 序将简单HTML文件的有标签和换行符(\n)(去掉。标题部分结束(遇到&/TITLE&标签)后加上一个换行符(\n)。每一个&BR&标签换成一个换行符(\n)。其余部分原样保留。如上面的简单HTML文件处理为(L表示换行):HTML标题部分L这里是HTML文件的主体部分。L换新行。2.简单HTML文件的标签内没有嵌套情况,即在"&和"&"这间不会再出现"&或"&"。3.标签内的内容大小写无关。如&br&,&Br&,&BR&等价。4.示签的"&和"&"与标签内容间无空格。即不会出现&BR &或& BR&等情况。5.标题和正文中不会出现"&和"&"字符,它们通过转义字符实现,这时尤需考虑。6.程序需要处理命令行参数。第一个参数指要处理的HTML文件名,第二个参数指定处理后要存放的文件名。这两个文件都是文本文件。7.程序必须进行必要的出错处理,如无法打开文件等。8.程序不需要包含头文件。1、main()函数形参处理:2分。2、变量定义1分。3、打开关闭文件2分;4、读源文件1分;5、能从标签中找出内容〈BR〉〈/TITLE〉换为"\n"部分2分;6、区分开标签和其它部分,并按要求写入目标文件2分;7、整体结构正确2分;void main (int argc, char *argv[]) { char C,tag[7];int status ,FILE*fin,*if (argc!=3){ printf("参数个数不对!")exit (1)}if ((fin=fopen (argv [1],"r")))==NULL){
printf(“打不开源文件”);exit(1);}if ((fout=fopen (argv [2],"w")))==NULL){
printf("无法写入文件!");fclose (fin);exit (1);}status =0;while ((c=fgetc (fin)))!=EOF) switch (C){case "<":status=1;len=0;case ‘&’:status=0;if(len&=6)tag[len]=0;if(!strcmp(tag,”/title”)||!strcmp(tag,”br”)) fputc(‘\n’,fout);case "\n":default:if (! status)fputc (c,fout);else{ len++;if (len<=6);tag[len1]=c;}}fclose (fin);fclose (fout);}1.4 四川大学2003年攻读硕士学位研究生入学考试试题及 答案1.4.1 第2003年DDC语言题目C语言程序设计(40分)一、分析下面的 程序,写出程序执行结果。(每小题4分,共2分)1、#include 〈stdio.h〉void swap (int **p1,int **p2){ int *t; t=*p1;p1=p2;*p2=t;}void main( ){ int a=1、b=3、*p=&a、*q=&b;swap(&p、&q);printf("%d、5d、%d、%d\n"、a、b、*p、*q;}//因为在swap函数里交换的是两个参数的地址,所以参数使用的是两级指针,表示交换的是指针的地址,最终使p指向了b,q指向了a。1,3,3,12.# include &stdio.h&void merge (char *d、char sl、char、S2){ while (*sl!="\0" && *S2!="\0")if (*sl&*s2)d++=*sl++;elsed++=*s2++;while (*sl!="\0) *d++=sl++;while (*s2!="\0") *d++=s2++;*d="\0",}void main( ){ char sl="acdgh",s2="bcfhi",s3[20];merge(s3,s1,s2);puts(s3)}//将两个字符串合为一个按照字母顺序排列的串abccdfghhi二、按要求完成C函数。(每小题10分,共20分)1.int maxsameChar(char *s);该函数计算字符串 s中最大连续相同的字符个数。例如,若s 为"aaabbbb",则返回值为4;若s为"abcde",则返回值为1。int maxSameChar (char *s) { int temp=1, max=0;char c="\0";while (*s){ if (c==*s)tmpe++;else{ c=*s;temp=1;}if (max<temp)max=s++;}}2. struct mode *reverse(struct mode *pHead);其中,struct node 定义如下:struct node { struct node *pN};此函数传入的pHead指向要处理的单向链表头,该链表以NULL指针结束。函数实现链表链接方向(包括pHead 指向的原头节点)的反转,如图1所示。并将新链表头指针作为函数值返回。在完成此函数时,你只能利用原有链表节点,不能申请新节点空间。struct node* reverse (struct node* pHead){ struct nodt *p,*q,*t;if (pHead==NULL) return NULL;p=pHq=p>pNwhile (q! NULL){ t =q>pNq>pNext=p;p=q;q=t;}pHead>pNext=NULL;pHead=p;return pH}三、按要求完成简单的客车车次查询程序。(12分)某车站需要一个简单的客车车次查询程序。说明如下:1. 客车车次数据文件checi.txt放在c:\data目录下,格式为:T8 成都 北京西 09:301364 成都 北京西 14:20K118 攀枝花 北京西 22:00… … …其中每行为一次车的信息,分为4个数据项:车次,始发站,终点站和离开本站时间。前三个数据项留的宽度为8字符,最后一项结束后即换行。数据项间一定有空格隔开,每一数据项内无空格。2.你的程序对用户通过命令行参数指一的车次,在客车车次数据文件中查找相应车次信息并输出该次车的始发站,终点站和离开本站时间,如果未找到,则输出“找不到该次车信息!”。3.你的程序可以使用标准的C库函数,可以不引用文件。程序中应给出必要的注释。int main (int argc, char *argv [ ]){ char info [4] [20];FILE *int I,found=0;if (argc!=2){ printf("参数个数不正确!\n");return 1;}fp=fopen ("c:\\checi. txt ","r");if (fp==NULL){ printf ("无法打开数据文件!\n");return 1;}while (! feof (fp)){ for (I=0;i<4; i++) fscanf (fp,"%s",info[i]);if (!stricmp (info[0],argv[1])){ found=1;printf("始发站:%s\n",info [1]);printf("始发站:%s\n",info [2]);printf("离本站时间:%s\n",info [3]);}}if (! found )printf("找不到该次车信息!\n");return 0;}1.5 四川大学2004年攻读硕士学位研究生入学考试试题及 答案1.5.1 第2004年DDC语言题目C语言程序设计(40分)一、写出下列表达运算后a的值,设a,b 均为 int ,每个表达式运算到a=2,b=3。(5分)(1) a+=b*5//a=a+b*5,为17(2) a=b++//a=3(3) a%=(a%=b)//结果为0(4) a=a>b&&b>a||a//>的优先级高于&&和||原式理解为(a>b)&&(b>a)||a&&运算符高于||,原式理解为((a>b)&&(b>a))||a,因为a值为2,结果为1真。或运算是有一为1(5) a=!b<a&&!a<b//!的运算符最高,<其次,&&最小原式理解为((!b)<a)&&((!a)<b))结果为1二、下面的程序构造一个有向图,请画出其示意图。(10分)include 〈stdio.h〉struct node /*有向图的节点类型*/{struct node *left,*right,*up,*};int main (int argc ,char * argv []) {struct node nodes[5];for( i=0;i<5;i++){ nodes [i].key=i;nodes [i].left=NULL;nodes [i].right=NULL;nodes [i].up=NULL;nodes [i].down=NULL;}nodes [0].left=nodes+1;nodes [1].left=nodes [1].up=nodes+2;nodes [2].down=nodes+3;nodes [3].right=nodes+4;nodes [4].up=nodes [4].down=nodes+1;return 0;}三、按要求完成函数。(10分)int sameChar sAT SamePos (char *s1,char *s2);两个字符串的字符进行同位置比较,返回相同的字符数(串结束符‘\0’不比较)。例如,若s1="abc",s2="Abc",则返回值为2。int sameCharAtSame Pos (char *s1,char *s2){int counter =0;while (*sl && *s2){if (*s1 == *s2)counter ++;s1++;s2++;}}四、按要求编写程序对一种特殊字符串解码。(15分)要处理的特殊字符串由A,C,G,U四个字符组成,如下所示:ACUGCCCAUGAAAAACUUUUGACAC其有效信息子串从第一次出现“AUG”后开始,遇到“UGA”结束(不包括“AUG”和“UGA”。)如上面的编码串需解码的有效子串为:AAAAACUUU有效子串中每3个字符(如“AAA”,“CGA”)作为一个密码子(可以保证,有效子串的长度一定为3的整数倍。)可能的密码子(62种)及相应码值以如下形式放在编码文件code.txt中(按密码子字典序排列);AAA KAAC N…………UUU F请编写C程序对存放在文件中的特殊字符串解码,在屏幕输出解码串。如:KNFKNE要求:1、编码文件code.txt放在c盘根目录下;2、要解码的特殊字符串以文件形式存放,其串长不超过1024字符;3、你编写的程序应能处理命令参数,指定要解码的字符串文件;4、程序中可以使用C语言的标准库函数,不需要写出头文件;5、程序中应有必有的注释。#include 〈stdio.h〉#include 〈string.h〉struct {char name[4];} table [62];int main (int argc,char *argv [ ]){FILE *code? file=NULL, *string file =NULL;char string [1024+2],buffer[4],*p,*int I;/* 检查命令行参数*/if (argc<=1)}/*打开编码文件以及待解码文件*/code? file=fopen ("c:\\code. txt","r");string file =fopen (argv[1],"r");if (code_file= = NULL | | string_file = =NULL) return 1;/* 读编码文件,将结果记入表中 */for (i=0; i&62; i++){ fscanf(code_file, "%s %c\n", tabie[i], name, &table[i].code);}/*读待解码文件内容到string中 */fgets (string, sizeof (string), string_file);/* 扫描有效子串头 */p= strstr(string, "AUG");end = strstr (p + 3 , "UGA");/*读有效子串,查表输出解码字符,直到子串尾 */for (p+=3; p& P+=3){ for (i=0; i&3; i++){ buffer [i] = p [i];}buffer [i] ="\0";for (i=0; i&62; i++){ if (strcmp (buffer, table [i].name)) = = 0) { printf("%c", table[i]. code); }}}/* 关闭编码文件以及待解码文件 */fclose (code_file);fclose (string_file);return 0;}1.6 四川大学2011年攻读硕士学位研究生入学考试试题及 答案1.6.1 第2011年DDC语言题目C语言程序设计(50分)一、 读程序,写执行结果(8分)1、#include&stdio.h&int main( ){ int a=4,b=3,c=1,x;x=a&b;printf(“%d\n”,x);//结果为1x=a+b++;printf(”%d\n”,x);//结果为6x=a&b;printf(”%d\n”,x);//结果为假,0x=c&&b==c;printf(”%d\n”,x);//==的运算级高于&&, c&&(b==c)结果为假0return0;}2.#include&stdio.h&int main( ){ inti,j;for(I=0;I=8;I+=2){ for(j=0;j&(8I)/2;j++ printf(”+”); for(j=0;j&=I;j++) printf(”*”); printf(\n”);}return0;}++++*+++***++*****+*******二.按要求完成函数。(28分)1. 一种最简单的字符串加密方法是将字符串的每一字符加上一个偏移量offset(不考虑溢出)。请编写木相应的编解码函数,其原型分别为:char*encode(char*s,int offset);char *decode(char *s,offset);char *encode(char *s,int offset){ char *p=s;while (*p) { *p += } }char *decode(char *sm int iffset) { char *p= while(*p) { *p= } }2编写函数将两个节点值递增的单向链表归并为一个。要求利用原节点空间。链表节点定义为:struct node{ struct node *pN};函数原型为:struct node *merge(struct node *a, struct node *b); 其中a,b为要归并的两个单向链表头节点指针,函数返回值为归并后的单向链表头节点指针。struct node{ int value struct node *pN } struct node *merge(struct node *a, struct node *b){ struct node *p; struct node *q struct node *t; if (a&value &=b&vaLue) { p=a; q=b } else { p=b q=a; } t=p;
while (q) { if (p&pNext ==NULL) { P&Pnext=q } if (q&value&p&pNext&value) { struct node.*k=q&pN q&pNxt=p&pN p&pNext=q; q=k; } p=p&pN}}三.编写程序模拟数字LED显示。(14分)编写程序完成如下功能:用户键盘输入最多四位的整数,在屏幕上以类似LED方式显示。如用户输入为:8234则输出其中每个数字字模均为7行×4列。09+个数字的字模顺序地以文本形式存放在方件C:\font.txt中。要求:1、 输出的各数字间有1个空格;2、 你的程序可以使用C语言标准库函数,不需要写出头文件;3、 程序中应有必有的注释。char font[10][7][5];9495 int digit[4];96 int length=0;9798/ * 装载字体文件 */99 void load fontsO100 {101 int I, j,102 FILE *103104 file = fopen(”c:\\font”,”r”);105 if (file==NULL)106 {107 printf(” 打开字体文件 font. Txt 错误|n”);108 exit(1);109 }110111 for (k = 0; k&10;k++)112 {113 for (I=0; I&7; I++)114 {115 char line[10];116 fgets(line, 5, file);117 for (j=0; j&4;j++)118 {119 font[k][I][j]=line[j];120 }121 font[k][I][4]=0;122 }123 }124125 fclose(file);126 }127128/* 将输入的整数解码为单个的数字*/129 void decode()130 {131 int I;132 int m=n;133 for (I=0; I &4;I++)134 {135 digit[I]=m % 10;136 m =m/10;137138 if (m==0)139140 }141142 length = I + 1;143 if (length &=4)144 length=4;145 }146147 /* 显示LED */148 void disnlav()149 {150 int I,j;151 for (I=0; I&7;I++)152 {153 for (j = lengthI; j&=0;j__)154 {155 printf(”%s”, font[j][I]);156 printf(” ”);157 }158 printf(” \n”);159 }160 }161162 int main()163 {164165 load fonts();166167 scanf(”%d”, &n);168 decode();169 display();170 }C语言试题及答案的延伸阅读――c语言学习体会记得上次开班会的时候我吹牛说要和你们一起学习c语言,不知不觉已经快半个月拉。我得对自己的话负责。今天我把借来的教材看了看,以前真的是不了解,今天才知道它是贝尔实验室的设计师Dennis在1972年设计的。c语言是其他计算机语言的基础,其他的计算机语言都是在它的基础上研发。所以学好c语言对于以后要在自动化专业有所发展的同学是非常有好处的,尤其是将来的plc编程、电子产品设计等等,都需要用到c语言。今天我学习了一个最最简单的程序,感觉十分有收获,明白了它的最基本的道理――它也是一门语言,和我们的汉语是一样的,它也有自己的语法、逻辑结构,只要是能真正的去理解它,还是很容易学会的。今天学习的程序如下:#include#includemain(){double x,s;printf("input number:\n");scanf("%lf",&x);s=sin(x);printf("sine of %lf is %lf\n",x,s);}这个的功能&&&& C语言试题及答案之外的更多信息,请访问: 《工大全》
分页: 【1】【2】【3】【4】【5】【6】下一页0&
篇二:C语言考试题库及答案
C语言理论上机考试选择题部分(共200题,仅针对11级定向专业)
1、下面程序的输出是___D______
#include&stdio.h& void main() { int k=11;
printf(&k=%d,k=%o,k=%x\n&,k,k,k); } A) k=11,k=12,k=11
B) k=11,k=13,k=13 C) k=11,k=013,k=0xb
D) k=11,k=13,k=b
2、在下列选项中,不正确的赋值语句是__D______.
B) n1=(n2=(n3=0));
D) a=b+c=1;
3、下面合法的C语言字符常量是______A____. A) '\t'
4、表达式: 10!=9的值是________D____.
5、C语言提供的合法的数据类型关键字是
_____B____. A) Double
C) integer
6、字符(char)型数据在微机内存中的存储形式是__D__. A) 反码
C) EBCDIC码
D) ASCII码
7、C语言程序的基本是_____C______. A) 程序行
8、设 int a=12,则执行完语句a+=a-=a*a后,a的值是
____D____ A) 552
9、执行下面程序中的输出语句后,输出结果是
____B__. #include&stdio.h& void main() {
printf(&%d\n&,(a=3*5,a*4,a+5)); } A) 65
10、下面程序的输出是____B______.
#include&stdio.h& void main() {int x=023;
printf(&%d\n&,--x); } A) 17
D) 24 11、下面程序的输出的是_____C____. #include&stdio.h& void main() {int x=10,y=3;
printf(&%d\n&,y=x/y);
D) 不确定的值
12、已知字母A的ASCII码为十进制的65,下面程序的输出是______A_____. #include&stdio.h& void main()
{char ch1,ch2;
ch1='A'+'5'-'3';
ch2='A'+'6'-'3';
printf(&%d,%c\n&,ch1,ch2); } A) 67,D
D) 不确定的值
13、若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为____D__.
14、以下程序的输出结果是____D_____.
#include&stdio.h& void main()
{ int x=10,y=10;
printf(&%d %d\n&,x--,--y); } A) 10 10
15、设有如下定义:
int x=10,y=3,z; 则语句
printf(&%d\n&,z=(x%y,x/y)); 的输出结果是_____D_____. A) 1
16、为表示关系x≥y≥z,应使用C语言表达式
___A___. A) (x&=y)&&(y&=z)
B) (x&=y)AND(y&=z) C) (x&=y&=z)
D) (x&=y) & (y&=z)
17、C语言中非空的基本数据类型包括____B____. A) 整型,实型,逻辑型
B) 整型,实型,字符型 C) 整型,字符型,逻辑型
D) 整型,实型,逻辑型,字符型 18、若x和y都是int型变量,x=100,y=200,且有下面的程序片段:
printf(&%d&,(x,y));
上面程序片段的输出结果是____A___. A) 200
C) 100 200
D) 输出格式符不够,输出不确定的值
19、阅读下面的程序
#include&stdio.h& void main() {
scanf(&%3c&,&ch); printf(&%c&,ch); }
如果从键盘上输入
则程序的运行结果是__A_____.
D) 程序语法出错
20、阅读下面的程序
#include&stdio.h& void main() {
printf(&%d,%d&,i-j,i+j);
则程序的运行结果是____D____.
21、阅读下面的程序
#include&stdio.h& void main()
int i,j,m,n;
printf(&%d,%d,%d,%d&,i,j,m,n); }
程序的运行结果是______C____. A) 8,10,8,10
B) 9,11,8,10
C) 9,11,9,10
D) 9,10,9,11
22、已知a=12,则表达式a+=a-=a*=a的结果是_____A__.
D) -264 23、若已定义int a,则表达式a=10,a+10,a++的值是__B_.
24、阅读下面的程序
#include&stdio.h& void main() {
scanf(&%3d%2d&,&i,&j);
printf(&i=%d,j=%d\n&,i,j); }
如果从键盘上输入1234567&回车&,则程序的运行结果是____D____.
A) i=123,j=4567
B) i=1234,j=567
C) i=1,j=2
D) i=123,j=45
25、下面程序的输出结果是____D____.
#include&stdio.h& void
int a=-1, b=4,
k=(++a&=0)&&(b--&=0);
printf(&%d,%d,%d\n&,k,a,b); }
26、下面程序的输出结果是____A____.
#include&stdio.h& void main() {
int a=5,b=3;
float x=3.14, y=6.5;
printf(&%d,%d\n&,a+b!=a-b,x&=(y-=6.1)); }
27、执行下面程序段后,输出结果是____A____.
int b=65536;
printf(&%d\n&,a);
28、若有以下定义和语句:
int a=010, b=0x10, c=10;
printf(&%d,%d,%d\n&,a,b,c); 则输出结果是____B_____.
A) 10,10,10
B) 8,16,10
C) 8,10,10
D) 8,8,10 29、已知有double型变量x=2.5,y=4.7,整型变量a=7, 则表达式 x+a%3*(int)(x+y)%2/4 的值是_____B____. A) 2.4
30、若已定义x和y是整型变量,x=2;,则表达式y=2.75+x/2的值是____C____.
31、以下程序的输出结果是____D____.
#include&stdio.h& void
int a=12, b=12;
printf(&%d,%d\n&,--a,++b); }
32、设有以下语句:int x=10;x+=3+x%(3),则x的值是.____A_____
33、若d为double型变量,则表达式d=1,d+5,d++的值是_____D__.
34、表达式5!=3的值是____D____.
35、若有定义int a=12,n=5,则表达式a%=(n%2)运算后,a的值______A____.
36、若有定义int x=3,y=2和float a=2.5,b=3.5,则表达式:(x+y)%2+(int)a/(int)b的值是__D__.
37、在C语言中,以下叙述不正确的是_____A____. A) 在C程序中,无论是整数还是实数,都能被准确无误的表示
B) 在C程序中,变量名代表存储器中的一个位置 C) 静态变量的生存期与整个程序的生存期相同 D) C语言中变量必须先定义后引用
38、C语言中的变量名只能由字母,数字和下划线三种字符组成,且第一个字符____C____. A) 必须为字母
B) 必须为下划线
C) 必须为字母或下划线
D) 可以是字母,数字或下划线中的任意一种 39、设有说明: 则表达式: w*x+z-y值的数据类型是___D____.
40、一个C语言的执行是从_____A______.
A) 本程序的主函数开始,到本程序的主函数结束
B) 本程序的第一个函数开始,到本程序的最后一个函数结束
C) 本程序的主函数开始,到本程序的最后一个函数结束
D) 本程序的第一个函数开始,到本程序的主函数结束
41、设a为整型变量,不能正确表达数学关系10&a&15的C语言表达式是____A____.
A) 10&a&15
B) a==11||a==12||a==13||a==14 C) a&10&&a&15
D) !(a&=10)&&!(a&=15)
42、下列程序执行后的输出结果是_____C____.
#include &stdio.h&
void main( )
{ int a=5,b=60,c;
{c=a*b;printf(&%d*%d=%d\n&,b,a,c);}
{c=b/a;printf(&%d/%d=%d\n&,b,a,c);}
A) 60/5=12
C) 60*5=300
43、如果c为字符型变量,判断c是否为空格不能使用____A____.(假设已知空格ASCII码为32) A) if(c=='32')
B) if(c==32) C) if(c=='\40')
D) if(c=='
44、运行下面程序时,若从键盘输入&3,5&CR&&,则程序的输出结果是____D____.
#include &stdio.h&
void main( )
scanf(&%d,%d&,&x,&y);
printf(&x==y&);
else if (x&y)
printf(&x&y&);
printf(&x&y&);
D) x&y 45、运行下面程序时,若从键盘输入数据为&6,5,7&CR&&,则输出结果是____C___.
#include &stdio.h&
void main( )
{ int a,b,c;
scanf(&%d,%d,%d&,&a,&b,&c);
printf(&%d\n&,a);
printf(&%d\n&,c);
printf(&%d\n&,b);
printf(&%d\n&,c);
46、执行下面程序时,若从键盘输入&2&CR&&,则程序的运行结果是____A____.
#include &stdio.h&
void main( )
cp=getchar( );
if (cp&='0' && cp&='9')
k=cp-'0';
else if (cp&='a' && cp&='f')
k=cp-'a'+10;
k=cp-'A'+10;
printf(&%d\n&,k);
47、运行下面程序时,从键盘输入&2.0&CR&&,则输出结果是___B_____.
#include &stdio.h&
void main( )
{ float a,b;
scanf(&%f&,&a);
if (a&0.0) b=0.0;
else if ((a&0.5) && (a!=2.0))
b=1.0/(a+2.0);
else if (a&10.0) b=1.0/2;
else b=10.0;
printf(&%f\n&,b);
A) 0.000000
B) 0.500000
C) 1.000000
D) 0.250000
48、执行下面程序后,运行结果是____A____.
#include &stdio.h&
void main( )
{ int x=41,y=1;
if (x%3==0 && x%7==0)
{ y+=x;printf(&y=%d\n&,y);}
{y=x;printf(&y=%d&,y);}
49、运行下面程序时,从键盘输入&12,34,9&CR&&,则输出结果是___A___.
#include &stdio.h&
void main( )
{ int x,y,z;
scanf(&%d,%d,%d&,&x,&y,&z);
if (y&z)printf(&%d\n&,z);
else printf(&%d\n&,y);
else if (x&z)printf(&%d\n&,z);
else printf(&%d\n&,x);
D) 不确定的值
50、运行下面程序时,从键盘输入字母H,则输出结果是_____C___.
#include &stdio.h&
void main( )
ch=getchar( );
switch(ch)
{ case 'H':printf(&Hello!\n&);
case 'G':printf(&Good morning!\n&);
default:printf(&Bye_Bye!\n&);
Good Morning! C) Hello!
Good morning!
51、执行下列程序段后的输出结果是_____A____.
int x=1,y=1,z=1;
printf(&%d\n&,x&y?y:x);
D) 4 52、设ch是char型变量,值为'A',则表达式ch=(ch&='A' && ch&='Z')?ch+32:ch的值是__B___.
53、下面程序的输出结果是____C____.
#include &stdio.h&
void main( )
{ int x=8,y=-7,z=9;
if (y&0) z=0;
else z-=1;
printf(&%d\n&,z);
54、运行下面程序时,若从键盘输入&5 &CR&&,则程序的输出结果是_____B___. #include &stdio.h&
void main( )
scanf(&%d&,&a);
if (a++&5)printf(&%d\n&,a);
else printf(&%d\n&,a--) ;
55、运行下面程序时,若从键盘输入&3,4 &CR&&,则程序的输出结果是____B___.
#include &stdio.h&
void main( )
{ int a,b,s;
scanf(&%d,%d&,&a,&b);
if (s&b) s=b;
printf(&%d\n&,s) ;
56、下列程序的执行结果是_____D____.
#include &stdio.h&
void main( )
{ int x=0,y=1,z=0;
if (x=z=y)
printf(&%d,%d\n&,x,z);
D) 3,1 57、假定等级和分数有以下对应关系:
分数:85~100
分数:60~84
分数:60 以下
对于等级grade输出相应的分数区间,能够完成该功能的程序段是____D____. A) switch (grade)
case 'A':printf(&85--100\n&);
case 'B':printf(&60--84\n&);
case 'C':printf(&60以下\n&);
default:printf(&等级错误!\n&);
switch (grade)
case 'A':printf(&85--100\n&);
case 'B':printf(&60--84\n&);
case 'C':printf(&60以下\n&);
default:printf(& 等级错误!\n&);
switch (grade)
case 'A':printf(&85--100\n&);
case 'B':printf(&60--84\n&);
case 'C':printf(&60以下\n&);
default:printf(&等级错误!\n&);
D) switch (grade)
case 'A':printf(&85--100\n&);
case 'B':printf(&60--84\n&);
case 'C':printf(&60以下 \n&);
default:printf(&等级错误!\n&);
58、能够完成如下函数计算的程序段是__B____.
B) if (x&=0)
篇三:C语言考试题及答案
C语言考试题
一、单项选择题 (每题2分,共40分)
1、一个算法应该具有“确定性”等五个特性,下面对另外4个特性的描述中错误的是(B)
A、有零个或多个输入
B、有零个或多个输出
2、C语言中最简单的数据类型包括(B)
A、整型、实型、逻辑型
B、整型、实型、字符型
C、整型、字符型、逻辑型
D、整型、实型、逻辑型、字符型
3、设a和b均为double型变量,且a=5.5、b=2.5,则表达式(int)a+b/b的值是(D)
A、 6.500000
C、 5.500000
D、 6.000000
4、x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,正确的输入语句是 (B)
A、 INPUT x、y、z;
B、 scanf(&%d%d%d&,&x,&y,&z);
C、 scanf(&%d%d%d&,x,y,z);
D、 read(&%d%d%d&,&x,&y,&z);
x=1, y=1; 表达式(!x||y--)的值是(B)。
6、对两个字符数组a和b进行初始化char a[]=&ABCDEF&;char b[ ]={'A','B','C','D','E','F'}; 则以下叙述正确的是(D)。
A、a与b数组完全相同
B、a与b长度相同
C、a和b中都存放字符串
D、a数组比b数组长度长
7、为了避免在嵌套的条件语句ifDDelse中产生二义性,c语言规定:else子句总是与(B)配对。
A、缩排位置相同的if
B、其之前最近的if
C、其之后最近的if
D、同一行上的if
8、下面不正确的字符串常量是(A)
A、 'abc'
B、 &12'12&
9、以下错误的if语句是(C)。
A、 if(x&y) z=x;
B、 if(x= =y) z=0;
C、 if(x!=y) printf(&%d&,x) else printf(&%d&,y);
D、 if(x&y) { x++;y--;}
10、若有说明:int
a[3][4];则对a数组元素的非法引用是( D)。
A、a[0][2*1]
B、a[1][3]
C、a[4-2][0]
D、a[0][4]
11、程序char c[5]={‘a’,’b’,’\0’,’c’c,’\0’}; printf(“%s”,c);}的运行结果是( D)。
A、'a''b'
12、一个C程序的执行是从( A)。
A、本程序的main函数开始,到main函数结束
B、本程序文件的第一个函数开始,到本程序文件的最后一个函数结束
C、本程序的main函数开始,到本程序文件的最后一个函数结束
D、本程序文件的第一个函数开始,到本程序main函数结束
13、若变量已正确定义,以下非法的表达式是(B)
B、a%(4.0)
C、a=1/2*(x=y=20,x*3)
14、判断字符串a是否大于b,应当使用( D)。
A、if (a&b)
B、if (strcmp(a,b))
C、if (strcmp(b,a)&0)
D、if (strcmp(a,b)&0)
15、以下关于运算符优先顺序的描述中正确的是(C)。
A、关系运算符&算术运算符&赋值运算符&逻辑与运算符
B、逻辑与运算符&关系运算符&算术运算符&赋值运算符
C、赋值运算符&逻辑与运算符&关系运算符&算术运算符
D、算术运算符&关系运算符&赋值运算符&逻辑与运算符
16、使用语句scanf(“a=%f,b=%d”,&a,&b);输入数据时,正确的数据输入是:(A)
A、a=2.2,b=3
B、a=2.2 b=3
17、表示关系12&=x&=y的C语言表达式为:(B)
A、(12&=x)&(x&=y)
B、(12&=x)&&(x&=y)
C、(12&=x)|(x&=y)
D、(12&=x)||(x&=y)
18、语句for(a=0,b=0;b!=100&&a&5;a++)scanf(“%d”,&b); scanf最多可执行次数为:(C)
19、设有如下定义:struct jan{}c2,*p;若有p=&c2;则对c2中的成员a的正确引用是:(B)
A、(*p).c2.a
C、p-&c2.a
20、下列程序的输出结果是(C)。
{ int a=7,b=5;
printf(&%d\n&,b=b/a);
D、不确定值
二、填空题 (每题2分,共30分)
1、一个C源程序中至少应包含一个
2、a是整型变量,则执行表达式a=25/3%3后a的值为。
3、C语言中的数组必须先
,然后使用。
4、如果需要从被调用函数返回一个函数值,被调用函数必须包含
5、下面程序的运行结果是 。
#include&stdio.h&
{ int i,x,y;
if(i%2!=0)
{x=x+i;i++;}
} while (i&=7);
printf(&x=%d,y=%d\n&,x,y);
运行结果是:
6、引用C语言标准库函数,一般要用
预处理命令将其头文件包含进来。
7、在C语言程序中,符号常量的定义要使用
预处理命令。
8、逻辑运算符!是
9、在一个C源程序中,注释部分二侧的分界符为 。
10、C语言标识符由
字母、数字和下划线
11、若int x=5;while(x&0)printf(“%d”,x--);的循环执行次数为
12、若有说明和语句:int a=5,b=6,y=6;b-=a;y=a++则b和y的值分别是
13、C程序设计的三种基本结构是顺序结构、选择结构、循环结构。
14、数组是表示类型相同的数据,而结构体则是若干
数据项的集合。
15、设x,y,z均为int型变量,请写出描述“x或y中有一个小于z”的表达式 。x&z||y&z
三、判断题 (每题1分 共10分)
1、C语言程序总是从main()函数开始执行。(
2、执行程序段int a=-1,b=4,k;k=(++a&0)&&!(b--&=0);printf(“%d %d %d\n”,k,a,b);后的输出结果是004。( T
3、C语言程序由函数组成,它的主函数必须在其它函数之前,函数内可以嵌套定义函数。( F )
4、用C语言实现的算法可以没有输出但必须要有输入。( F
5、C语言本身有输入输出语句。( F
6、若有int a[3][5]={2,2},{2,6},{2,6,2}},则数组a共有7个元素。( F )
7、int a=24; printf(&%o &, a );输出结果是30。(
8、C语言允许函数值类型缺省定义,此时该函数值隐含的类型是整形。( T )
9、在C语言中,字符串常量是用双引号括起来的一串字符。( T )
10、若有int a[5],*p=a;则p+2表示第2个元素的地址。( F )
四、编程题 (每题5分,共20分)
1、计算并输出200-400之间不能被3整除的整数的和
#include&stdio.h&
void main()
int i,sum=0;
for(i=200;i&=400;i++)
if(i%3!=0)
sum=sum+i;
printf(&%d\n&,sum);
2、输入5个数,求和并输出。要求编写求和的函数。
#include&stdio.h&
void main()
int b(int x[],int n); int sum=0; int a[5]={1,2,3,4,5}; sum=b(a,5);
printf(&sum=%d\n&,sum);
int b(int x[],int n)
int i,sum=0; for(i=0;i&5;i++) sum=sum+x[i];
3、输入3个4门课的成绩{(60,70,65,75),(75,80,75,90),(95,75,90,65)},计算每个
学生的总分和平均成绩并输出,结果保留一位小数
#include&stdio.h&
void main()
int a[3][4]={{60,70,65,75},{75,80,75,90},{95,75,90,65}};
float average,sum=0.0;
printf(&三个学生的总分和平均成绩依次为:\n&);
for(i=0;i&3;i++) {
} for(j=0;j&4;j++) sum=sum+a[i][j]; average=sum/4; printf(&%.2f,%.2f\n&,sum,average);
4、起泡法(选择法)对十个数排序
#include&stdio.h&
void main()
} int i,j,t; int a[10]; printf(&请输入10个数:\n&); for(i=0;i&10;i++)
scanf(&%d&,&a[i]); for(j=0;j&9;j++)
for(i=0;i&9-j;i++)
if(a[i]&a[i+1]) {
a[i]=a[i+1]; a[i+1]=t; } for(i=0;i&10;i++)
printf(&%d &,a[i]); printf(&\n&);
相关热词搜索:

我要回帖

更多关于 vb两个窗体传递数值 的文章

 

随机推荐